OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
2
3         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
4         feature check.
5         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6         * configure, config.in: Regenerate.
7         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
8         DW_EH_PE_absptr.
9         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
10         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
11         for global data if the output could be used in a shared library.
12         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
13         to 0 if TARGET_WRITABLE_EH_FRAME.
14
15 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
16
17         PR/39886
18         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
19         just when insn is equal to BB_END (bb).
20
21 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
22
23         * config/mips/mips.opt (mrelax-pic-calls): New option.
24         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
25         the file.
26         (mips_unspec_call): Change "unspec_call" expander into this.
27         (mips_strip_unspec_call): New function.
28         (mips_got_load): Call mips_unspec_call instead of
29         gen_unspec_call<mode>.
30         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
31         MIPS_CALL.
32         (mips_cfg_in_reorg): New function.
33         (mips16_lay_out_constants): Use it to decide whether to call
34         CFG-aware insn splitting.
35         (r10k_insert_cache_barriers): Move CFG set-up code from here to
36         mips_reorg.  Move DF set-up code from here ...
37         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
38         from here.
39         (mips_reorg): Call mips_df_reorg instead of
40         r10k_insert_cache_barriers.  Move CFG set-up code here from
41         r10k_insert_cache_barriers.
42         (mips_call_expr_from_insn): New function.
43         (mips_pic_call_symbol_from_set): Likewise.
44         (mips_find_pic_call_symbol): Likewise.
45         (mips_annotate_pic_call_expr): Likewise.
46         (mips_get_pic_call_symbol): Likewise.
47         (mips_annotate_pic_calls): Likewise.
48         (mips_override_options): Disable -mrelax-pic-calls unless PIC
49         calls are used.
50         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
51         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
52         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
53         directive.
54         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
55         (unspec_call<mode>): Remove it.
56         (sibcall_internal, sibcall_value_internal,
57         sibcall_value_multiple_internal, call_internal, call_split,
58         call_value_internal, call_value_split,
59         call_value_multiple_internal, call_value_multiple_split): Pass
60         SIZE_OPNO to MIPS_CALL.
61         (call_internal_direct, call_direct_split,
62         call_value_internal_direct, call_value_direct_split): Pass -1 as
63         SIZE_OPNO to MIPS_CALL.
64         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
65         * configure: Regenerate.
66         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
67         and -mno-relax-pic-calls.
68         (MIPS Options): Document -mrelax-pic-calls
69         and -mno-relax-pic-calls.
70
71 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
72
73         PR bootstrap/35619
74         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
75         in the directory this rule is called from, rather than the
76         toplevel 'gcc' directory, to fix in-tree build.
77
78 2009-09-19  Chris Demetriou  <cgd@google.com>
79
80         PR preprocessor/28435:
81         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
82         to cpplib that the preprocessor output is needed.
83
84 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
85
86         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
87         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
88         *return_and_restore_fpregs_<mode>,
89         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
90
91         PR bootstrap/41397
92         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
93         instead of assuming it has always a REG inside of it.
94
95 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
96
97         * config/freebsd.h: Update comment on types.
98         (WINT_TYPE): Define.
99
100 2009-09-18  Jason Merrill  <jason@redhat.com>
101
102         * c.opt: Add -fno-deduce-init-list.
103
104 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
105
106         * value-prof.c (interesting_stringop_to_profile_p): Added output
107         argument to indicate which parameter is the size parameter.
108         * value-prof.c (gimple_stringop_fixed_value): Use
109         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
110         * value-prof.c (gimple_stringops_transform): Update call sites to
111         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
112         * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
113
114 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
115
116         PR target/38288
117         From David Binderman <dcb314@hotmail.com>:
118         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
119         local variable f.  Remove stale comments.
120         (ix86_compute_frame_layout): Remove useless local variable total_size.
121         Remove #if 0'd code.
122         (legitimate_address_p): Remove useless local variables
123         reason_rtx and reason.
124         (ix86_split_copysign_const): Remove useless local variable op1.
125         (scale_counter): Remove useless local variable piece_size_mask.
126
127 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
128
129         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
130         output decl.
131
132 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
133
134         PR target/40913
135         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
136
137 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
138
139         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
140         TYPE_STUB_DECL.
141
142 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
143
144         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
145         DW_OP_implicit_value even without dwarf_version 4.
146
147 2009-09-17  Jan Hubicka  <jh@suse.cz>
148
149         * dwarf2out.c: Include tree-pass.h and gimple.h.
150         (loc_list_plus_const): New function.
151         (loc_descriptor_from_tree_1): Rename to ...
152         (loc_descriptor_from_tree): ... remove original.
153         (loc_list_from_tree): New function.
154         (add_AT_location_description): Accept location list.
155         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
156         (concatn_mem_loc_descriptor): Remove.
157         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
158         returning NULL.
159         (secname_for_decl): Move up.
160         (hidden_reference_p): New function; break out from ...
161         (loc_by_refernece): ... here; move up.
162         (dw_loc_list): New function.
163         (single_element_loc_list): New function.
164         (single_element_loc_list_p): New function.
165         (add_loc_descr_to_each): New function.
166         (add_loc_list): New function.
167         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
168         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
169         add diagnostics why expansion failed.
170         (add_location_or_const_value_attribute): Support location lists.
171         (add_bound_info): Likewise.
172         (descr_info_loc): Update call of loc_descriptor_from_tree.
173         (gen_variable_die): Work on location lists.
174         * final.c (pass_final): Add dump file.
175         * Makefile.in (dwarf2out.o): Add new dependencies.
176
177 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
178
179         PR c/41049
180         * real.c decimal_from_integer, decimal_integer_string): New.
181         (real_from_integer): Use them as special case for decimal float.
182         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
183         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
184         Do not append zero after the decimal point in string to convert.
185
186 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
187
188         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
189         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
190
191 2009-09-17  Martin Jambor  <mjambor@suse.cz>
192
193         * common.opt (fipa-sra): New switch.
194         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
195         * timevar.def (TV_IPA_SRA): New timevar.
196         * params.def (ipa-sra-ptr-growth-factor): New parameter.
197         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
198         * tree-sra.c: Include cgraph.c.
199         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
200         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
201         and grp_not_necessarilly_dereferenced.
202         (func_param_count): New variable.
203         (encountered_apply_args): New variable.
204         (bb_dereferences): New variable.
205         (final_bbs): New variable.
206         (no_accesses_representant): New variable.
207         (no_accesses_p): New function.
208         (dump_access): Dump the new fields.
209         (sra_initialize): Set encountered_apply_args to false.
210         (get_ssa_base_param): New function.
211         (mark_parm_dereference): New function.
212         (create_access): Caring for INIDRECT_REFs and different handling of
213         varialble length accesses in early IPA SRA.  Store the stmt - a new
214         parameter - to the new access.
215         (build_access_from_expr_1): New parameter stmt, passed to
216         create_access.  Handle INDIRECT_REFs.
217         (build_access_from_expr): Pass the current statement to
218         build_access_from_expr_1.
219         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
220         passes.
221         (build_accesses_from_assign): Pass the current statement to
222         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
223         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
224         final_bbs when necessary.  Check for calls to __builtin_apply_args.
225         Fixup EH info if anythng was changed.
226         (is_unused_scalar_param): New function.
227         (ptr_parm_has_direct_uses): New function.
228         (find_param_candidates): New function.
229         (mark_maybe_modified): New function.
230         (analyze_modified_params): New function.
231         (propagate_dereference_distances): New function.
232         (dump_dereferences_table): New function.
233         (analyze_caller_dereference_legality): New function.
234         (unmodified_by_ref_scalar_representative): New function.
235         (splice_param_accesses): New function.
236         (decide_one_param_reduction): New function.
237         (enum ipa_splicing_result): New type.
238         (splice_all_param_accesses): New function.
239         (get_param_index): New function.
240         (turn_representatives_into_adjustments): New function.
241         (analyze_all_param_acesses): New function.
242         (get_replaced_param_substitute): New function.
243         (get_adjustment_for_base): New function.
244         (replace_removed_params_ssa_names): New function.
245         (sra_ipa_reset_debug_stmts): New function.
246         (sra_ipa_modify_expr): New function.
247         (sra_ipa_modify_assign): New function.
248         (convert_callers): New function.
249         (modify_function): New function.
250         (ipa_sra_preliminary_function_checks): New function.
251         (ipa_early_sra): New function.
252         (ipa_early_sra_gate): New function.
253         (pass_early_ipa_sra): New variable.
254         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
255
256 2009-09-17  Michael Matz  <matz@suse.de>
257
258         PR middle-end/41347
259         * tree.c (build_type_attribute_qual_variant): Export.
260         * tree.h (build_type_attribute_qual_variant): Declare.
261         * tree-inline.c (remap_type_1): Use it to build variants with
262         the original qualifiers and attributes.
263
264 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
265
266         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
267         without a fallthrough edge.
268
269 2009-09-16  DJ Delorie  <dj@redhat.com>
270
271         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
272         chip and ignore the "fast_interrupt" attribute if so.
273
274 2009-09-16  Richard Henderson  <rth@redhat.com>
275
276         PR middle-end/41360
277         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
278         barrier fix.
279
280 2009-09-16  Richard Henderson  <rth@redhat.com>
281
282         PR target/41246
283         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
284         is set only if DECL_NO_STATIC_CHAIN is unset.
285         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
286         (FOR_EACH_NEST_INFO): New.
287         (walk_all_functions): Use it.
288         (finalize_nesting_tree): Likewise.
289         (unnest_nesting_tree): Likewise.
290         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
291         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
292         (convert_gimple_call): Early out if gimple_call_chain already set.
293         (convert_all_function_calls): Iterate until no new functions
294         require a static chain.
295         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
296         when building a trampoline.  Use dump_function_to_file instead
297         of dump_function.
298         (lower_nested_functions): Open dump_file.  Validate that decls
299         that have DECL_NO_STATIC_CHAIN from the front end don't have that
300         bit reset by this pass.
301
302 2009-09-16  Michael Matz  <matz@suse.de>
303
304         PR fortran/41212
305         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
306         shorten decl_common_unused.
307         (DECL_RESTRICTED_P): New accessor.
308         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
309         to disambiguate marked decls and restrict pointers.
310
311 2009-09-16  Richard Henderson  <rth@redhat.com>
312
313         PR middle-end/41360
314         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
315
316 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
317
318         * integrate.c (set_block_abstract_flags): Call
319         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
320
321 2009-09-16  Richard Guenther  <rguenther@suse.de>
322
323         PR middle-end/34011
324         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
325         as non-aliased.
326
327 2009-09-16  DJ Delorie  <dj@redhat.com>
328             Kaz Kojima  <kkojima@gcc.gnu.org>
329
330         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
331         (sh_expand_prologue): Update calls to output_stack_adjust.
332         (sh_expand_epilogue): Likewise.
333
334 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
335
336         PR bootstrap/41349
337         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
338         trying to limit the extent of searches in the insn stream.
339
340 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
341             Jakub Jelinek  <jakub@redhat.com>
342
343         PR target/41175
344         PR target/40677
345         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
346         problem.
347         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
348         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
349         (rs6000_savres_strategy): Always save FP registers inline if the
350         target doesn't support hardware double-precision.  Set the above
351         bits in return value when needed.
352         (rs6000_savres_routine_sym): Fix computation for cache selector.
353         Mark the generated symbol as a function.  Rename exitp argument to
354         lr.  Move code for determining the name of the symbol...
355         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
356         getting the names right on AIX and 64-bit Linux.
357         (savres_routine_name): New variable.
358         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
359         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
360         on what the target routine uses as a base register.  If savep && lr
361         describe saving of r0 into memory slot.
362         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
363         line calls for AIX ABI.
364         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
365         determine FP save/restore functions.
366         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
367         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
368         gen_addsi3.
369         (rs6000_emit_epilogue): Adjust computation of restore_lr.
370         Duplicate restoration of LR and execute the appropriate one
371         depending on whether GPRs are being restored inline.  Set r11 from
372         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
373         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
374         Fix out of line calls for AIX ABI.
375         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
376         New insn.
377         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
378         register 11.
379         (*restore_gpregs_spe): Likewise.
380         (*return_and_restore_gpregs_spe): Likewise.
381         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
382         Define to empty string unconditionally.
383         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
384         Define to empty string unconditionally.
385         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
386         !TARGET_64BIT.
387
388 2009-09-15  Jan Hubicka  <jh@suse.cz>
389
390         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
391         * params.def (inline-insns-auto): Likewise.
392
393 2009-09-15  Martin Jambor  <mjambor@suse.cz>
394
395         * ipa-inline.c (estimate_function_body_sizes): Dump info about
396         individual statements only at TDF_DETAILS dump level.  Format
397         source for 80 characters per line.
398
399 2009-09-15  Christian Bruel  <christian.bruel@st.com>
400
401         * regrename.c (do_replace): Update REG_DEAD notes.
402
403 2009-09-15  Revital Eres  <eres@il.ibm.com>
404
405         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
406         * targhooks.c (default_builtin_support_vector_misalignment):
407         New builtin function.
408         * targhooks.h (default_builtin_support_vector_misalignment):
409         Declare.
410         * target.h (builtin_support_vector_misalignment):
411         New field in struct gcc_target.
412         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
413         new builtin function.
414         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
415         Define.
416         * config/rs6000/rs6000.c
417         (rs6000_builtin_support_vector_misalignment): New function.
418         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
419
420 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
421
422         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
423         instead of INSN_P.
424         (bfin_optimize_loop): Likewise.
425         (bfin_gen_bundles): Likewise.
426         (workaround_speculation): Likewise.
427         (find_load): Return NULL_RTX for debug_insn.
428
429 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
430
431         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
432         (sminsf3): Ditto.
433
434 2009-09-14  DJ Delorie  <dj@redhat.com>
435
436         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
437         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
438         VLIW mode.
439
440 2009-09-14  Richard Henderson  <rth@redhat.com>
441             Jakub Jelinek  <jakub@redhat.com>
442
443         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
444         * cfgbuild.c (make_edges): Handle asm goto.
445         * cfglayout.c (fixup_reorder_chain): Likewise.
446         * cfgrtl.c (patch_jump_insn): Likewise.
447         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
448         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
449         (gimple_build_asm_vec): Add and use labels parameter.
450         (gimple_build_asm): Remove.
451         (walk_gimple_asm): Walk labels too.
452         * gimple.def (GIMPLE_ASM): Update docs.
453         * gimple.h: Update decls.
454         (struct gimple_statement_asm): Change nc to use unsigned char;
455         add nl member.
456         (gimple_asm_nlabels): New.
457         (gimple_asm_label_op, gimple_asm_set_label_op): New.
458         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
459         into gimple_build_asm_vec.
460         * jump.c (mark_jump_label_asm): New.
461         (mark_jump_label): Use it.
462         (redirect_jump_1): Handle asm goto.
463         (invert_jump_1): Soft fail if X is null.
464         * recog.c (extract_asm_operands): New.
465         (asm_noperands): Use it; handle asm labels.
466         (decode_asm_operands): Use extract_asm_operands.
467         (asm_operand_ok): Properly handle empty string.
468         * reg-stack.c (get_asm_operands_in_out): Rename from
469         get_asm_operand_n_inputs; use extract_asm_operands; return both
470         inputs and outputs by reference; update all callers.
471         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
472         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
473         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
474         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
475         (extract_asm_operands): Declare.
476         * stmt.c (expand_asm_operands): Add and use labels parameter.
477         (check_unique_operand_names): Likewise.
478         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
479         (expand_asm_stmt): Handle asm labels.
480         * tree-cfg.c (make_gimple_asm_edges): New.
481         (make_edges): Use it.
482         (cleanup_dead_labels): Handle asm labels.
483         (is_ctrl_altering_stmt): Likewise.
484         (gimple_redirect_edge_and_branch): Likewise.
485         * tree.def (ASM_EXPR): Add 5th operand.
486         * tree.h (ASM_LABELS): New.
487         (resolve_asm_operand_names): Update decl.
488
489         * c-parser.c (c_parser_asm_statement): Parse asm goto.
490         (c_parser_asm_goto_operands): New.
491         * c-tree.h (build_asm_expr): Update decl.
492         * c-typeck.c (build_asm_expr): Add and use labels parameter.
493         * doc/extend.texi: Document asm goto.
494
495 2009-09-14  Richard Henderson  <rth@redhat.com>
496
497         * except.h: Update declarations.
498         (struct pointer_map_t): Forward declare.
499         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
500         (struct eh_landing_pad_d, eh_landing_pad): New.
501         (struct eh_catch_d, eh_catch): New.
502         (struct eh_region_d): Remove next_region_sharing_label, aka,
503         label, tree_label, landing_pad, post_landing_pad, resume,
504         may_contain_throw.  Rename region_number to index.  Remove
505         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
506         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
507         (VEC(eh_landing_pad,gc)): New.
508         (struct eh_status): Remove last_region_number.  Add lp_array,
509         throw_stmt_table, ttype_data, ehspec_data.
510         (ehr_next, FOR_ALL_EH_REGION_AT): New.
511         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
512         * except.c (lang_protect_cleanup_actions): Return tree.
513         (struct ehl_map_entry): Remove.
514         (init_eh_for_function): Push zero entries for region and lp_array.
515         (gen_eh_region): Add to region_array immediately.
516         (gen_eh_region_catch): Operate on eh_catch objects.
517         (gen_eh_landing_pad): New.
518         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
519         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
520         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
521         (get_eh_landing_pad_from_number_fn): New.
522         (get_eh_landing_pad_from_number): New.
523         (get_eh_region_from_lp_number_fn): New.
524         (get_eh_region_from_lp_number): New.
525         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
526         (get_exception_pointer, get_exception_filter): Remove.
527         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
528         (current_function_has_exception_handlers): Simplify.
529         (bring_to_root, eh_region_replaceable_by_p): Remove.
530         (replace_region, hash_type_list, hash_eh_region): Remove.
531         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
532         (label_to_region_map, num_eh_regions): Remove.
533         (get_next_region_sharing_label, must_not_throw_labels): Remove.
534         (find_exception_handler_labels): Remove.
535         (duplicate_eh_regions_0, find_prev_try): Remove.
536         (struct duplicate_eh_regions_data): New.
537         (duplicate_eh_regions_1): Rewrite.
538         (duplicate_eh_regions): Return a pointer map instead of an
539         integer offset.
540         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
541         (redirect_eh_edge_to_label): Remove.
542         (eh_region_outermost): Rewrite using eh_region pointers
543         instead of integers.
544         (add_ttypes_entry): Update for ttype_data move to eh_status.
545         (add_ehspec_entry): Rewrite with VEC instead of varray.
546         (assign_filter_values): Likewise.  Export.
547         (build_post_landing_pads, connect_post_landing_pads): Remove.
548         (dw2_build_landing_pads): Rewrite to use lp_array.
549         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
550         (sjlj_assign_call_site_values): Rewrite to use lp_array.
551         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
552         (sjlj_mark_call_sites): Update for landing pad numbers.
553         (finish_eh_generation): Rewrite.
554         (gate_handle_eh): Do nothing for no eh tree.
555         (pass_rtl_eh): Move up near finish_eh_generation.
556         (remove_eh_landing_pad): New.
557         (remove_eh_handler): Export.
558         (remove_eh_region, remove_eh_handler_and_replace): Remove.
559         (for_each_eh_label): Rewrite to use lp_array.
560         (make_reg_eh_region_note): New.
561         (make_reg_eh_region_note_nothrow_nononlocal): New.
562         (insn_could_throw_p): New.
563         (copy_reg_eh_region_note_forward): New.
564         (copy_reg_eh_region_note_backward): New.
565         (check_handled, add_reachable_handler): Remove.
566         (reachable_next_level, foreach_reachable_handler): Remove.
567         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
568         (get_eh_region_and_lp_from_rtx): New.
569         (get_eh_region_from_rtx): New.
570         (can_throw_internal_1, can_throw_external_1): Remove.
571         (can_throw_internal): Use get_eh_region_from_rtx.
572         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
573         (insn_nothrow_p, can_nonlocal_goto): New.
574         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
575         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
576         (add_action_record): Use VEC not varray.
577         (collect_one_action_chain): Update for eh_region changes.
578         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
579         Use get_eh_region_and_lp_from_rtx.
580         (gate_convert_to_eh_region_ranges): New.
581         (pass_convert_to_eh_region_ranges): Use it.
582         (push_uleb128, push_sleb128): Use VEC not varray.
583         (output_one_function_exception_table): Likewise.
584         (dump_eh_tree): Update for eh_region changes.
585         (verify_eh_tree): Likewise.
586         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
587         * tree-eh.c: Include target.h.
588         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
589         Don't disallow GIMPLE_RESX; adjust argument check.
590         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
591         (record_stmt_eh_region): Update for landing pad numbers;
592         generate a landing pad if necessary.
593         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
594         (remove_stmt_from_eh_lp_fn): Similarly.
595         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
596         Update for lp numbers; don't special case missing throw_stmt_table.
597         (lookup_expr_eh_lp): Similarly.
598         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
599         (eh_seq, eh_region_may_contain_throw): New.
600         (struct leh_state): Add ehp_region.
601         (struct leh_tf_state): Remove eh_label.
602         (emit_post_landing_pad): New.
603         (emit_resx, emit_eh_dispatch): New.
604         (note_eh_region_may_contain_throw): New.
605         (frob_into_branch_around): Take eh_region not eh label;
606         emit eh code into eh_seq.
607         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
608         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
609         lower_eh_must_not_throw.  Emit code to eh_seq.
610         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
611         (lower_try_finally_onedest): Likewise.
612         (lower_try_finally_copy): Likewise.
613         (lower_try_finally_switch): Likewise.
614         (lower_try_finally): Initialize ehp_region.
615         (lower_catch): Update for eh_catch objects.
616         (lower_eh_filter): Don't handle must_not_throw.
617         (lower_eh_must_not_throw): New.
618         (lower_cleanup): Don't set eh_label.
619         (lower_eh_constructs_2): Resolve eh builtins.
620         Handle GIMPLE_EH_MUST_NOT_THROW.
621         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
622         Add eh_seq to the end of the function body.
623         (make_eh_dispatch_edges): New.
624         (make_eh_edge): Remove.
625         (make_eh_edges): Simplify for landing pads.
626         (redirect_eh_edge_1): New.
627         (redirect_eh_edge): Use it.
628         (redirect_eh_dispatch_edge): New.
629         (stmt_could_throw_p): Use a switch.  Allow RESX.
630         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
631         (stmt_can_throw_internal): Likewise.
632         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
633         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
634         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
635         (gate_refactor_eh): New.
636         (pass_refactor_eh): Use it.
637         (lower_resx, execute_lower_resx, pass_lower_resx): New.
638         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
639         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
640         (remove_unreachable_handlers): Rename from
641         tree_remove_unreachable_handlers; rewrite for landing pads;
642         call remove_eh_handler directly.
643         (remove_unreachable_handlers_no_lp): New.
644         (unsplit_eh, unsplit_all_eh): New.
645         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
646         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
647         (cleanup_empty_eh_unsplit): New.
648         (cleanup_empty_eh): Rewrite.
649         (cleanup_all_empty_eh): New.
650         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
651         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
652         (gate_cleanup_eh): New.
653         (pass_cleanup_eh): Use it.
654         (verify_eh_edges): Move later in file.  Expect one EH edge.
655         (verify_eh_dispatch_edge): New.
656
657         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
658         (gtype-desc.o): Add TARGET_H.
659         (tree.o): Use EXCEPT_H, not except.h.
660         (cfgbuild.o): Add EXPR_H.
661         (GTFILES): Add vecprim.h.
662         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
663         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
664         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
665         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
666         * calls.c (emit_call_1): Use make_reg_eh_region_note.
667         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
668         calls to can_throw_internal.
669         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
670         (make_edges): Don't handle RESX; use can_nonlocal_goto.
671         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
672         (expand_gimple_stmt): Use make_reg_eh_region_note.
673         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
674         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
675         or find_exception_handler_labels.
676         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
677         there is exacly one EH edge.  Use can_nonlocal_goto and
678         can_throw_internal.
679         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
680         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
681         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
682         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
683         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
684         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
685         * dse.c (scan_insn): Use insn_could_throw_p.
686         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
687         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
688         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
689         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
690         EXC_PTR_EXPR or FILTER_EXPR.
691         (tree_expr_nonzero_warnv_p): Likewise.
692         * function.h: Include vecprim.h, not varray.h
693         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
694         move ttype_data and ehspec_data members to struct eh_status; change
695         action_record_data member to a VEC.
696         * gcse.c (hash_scan_set): Use can_throw_internal.
697         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
698         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
699         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
700         (block_may_fallthru): Don't handle RESX_EXPR.
701         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
702         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
703         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
704         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
705         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
706         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
707         (gimple_size): Likewise.
708         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
709         (gimple_build_resx): Use gimple_build_with_ops.
710         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
711         (is_gimple_val): Likewise.
712         (is_gimple_stmt): Remove RESX_EXPR.
713         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
714         (GIMPLE_RESX): Reorder with other EH constructs.
715         * gimple.h (struct gimple_statement_eh_mnt): New.
716         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
717         (gimple_eh_filter_must_not_throw): Remove.
718         (gimple_eh_filter_set_must_not_throw): Remove.
719         (gimple_eh_must_not_throw_fndecl): New.
720         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
721         (is_gimple_resx): New.
722         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
723         Don't copy EH_FILTER_MUST_NOT_THROW.
724         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
725         * ipa-inline.c (estimate_function_body_sizes): Don't try to
726         handle must_not_throw_labels specially.
727         * ipa-pure-const.c (check_call): Update debug statement for LP.
728         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
729         * ipa-utils.c (get_base_var): Likewise.
730         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
731         * lower-subreg.c (move_eh_region_note): Remove.
732         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
733         * omp-low.c (new_omp_context): Update for eh_lp_nr.
734         (create_task_copyfn): Likewise.
735         (maybe_catch_exception): Use gimple_build_eh_filter.
736         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
737         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
738         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
739         and pass_lower_resx.
740         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
741         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
742         can_throw_internal, can_nonlocal_goto.
743         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
744         copy_reg_eh_region_note_forward.
745         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
746         (emit_output_reload_insns): Likewise.
747         (copy_eh_notes): Remove.
748         * rtl.def (RESX): Remove.
749         * rtl.h: Update declarations.
750         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
751         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
752         (update_eh_label): Remove.
753         (cleanup_dead_labels_eh): New.
754         (cleanup_deal_labels): Use it instead of update_eh_label.
755         (gimple_merge_blocks): Update landing pad data structure when
756         removing a landing pad label.
757         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
758         test; handle GIMPLE_EH_MUST_NOT_THROW.
759         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
760         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
761         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
762         (verify_stmt): Likewise.  Verify landing pads.
763         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
764         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
765         (struct move_stmt_d): Add eh_map.
766         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
767         (move_stmt_r): Remap eh region numbers in builtin calls,
768         resx and eh_dispatch.
769         (move_block_to_fn): Remove eh_offset parameter.  Use
770         maybe_duplicate_eh_stmt_fn.
771         (find_outermost_region_in_block): Operate on eh_region pointers
772         instead of region numbers.
773         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
774         duplicate_eh_regions.
775         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
776         test earlier.  Disallow EH landing pads.
777         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
778         * tree-flow.h: Update declarations.
779         (struct tree_ann_common_d): Replace rn with lp_nr.
780         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
781         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
782         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
783         resx and eh_dispatch.
784         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
785         (copy_edges_for_bb): Use make_eh_dispatch_edges.
786         (copy_cfg_body): Expect eh_map instead of eh_region_offset
787         from duplicate_eh_regions.
788         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
789         update RESX; handle EH_DISPATCH.
790         (expand_call_inline): Set eh_lp_nr, not eh_region.
791         (maybe_inline_call_in_expr): Likewise.
792         * tree-inline.h (struct copy_body_data): Replace eh_region with
793         eh_lp_nr, eh_region_offset with eh_map.
794         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
795         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
796         * tree-pretty-print.c (dump_generic_node): Don't handle
797         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
798         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
799         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
800         EXC_PTR_EXPR, FILTER_EXPR.
801         * tree-ssa-operands.c (get_expr_operands): Likewise.
802         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
803         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
804         (ao_ref_init_from_vn_reference): Likewise.
805         * tree-ssa-sink.c (statement_sink_location): Likewise.
806         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
807         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
808         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
809         EXC_PTR_EXPR, FILTER_EXPR.
810         (is_exception_related): Remove.
811         (compute_avail): Don't call it.
812         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
813         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
814         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
815         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
816         Build EH builtins.
817         (build_resx): Remove.
818         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
819         * tree.h: Update declarations.
820         (EH_FILTER_MUST_NOT_THROW): Remove.
821         (struct tree_label_decl): Add eh_landing_pad_nr.
822         (EH_LANDING_PAD_NR): New.
823         * value-prof.c (gimple_ic): Tidy variable names.  Update for
824         landing pad numbers.
825         (gimple_stringop_fixed_value): Tidy variable names.  Assert
826         that neither call stmt can throw.
827         * vecprim.h (uchar): New.
828         (VEC(uchar,heap), VEC(uchar,gc)): New.
829
830         * c-common.c (c_define_builtins): Update call to
831         build_common_builtin_nodes.
832         * c-parser.c (c_parse_file): Don't call
833         default_init_unwind_resume_libfunc.
834
835 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
836
837         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
838         (mips_cprestore_address_p): Likewise.
839         (mips_save_gp_to_cprestore_slot): Likewise.
840         (mips_restore_gp): Rename to...
841         (mips_restore_gp_from_cprestore_slot): ...this.
842         (mips_must_initialize_gp_p): Declare.
843         (mips_emit_save_slot_move): Likewise.
844         (mips_output_load_label): Return nothing.
845         (mips_eh_uses): Declare.
846         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
847         (TARGET_CPRESTORE_DIRECTIVE): New macro.
848         (TARGET_ABSOLUTE_JUMPS): Likewise.
849         (EH_USES): Likewise.
850         (FIRST_PSEUDO_REGISTER): Update comment.
851         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
852         (MIPS_CALL): ...here.
853         (REGISTER_NAMES): Add $cprestore.
854         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
855         Add load_label_length, has_inflexible_gp_insn_p,
856         has_flexible_gp_insn_p, must_initialize_gp_p and
857         must_restore_gp_when_clobbered_p.
858         (mips_expand_call): Don't generate split instructions here.
859         (mips_split_call): Update the call to mips_restore_gp after
860         the above name change.
861         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
862         (mips_find_gp_ref): New function.
863         (mips_insn_has_inflexible_gp_ref_p): Likewise.
864         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
865         (mips_insn_has_flexible_gp_ref_p): Likewise.
866         (mips_cfun_has_flexible_gp_ref_p): Likewise.
867         (mips_function_has_gp_insn): Delete.
868         (mips_global_pointer): Drop the df_regs_ever_live_p check.
869         Use the new functions above.  Only return INVALID_REGNUM
870         for TARGET_ABSOLUTE_JUMPS.
871         (mips_must_initialize_gp_p): New function.
872         (mips_get_cprestore_base_and_offset): New function, extracted from...
873         (mips_cprestore_slot): ...here.  Take a bool parameter.
874         (mips_cfun_has_cprestore_slot_p): New function.
875         (mips_cprestore_address_p): Likewise.
876         (mips_save_gp_to_cprestore_slot): Likewise.
877         (mips_restore_gp): Rename to...
878         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
879         epilogue_completed.  Update the call to mips_cprestore_slot.
880         Test cfun->machine->must_restore_gp_when_clobbered_p.
881         (mips_direct_save_slot_move_p): New function.
882         (mips_emit_save_slot_move): Likewise.
883         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
884         of cfun->machine->global_pointer.
885         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
886         (mips_save_reg): Use mips_emit_save_slot_move.
887         (mips_expand_prologue): Set must_initialize_gp_p.
888         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
889         for all cprestore saves.  Emit a use_cprestore instruction after
890         setting up the cprestore slot.
891         (mips_restore_reg): Use mips_emit_save_slot_move.
892         (mips_process_load_label): New function.
893         (mips_load_label_length): Likewise.
894         (mips_output_load_label): Don't return asm: output it here instead.
895         Use mips_process_load_label.
896         (mips_adjust_insn_length): Adjust the length of branch instructions
897         that have length MAX_PIC_BRANCH_LENGTH.
898         (mips_output_conditional_branch): Update the call to
899         mips_output_load_label.  Assume the branch target is OPERANDS[0]
900         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
901         (mips_output_order_conditional_branch): Swap the meaning of
902         OPERANDS[0] and OPERANDS[1].
903         (mips_variable_issue): Don't count ghost instructions.
904         (mips_expand_ghost_gp_insns): New function.
905         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
906         (mips_output_mi_thunk): Set must_initialize_gp_p.
907         (mips_eh_uses): New function.
908         * config/mips/predicates.md (cprestore_save_slot_operand)
909         (cprestore_load_slot_operand): New predicates.
910         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
911         (UNSPEC_MOVE_GP): Likewise.
912         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
913         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
914         (CPRESTORE_SLOT_REGNUM): New register.
915         (MAX_PIC_BRANCH_LENGTH): New constant.
916         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
917         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
918         branches.  Fix commentary.
919         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
920         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
921         Change type to "ghost".
922         (loadgp_absolute_<mode>): Likewise.
923         (loadgp_rtp_<mode>): Likewise.
924         (copygp_mips16): Likewise.
925         (loadgp_blockage): Remove redundant mode attribute.
926         (potential_cprestore): New instruction.
927         (cprestore): Turn into an unspec set.
928         (use_cprestore): New instruction.
929         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
930         (*branch_fp_inverted): Likewise.
931         (*branch_order<mode>): Likewise.
932         (*branch_order<mode>_inverted): Likewise.
933         (*branch_equality<mode>): Likewise.
934         (*branch_equality<mode>_inverted): Likewise.
935         (*branch_bit<bbv><mode>): Likewise.
936         (*branch_bit<bbv><mode>_inverted): Likewise.
937         (*branch_equality<mode>_mips16): Remove redundant mode.
938         (jump): Turn into a define_expand.
939         (*jump_absolute): New instruction.
940         (*jump_pic): Likewise.
941         (*jump_mips16): Rename previously-unnamed pattern.  Remove
942         redundant mode attribute.
943         (restore_gp): Split on epilogue_completed rather than
944         reload_completed.  Change type to "ghost".
945         (move_gp<mode>): New instruction.
946         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
947         Remove redundant mode attribute.
948         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
949         (bc1any4f, bc1any2t, bc1any2f): Likewise.
950         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
951
952 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
953
954         PR target/41210
955         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
956         are returned in the same register (vs34 or v2) that Altivec vector
957         types are returned in.
958         (rs6000_libcall_value): Ditto.
959
960         PR target/41331
961         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
962         instead of explicit addsi3/adddi3 calls.
963         (rs6000_split_multireg_move): Ditto.
964         (rs6000_emit_allocate_stack): Ditto.
965         (rs6000_emit_prologue): Ditto.
966         (rs6000_output_mi_thunk): Ditto.
967
968         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
969         size is 64 bits if we can use 64-bit registers.
970
971 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
972
973         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
974         symbols.
975
976         From Jie Zhang <jie.zhang@analog.com>:
977         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
978         save FP and RETS with saveall attribute.
979         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
980         with saveall attribute.
981
982         * config/bfin/bfin.c (bfin_expand_builtin,
983         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
984         operands.
985
986         From Jie Zhang <jie.zhang@analog.com>:
987         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
988         before use in two places.
989         * config/bfin/bfin.md (AREG): Define mode iterator.
990         (reload_in, reload_out): Use mode iterator AREG.
991
992 2009-09-14  Richard Guenther  <rguenther@suse.de>
993
994         PR middle-end/41350
995         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
996         EH personality path.
997
998 2009-09-13  Richard Guenther  <rguenther@suse.de>
999             Rafael Avila de Espindola  <espindola@google.com>
1000
1001         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1002         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1003         (LANG_HOOKS_INITIALIZER): Adjust.
1004         (lhd_pass_through_t): Declare.
1005         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1006         eh_personality.
1007         * langhooks.c (lhd_pass_through_t): New function.
1008         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1009         dwarf2out_begin_prologue): Use personality from current_function_decl.
1010         * expr.h (get_personality_function): Declare.
1011         * expr.c (get_personality_function): New function.
1012         (build_personality_function): Likewise.
1013         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1014         (eh_personality_libfunc): Remove.
1015         * optabs.c (build_libfunc_function): New function split out from ...
1016         (init_one_libfunc): ... here.
1017         * tree.h (DECL_FUNCTION_PERSONALITY): New.
1018         (tree_function_decl): Add personality.
1019         (lhd_gcc_personality): Declare.
1020         (build_personality_function): Likewise.
1021         * tree.c (gcc_eh_personality_decl): New.
1022         (lhd_gcc_personality): New function.
1023         * except.h (lang_eh_runtime_type): Remove.
1024         (enum eh_personality_kind): New.
1025         (build_personality_function): Declare.
1026         (function_needs_eh_personality): Declare.
1027         * except.c (lang_eh_runtime_type): Remove.
1028         (function_needs_eh_personality): New function.
1029         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1030         (sjlj_emit_function_enter, output_function_exception_table):
1031         Use personality from current_function_decl.
1032         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1033         * tree-inline.c (tree_can_inline_p): Do not inline across different
1034         EH personalities.
1035         (expand_call_inline): Likewise.  Adjust the callers EH personality.
1036         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1037         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1038         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1039         (c-parser.o): Likewise
1040         * c-tree.h (c_eh_initialized_p): Remove.
1041         (c_maybe_initialize_eh): Likewise.
1042         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1043         (finish_decl): Don't call c_maybe_initialize_eh.
1044         (c_eh_initialized_p): Remove.
1045         (c_maybe_initialize_eh): Likewise.
1046         * c-parser.c (c_parser_omp_construct): Likewise.
1047         (c_parse_file): Initialize exception handling.
1048
1049 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
1050
1051         * config.gcc (tm_file): Remove i386/biarch32.h
1052         for i?86-w64-mingw* case.
1053         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1054         support.
1055         * config.host: Set for x64 mingw the option
1056         use_long_long_for_widest_fast_int to yes.
1057
1058 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
1059
1060         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1061         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1062         (dbxout_begin_function): Likewise.
1063         * final.c (dwarf2_debug_info_emitted_p): New predicate.
1064         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1065         set on the function.
1066         (final_end_function): Likewise.
1067         (final_scan_insn): Likewise.
1068         (rest_of_handle_final): Likewise.
1069         * varasm.c (assemble_start_function): Likewise.
1070         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1071
1072 2009-09-12  Jason Merrill  <jason@redhat.com>
1073
1074         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1075         * opts.c (common_handle_option): constify.
1076
1077 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1078
1079         * doc/install.texi (avr): Remove obsolete reference site.
1080
1081 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1082         
1083         * doc/install.texi (Binaries): Adjust AIX link.
1084
1085 2009-09-12  Akim Demaille  <demaille@gostai.com>
1086
1087         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1088         Use an imperative sentence.
1089
1090 2009-09-11  Richard Henderson  <rth@redhat.com>
1091
1092         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1093         structure-name and has-tree-operands arguments; update all entries.
1094         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1095         update all entries.
1096         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1097         (gsstruct_code_size): New.
1098         (gss_for_code_): New.
1099         (gss_for_code): Remove.
1100         (gimple_size): Rewrite using gsstruct_code_size.
1101         (gimple_statement_structure): Move to gimple.h.
1102         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1103         (gss_for_code, gimple_statement_structure): New.
1104         (gimple_ops): Use new arrays; tidy.
1105
1106 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1107
1108         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1109         operand to be a PLUS expression.
1110         * config/pa/pa.c (pa_secondary_reload): Likewise.
1111
1112 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1113
1114         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1115
1116         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1117         XEXP (in_rtx, 8).
1118
1119 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1120
1121         From Jie Zhang <jie.zhang@analog.com>:
1122         * doc/extend.texi (node Function Attributes): Document l2
1123         function attribute.
1124         (node Blackfin Variable Attributes): Document l2 variable attributes.
1125
1126 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1127
1128         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1129         to match the system compiler's configuration at inflection point.
1130         Add comment to remark a remaining difference with system compiler.
1131
1132         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1133         * configure: Regenerate.
1134
1135 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1136
1137         From Jie Zhang <jie.zhang@analog.com>:
1138         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1139         (bfin_handle_l2_attribute): New.
1140         (bfin_attribute_table): Add l2 attribute.
1141
1142 2009-09-11  Michael Matz  <matz@suse.de>
1143
1144         PR middle-end/41275
1145         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1146         on the local_decls list.
1147
1148 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1149
1150         PR debug/41276
1151         PR debug/41307
1152         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1153         interface.
1154         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1155         for VALUEs, to implement the documented interface.
1156         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1157         Adjust for VALUEs and anything else, to implement the
1158         documented interface.
1159
1160 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1161
1162         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1163         with actual SPE/paired vector modes before using 64-bit alignment.
1164         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1165
1166 2009-09-10  DJ Delorie  <dj@redhat.com>
1167
1168         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1169         emitted.
1170
1171         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1172         * config/mep/mep.c (mep_legitimate_constant_p): New.
1173         * config/mep/mep-protos.h: Prototype it.
1174
1175 2009-09-10  Richard Henderson  <rth@redhat.com>
1176
1177         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1178
1179 2009-09-10  Jason Merrill  <jason@redhat.com>
1180
1181         * tree.c (chain_index): New fn.
1182         * tree.h: Declare it.
1183
1184 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1185
1186         * config/sol2-c.c (cmn_err_length_specs): Initialize
1187         scalar_identity_flag.
1188
1189 2009-09-10  Richard Henderson  <rth@redhat.com>
1190
1191         * tree.h (struct tree_decl_common): Move align member earlier;
1192         move label_decl_uid member ...
1193         (struct tree_label_decl): ... here.
1194         (LABEL_DECL_UID): Update to match.
1195
1196         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1197         not TDF_DETAILS.
1198
1199         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1200         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1201
1202         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1203         dest_prev if the edge is complex.
1204
1205         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1206
1207         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1208         loop latch tests earlier.
1209
1210         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1211         before GIMPLE_RETURN, not after its predecessor; insert
1212         before GIMPLE_RESX.
1213
1214         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1215         gimple_seq_empty_p to test for no PHI nodes.
1216         * tree-cfg.c (split_critical_edges): Likewise.
1217
1218         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1219
1220 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1221
1222         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1223         introduced by the VTA branch merge.
1224
1225 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1226
1227         * ira-conflicts.c: Use fputs or putc instead of fprintf
1228         where appropriate.
1229         * cfg.c: Ditto.
1230         * toplev.c: Ditto.
1231         * tree-switch-conversion.c: Ditto.
1232
1233 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1234
1235         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1236         introduced by the VTA branch merge.
1237
1238 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1239
1240         Revert:
1241         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1242
1243         PR rtl-optimization/39779
1244         * expr.c (convert_modes): Return when mode == oldmode after
1245         CONST_INTs are processed.
1246
1247 2009-09-10  Nick Clifton  <nickc@redhat.com>
1248
1249         * config/mep/mep.c (mep_encode_section_info): Copy weakness
1250         attribute and referring decl when creating renamed symbol.
1251
1252 2009-09-10  Richard Guenther  <rguenther@suse.de>
1253
1254         PR middle-end/41257
1255         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1256         reachable nodes.
1257         (cgraph_finalize_compilation_unit): Compute reachability
1258         before emitting thunks.  Properly process aliases before
1259         possibly removing unreachable nodes.
1260
1261 2009-09-10  Richard Guenther  <rguenther@suse.de>
1262
1263         PR middle-end/41254
1264         * tree.c (struct free_lang_data_d): Add worklist member.
1265         (find_decls_types_r): Push onto the worklist instead of recursing.
1266         Handle TREE_BINFOs properly.
1267         (find_decls_types): New function wrapped around find_decls_types_r
1268         to process the worklist.
1269         (find_decls_types_in_eh_region): Use it.
1270         (find_decls_types_in_node): Likewise.
1271         (find_decls_types_in_var): Likewise.
1272         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
1273         * tree.h (RECORD_OR_UNION_TYPE_P): New.
1274         (AGGREGATE_TYPE_P): Adjust.
1275
1276 2009-09-09  Jason Merrill  <jason@redhat.com>
1277
1278         * configure.ac: Check glibc version even if we have an in-tree
1279         assembler.
1280
1281 2009-09-09  Anthony Green  <green@moxielogic.com>
1282
1283         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1284         the constant 0 when appropriate.
1285         * config/moxie/constraints.md: Add constraint O.
1286
1287         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1288         to pass up to 6 32-bit argument values in registers.
1289         (moxie_function_arg): Ditto.
1290         (moxie_arg_partial_bytes): Ditto.
1291         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1292         (REG_PARM_STACK_SPACE): Ditto.
1293         (FUNCTION_ARG_REGNO_P): Ditto.
1294
1295         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1296         instruction to allocate stack space.
1297
1298 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1299
1300         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1301         unnecessarily stringent constraints.  Fix address
1302         calculation in the splitters.
1303
1304 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1305
1306         PR rtl-optimization/39779
1307         * expr.c (convert_modes): Return when mode == oldmode after
1308         CONST_INTs are processed.
1309
1310 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
1311
1312         PR/41315
1313         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1314         (ix86_expand_prologue): Take frame.padding0 into logic of
1315         to_allocate checks.
1316         (ix86_expand_epilogue): Likewise.
1317
1318 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
1319
1320         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1321         New variables.
1322         (SHLIB_LINK, SHLIB_INSTALL): Use them.
1323         * config/t-slibgcc-libgcc: New file.
1324         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1325
1326 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1327
1328         PR tree-optimization/41089
1329         * tree-sra.c (find_var_candidates): Do not consider va_lists in
1330         early SRA.
1331
1332 2009-09-09  Richard Henderson  <rth@redhat.com>
1333
1334         * gimple.h (CASE_GIMPLE_OMP): New.
1335         (is_gimple_omp): Use it.
1336         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1337         (verify_gimple_debug): Likewise.
1338
1339 2009-09-09  Richard Guenther  <rguenther@suse.de>
1340
1341         PR tree-optimization/41101
1342         * tree-ssa-pre.c (maximal_set): Remove.
1343         (compute_antic_aux): Treat the maximal set as implicitly all ones.
1344         Defer all blocks we didn't visit at least one successor.
1345         (add_to_exp_gen): Do not add to the maximal set.
1346         (make_values_for_phi): Likewise.
1347         (compute_avail): Likewise.
1348         (init_pre): Do not allocate the maximal set.
1349         (execute_pre): Do not dump it.
1350
1351 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1352
1353         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1354         an SSA_NAME rather than a is_gimple_variable.
1355
1356 2009-09-09  Richard Guenther  <rguenther@suse.de>
1357
1358         PR middle-end/41317
1359         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1360         code dealing with plain pointer bases.
1361         (maybe_fold_offset_to_reference): Likewise.
1362         (maybe_fold_stmt_addition): Adjust.
1363
1364 2009-09-09  Richard Guenther  <rguenther@suse.de>
1365
1366         * tree.c (free_lang_data_in_type): Do not free the type variant
1367         chains.
1368         (free_lang_data): Merge char_type_node with its properly signed
1369         variant.
1370         (pass_ipa_free): Collect after freeing language specific data.
1371
1372 2009-09-09  Michael Matz  <matz@suse.de>
1373
1374         PR middle-end/41268
1375         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1376         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1377         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1378         to reflect reality.
1379
1380 2009-09-08  DJ Delorie  <dj@redhat.com>
1381
1382         * config/mep/mep.c (conversions[]): Add "ml" pattern.
1383
1384 2009-09-04  Jason Merrill  <jason@redhat.com>
1385
1386         * tree.c (tree_find_value): Remove.
1387         * tree.h: Remove prototype.
1388         * varasm.c (assemble_external): Use value_member instead.
1389
1390 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1391
1392         * toplev.c (process_options): Choose default debugging type when
1393         gtoggle enables debug info and type is unset.
1394
1395 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1396
1397         PR debug/41276
1398         PR debug/41307
1399         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1400         invalid subreg.
1401
1402 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1403
1404         * configure: Rebuilt with modified libtool.m4.
1405
1406 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1407
1408         PR debug/41229
1409         PR debug/41291
1410         PR debug/41300
1411         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1412
1413 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1414
1415         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1416         (remove_statement): Likewise.
1417         (rewrite_use_nonlinear_expr): Adjust.
1418         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1419         * tree-ssa.c (release_defs_bitset): ... this.  New.
1420         * tree-flow.h (release_defs_bitset): Declare.
1421
1422 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1423
1424         PR debug/41232
1425         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1426         in the middle block.
1427
1428 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
1429
1430         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1431         via intptr_t to long type.
1432         (insert_operand_rank): Cast long type via intptr_t to
1433         pointer type.
1434         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
1435         pointer to scalar.
1436         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
1437         from pointer to unsigned via uintptr_t.
1438
1439         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
1440         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
1441         and HAVE_INTPTR_T.
1442         * configure: Regenerated.
1443         * config.in: Regenerated
1444         * system.h (stdint.h): Add include.
1445         (inttypes.h): Likewise.
1446         * Makefile.in (aclocal): Add config/stdint.m4.
1447         * aclocal.m4: Regenerated.
1448
1449 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1450
1451         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
1452         variables.
1453         (note_np_check_stores): New function.
1454         (harmless_null_pointer_p): New function.
1455         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
1456         changed.  Take into account whether we're in the shadow of a condjump
1457         that tested NP_REG for NULL.
1458         Lose all code that tested for SEQUENCEs.
1459         (workaround_speculation): Avoid inserting NOPs for loads that are
1460         either always executed or a NULL pointer.
1461
1462 2009-09-08  Jan Hubicka  <jh@suse.cz>
1463
1464         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
1465         * params.def (early-inlining-insns): Likewise.
1466
1467 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
1468
1469         PR rtl-optimization/41239
1470         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
1471         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
1472         lists.
1473         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
1474         across calls, as the calls might not always return normally.
1475         (call_may_noreturn_p): New function.
1476         (deps_analyze_insn): Update last_function_call_may_noreturn list.
1477         (init_deps): Initialize it.
1478         (remove_from_deps): Also remove calls from
1479         last_function_call_may_noreturn list.
1480
1481 2009-09-07  Richard Henderson  <rth@redhat.com>
1482
1483         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
1484         more VR->OPERANDS than LHS operands.  Free LHS before returning.
1485
1486 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1487
1488         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
1489         (attr "addrtype"): New member "spreg".
1490         Use it if mem_spfp_address_operand is true for the address.
1491         (attr "type"): New entry "stall".
1492         (cpu_unit "load"): New.
1493         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
1494         "load".
1495         (insn_reservation "loadsp"): New.
1496         (insn_reservation "load_stall1"): New.
1497         (insn_reservation "load_stall3"): New.
1498         (stall): New insn.
1499         * config/bfin/predicates.md (const1_operand, const3_operand): New.
1500         (mem_p_address_operand): Exclude stack and frame pointer based
1501         addresses.
1502         (mem_spfp_address_operand): New; match them here.
1503         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
1504         (bfin_reorg): Call it if scheduling insns.
1505         (bfin_gen_bundles): Remove dummy insns created by
1506         add_sched_insns_for_speculation.
1507
1508         From Jie Zhang <jie.zhang@analog.com>:
1509         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
1510         bfin_si_revision, bfin_workarounds): Move these ...
1511         * config/bfin/bfin.h: ... here.
1512
1513         From Mike Frysinger  <michael.frysinger@analog.com>
1514         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
1515         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
1516         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
1517         bf547m, bf548m, and bf549m.
1518         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
1519         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
1520         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
1521         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
1522         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1523         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
1524         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1525         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1526         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
1527         bf542m, bf544m, bf547m, bf548m, and bf549m.
1528
1529         From Jie Zhang <jie.zhang@analog.com>:
1530         * config/bfin/predicates.md (p_register_operand): New predicate.
1531         (dp_register_operand): New predicate.
1532         * config/bfin/bfin-protos.h (WA_05000074): Define.
1533         (ENABLE_WA_05000074): Define.
1534         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
1535         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
1536         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
1537         (define_attr addrtype): Allow load/store register to be P register.
1538         (define_attr storereg): New.
1539         (define_cpu_unit anomaly_05000074): New.
1540         (define_insn_reservation dsp32shiftimm): New.
1541         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
1542         (define_insn_reservation loadp): Cannot use slot2.
1543         (define_insn_reservation loadsp): Cannot use slot2.
1544         (define_insn_reservation storep): Cannot use slot2. Does not
1545         apply when working around 05000074.
1546         (define_insn_reservation storep_anomaly_05000074): New.
1547         (define_insn_reservation storei): Does not apply when working
1548         around 05000074.
1549         (define_insn_reservation storei_anomaly_05000074): New.
1550         (define_attr length): Add dsp32shiftimm case.
1551         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
1552         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
1553         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
1554         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
1555         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
1556
1557 2009-09-07  Martin Jambor  <mjambor@suse.cz>
1558
1559         PR middle-end/41282
1560         * tree-sra.c (create_artificial_child_access): Return NULL if
1561         build_ref_for_offset fails.
1562         (propagate_subacesses_accross_link): Allow build_ref_for_offset
1563         and create_artificial_child_access to fail.
1564
1565 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
1566
1567         PR c++/41214
1568         * unwind-dw2.c (uw_init_context_1): Mark noinline.
1569         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
1570         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
1571
1572 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1573
1574         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
1575         block, ensure it has an exit edge.  Emit a barrier after a jump.
1576
1577 2009-09-07  Nick Clifton  <nickc@redhat.com>
1578
1579         * gcc.c (this_is_linker_script): New variable.  Like
1580         this_is_library_file but for the %T constructor.
1581         (end_going_arg): If this_is_linker_script is set then locate the
1582         script and insert a --script switch before it
1583         (do_spec_2): Initialise this_is_linker_script.
1584         (do_spec_1): Likewise.  Handle %T construct.
1585         (eval_spec_function): Preserve this_is_linker_script.
1586         * doc/invoke.texi: Document %T construct in spec files.
1587         * config/m32c/m32c.h (LIB_SPEC): Use it.
1588
1589 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1590
1591         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
1592         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
1593         when volatile flag is set.
1594         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
1595
1596 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
1597
1598         PR bootstrap/41241
1599         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
1600         (combine_stack_adjustments_for_block): Allow insns between stack
1601         adjustments and stores with corresponding pre-(dec|inc)rement or
1602         pre-modify operation.
1603
1604 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
1605
1606         PR bootstrap/41241
1607         * combine-stack-adj.c (struct csa_memlist): Rename to...
1608         (struct csa_reflist): ... this.  Rename mem field to ref.
1609         (free_csa_memlist): Rename to...
1610         (free_csa_reflist): ... this.
1611         (record_one_stack_memref): Rename to...
1612         (record_one_stack_ref): ... this.  Handle also REG_P.
1613         (try_apply_stack_adjustment): Handle also REG_P.
1614         (struct record_stack_memrefs_data): Rename to...
1615         (struct record_stack_refs_data): ... this.  Rename memlist field to
1616         reflist.
1617         (record_stack_memrefs): Rename to...
1618         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
1619         subexpressions instead of failing when a MEM contains SP references.
1620         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
1621         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
1622
1623 2009-09-06  Richard Guenther  <rguenther@suse.de>
1624
1625         PR middle-end/41144
1626         * tree.c (build_array_type): Do not record types marked
1627         with structural equality in the canonical type hashtable.
1628
1629 2009-09-06  Richard Guenther  <rguenther@suse.de>
1630
1631         PR middle-end/41261
1632         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
1633
1634 2009-09-05  Richard Guenther  <rguenther@suse.de>
1635
1636         PR middle-end/41181
1637         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
1638
1639 2009-09-05  Richard Guenther  <rguenther@suse.de>
1640
1641         PR debug/41273
1642         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
1643
1644 2009-09-05  Richard Guenther  <rguenther@suse.de>
1645
1646         PR middle-end/41271
1647         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
1648         before comparing function argument types.
1649
1650 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1651
1652         PR target/41024
1653         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
1654         the assembler.
1655
1656 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1657
1658         Revert:
1659         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1660
1661         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1662         locators before emit_insn is called.
1663
1664 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1665
1666         PR bootstrap/41241
1667         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
1668         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
1669         (reginfo_init): Don't call allocate_reg_info.
1670
1671 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1672
1673         PR target/41262
1674         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
1675         NONDEBUG_INSN_P instead of INSN_P.
1676
1677 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1678
1679         PR debug/41225
1680         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
1681
1682 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1683
1684         PR target/41252
1685         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
1686         pattern of the split.
1687
1688 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1689
1690         * toplev.c (process_options): Move setter of flag_var_tracking
1691         before other tests that depend on it.  Move down setter of
1692         flag_rename_registers.  Don't enable var-tracking-assignments
1693         by default if selective scheduling is enabled.  Warn if both
1694         are enabled.
1695
1696 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1697
1698         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
1699         comment.  Use switch statement to catch overlaps between rtx
1700         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
1701         (IS_DECL_CODE): ... here. Remove.
1702         (check_value_is_not_decl): Remove.
1703         (dv_from_decl, dv_from_value): Check after conversion.
1704
1705 2009-09-04  Richard Guenther  <rguenther@suse.de>
1706
1707         PR middle-end/41257
1708         * (cgraph_finalize_compilation_unit): Move finalizing aliases
1709         after emitting tunks.  Move emitting thunks and ctors from ...
1710         (cgraph_optimize): ... here.  Remove redundant
1711         cgraph_analyze_functions.
1712         * varasm.c (find_decl_and_mark_needed): Remove no longer
1713         necessary check.
1714         (finish_aliases_1): Adjust check for thunk aliases.
1715
1716 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
1717
1718         * config/arm/arm.md (ctzsi2): Added braces
1719         to avoid warning that broke booststrap.
1720
1721 2009-09-04  Martin Jambor  <mjambor@suse.cz>
1722
1723         PR tree-optimization/41112
1724         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
1725         handle variable-bounded arrays.
1726         (expr_with_var_bounded_array_refs_p): New function.
1727         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
1728
1729 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
1730
1731         * config/s390/2097.md: Removed two incorrect bypasses.
1732         (z10_fsimpdf): Fixed latency.
1733         (z10_fhex): New insn_reservation.
1734         (z10_floaddf): Fixed latency.
1735         (z10_floadsf): Fixed latency.
1736         (z10_ftrunctf): Fixed latency.
1737         (z10_ftruncdf): Fixed latency.
1738         * config/s390/s390.c (z10_cost): Fixed values.
1739         (s390_adjust_priority): Added z10 path.
1740         * config/s390/s390.md (type): Added fhex.
1741         (*mov<mode>_64dfp): Updated type attribute.
1742         (*mov<mode>_64): Updated type attribute.
1743         (*mov<mode>_31): Updated type attribute.
1744         (*mov<mode>"): Likewise.
1745         * config/s390/2084.md (x_fsimpdf): Updated condition.
1746
1747 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1748
1749         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
1750         RTXs in the predicate for operand 1.
1751
1752 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
1753
1754         * config/arm/arm.md (UNSPEC_RBIT): New constant.
1755         (rbitsi2): New insn.
1756         (ctzsi2): New expand.
1757         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
1758
1759 2009-09-03  Martin Jambor  <mjambor@suse.cz>
1760
1761         * tree-sra.c (duplicate_expr_for_different_base): Removed.
1762         (create_artificial_child_access): Use build_ref_for_offset instead
1763         of duplicate_expr_for_different_base.
1764         (propagate_subacesses_accross_link): Likewise.
1765
1766 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
1767
1768         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
1769         of INSN_P.
1770         (mips16e_collect_argument_saves): Skip debug instructions.
1771         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
1772         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
1773         (r10k_insert_cache_barriers): Likewise.
1774         (mips_reorg_process_insns): Likewise.
1775
1776 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1777
1778         PR bootstrap/41241
1779         * ira.c (update_equiv_reg): Remove check on class likely spill.
1780
1781 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
1782
1783         PR debug/41236
1784         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
1785         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
1786         it or SUBREG.
1787
1788         PR debug/41238
1789         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
1790         the stack slot if it is passed by invisible reference.
1791         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
1792         by invisible reference.
1793
1794 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1795
1796         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1797         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
1798         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
1799         0.
1800         * config/bfin/sync.md: New file.
1801         * config/bfin/bfin.md: Include it.
1802         (UNSPEC_ATOMIC): New.
1803         (UNSPEC_ONES): Provide a unique number.
1804
1805         From Jie Zhang <jie.zhang@analog.com>:
1806         * config/bfin/bfin.c (ret_regs): New.
1807         (must_save_fp_p): Don't return true because of frame_pointer_needed.
1808         (must_save_rets_p): New.
1809         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
1810         current_function_is_leaf.
1811         (do_link): Likewise.
1812         (do_unlink): Likewise.
1813         (expand_interrupt_handler_prologue): Use ret_regs array.
1814         (expand_interrupt_handler_epilogue): Use ret_regs array and
1815         pass return register to gen_return_internal.
1816         (bfin_expand_epilogue): Pass return register to
1817         gen_return_internal.
1818         (bfin_expand_call): Explicitly clobber RETS.
1819         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
1820         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
1821         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
1822         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
1823         RETS.
1824         (return_internal): Take a reg rtx rather than the register number.
1825
1826 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
1827
1828         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
1829         when comparing against estimated_loop_iterations_int return.
1830
1831 2009-09-03  Richard Guenther  <rguenther@suse.de>
1832
1833         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
1834         eh_personality_libfunc.
1835
1836 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1837
1838         * tree-parloops.c (separate_decls_in_region): Add space.
1839
1840 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1841
1842         * tree-parloops.c (separate_decls_in_region): Change the condition
1843         checking if there are reductions in the loop.
1844
1845 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
1846
1847         PR tree-optimization/38275
1848         * tree-parloops.c (parallelize_loops): Replace profitability condition
1849         for expected number of iterations.
1850
1851 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1852
1853         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
1854         (bootstrap-debug): Explain conditions in which it becomes default.
1855         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
1856         make it add to it.
1857
1858 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
1859
1860         * doc/invoke.texi (Optimize Options): Move
1861         -finline-small-functions to the -O2 list.
1862
1863 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
1864
1865         * toplev.c (process_options): Enable var-tracking-assignments
1866         by default if var-tracking is enabled.
1867
1868 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
1869
1870         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
1871         barrier.
1872         * emit-rtl.c (prev_nonnote_insn_bb): New function.
1873         * rtl.h (prev_nonnote_insn_bb): Declare it.
1874
1875 2009-09-03  Diego Novillo  <dnovillo@google.com>
1876
1877         * cgraph.c (cgraph_node_for_decl): New.
1878         * cgraph.h (cgraph_node_for_decl): Declare.
1879         * tree.c (host_integerp): Return 0 if T is NULL.
1880
1881 2009-09-03  Diego Novillo  <dnovillo@google.com>
1882
1883         * tree.h (struct alias_pair): Move from varasm.c.
1884         (alias_pairs): Likewise.
1885         (TYPE_MAXVAL): Define.
1886         (TYPE_MINVAL): Define.
1887         (iterative_hash_host_wide_int): Declare.
1888         (remove_unreachable_alias_pairs): Declare.
1889         * tree-pass.h (pass_ipa_free_lang_data): Declare.
1890         * diagnostic.c (default_diagnostic_starter): Make extern.
1891         (default_diagnostic_finalizer): Make extern.
1892         * diagnostic.h (default_diagnostic_starter): Declare.
1893         (default_diagnostic_finalizer): Declare.
1894         (default_tree_printer): Declare.
1895         * toplev.c (default_tree_printer): Make extern.
1896
1897 2009-09-03  Richard Guenther  <rguenther@suse.de>
1898             Diego Novillo  <dnovillo@google.com>
1899
1900         * cgraph.c (cgraph_add_new_function): Remove gimplification.
1901         * cgraphunit.c (cgraph_expand_function): Do not emit
1902         associated thunks from here.
1903         (cgraph_emit_thunks): New.
1904         (cgraph_optimize): Call it.
1905         Return if any IPA pass finds an error.
1906         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
1907         by thunks.
1908
1909 2009-09-03  Simon Baldwin  <simonb@google.com>
1910             Rafael Espindola  <espindola@google.com>
1911             Richard Guenther  <rguenther@suse.de>
1912             Doug Kwan  <dougkwan@google.com>
1913             Diego Novillo  <dnovillo@google.com>
1914
1915         * tree.c: Include tree-pass.h, langhooks-def.h,
1916         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
1917         (free_lang_data_in_type): New.
1918         (need_assembler_name_p): New.
1919         (free_lang_data_in_block): New.
1920         (free_lang_data_in_decl): New.
1921         (struct free_lang_data_d): New.
1922         (add_tree_to_fld_list): New.
1923         (find_decls_types_r): New.
1924         (get_eh_types_for_runtime): New.
1925         (find_decls_types_in_eh_region): New.
1926         (find_decls_types_in_node): New.
1927         (find_decls_types_in_var): New.
1928         (free_lang_data_in_cgraph): New.
1929         (free_lang_data): New.
1930         (gate_free_lang_data): New.
1931         (pass_ipa_free_lang_data): New.
1932
1933 2009-09-03  Diego Novillo  <dnovillo@google.com>
1934
1935         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
1936         * langhooks.h (struct lang_hooks): Add field free_lang_data.
1937         (lang_hooks): Remove const qualifier.
1938         * ipa.c (cgraph_remove_unreachable_nodes): Call
1939         remove_unreachable_alias_pairs.
1940         * except.c (add_type_for_runtime): Check if TYPE has
1941         already been converted.
1942         (lookup_type_for_runtime): Likewise.
1943         (check_handled): Handle converted types.
1944         * varasm.c (remove_unreachable_alias_pairs): New.
1945         * gimple.c: Include demangle.h.
1946         (gimple_decl_printable_name): New.
1947         (gimple_fold_obj_type_ref): New.
1948         * gimple.h (gimple_decl_printable_name): Declare.
1949         (gimple_fold_obj_type_ref): Declare.
1950         * passes.c (init_optimization_passes): Add pass
1951         pass_ipa_free_lang_data.
1952         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
1953         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
1954
1955 2009-09-03  Diego Novillo  <dnovillo@google.com>
1956
1957         * c-lang.c (lang_hooks): Remove const qualifier.
1958
1959 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
1960
1961         * doc/install.texi (*-*-freebsd*): Update target information.
1962
1963 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
1964
1965         * hard-reg-set.h (call_fixed_regs): Remove.
1966         * reginfo.c (call_fixed_regs): Remove.
1967         (init_reg_sets_1): Remove initialization of call_fixed_regs.
1968         (globalize_reg): Don't use call_fixed_regs.
1969         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
1970         call_fixed_regs.
1971
1972 2009-09-01  Michael Matz  <matz@suse.de>
1973
1974         * expr.h (emit_storent_insn, expand_expr_real_1,
1975         expand_expr_real_2): Declare.
1976         * expr.c (emit_storent_insn, expand_expr_real_1,
1977         expand_expr_real_2): Export.
1978         (store_expr): Setting and evaluating dont_return_target is useless.
1979         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
1980         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
1981         * except.c (expand_resx_expr): Rename to ...
1982         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
1983         * except.h (expand_resx_stmt): Declare.
1984         * stmt.c: Add include gimple.h
1985         (expand_asm_expr): Rename to ...
1986         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
1987         (expand_case): Rewrite to take gimple statement.
1988         * tree.h (expand_asm_stmt): Declare.
1989         (expand_case): Change prototype.
1990         * Makefile.in (stmt.o): Depend on gimple.h.
1991         * builtins.c (expand_builtin_synchronize): Build gimple asm
1992         statement, not an ASM_EXPR.
1993         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
1994         gimple_to_tree, release_stmt_tree): Remove.
1995         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
1996         ggc_free, but hold comparison code and operands separately.
1997         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
1998         (expand_call_stmt, expand_gimple_stmt_1,
1999         expand_gimple_stmt): New helpers.
2000         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2001         release_stmt_tree.  Call expand_gimple_stmt instead.
2002         (expand_gimple_basic_block): Ditto.
2003
2004         * calls.c (emit_call_1): Don't look at EH regions here, make
2005         fntree parameter useless.
2006         (expand_call): New local rettype for TREE_TYPE(exp), use it
2007         throughout.  Remove local p, use addr instead.
2008         Don't look at EH regions here.
2009
2010 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
2011
2012         * doc/invoke.texi (-fsched-pressure): Document it.
2013         (-fsched-reg-pressure-heuristic): Remove it.
2014
2015         * reload.c (ira.h): Include.
2016         (find_reloads): Add choosing reload on number of small spilled
2017         classes.
2018
2019         * haifa-sched.c (ira.h): Include.
2020         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2021         saved_reg_pressure, curr_reg_live, saved_reg_live,
2022         region_ref_regs): New variables.
2023         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2024         initiate_reg_pressure_info, setup_ref_regs,
2025         initiate_bb_reg_pressure_info, save_reg_pressure,
2026         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2027         functions.
2028         (setup_insn_reg_pressure_info): New function.
2029         (rank_for_schedule): Add pressure checking and insn issue time.
2030         Remove comparison of insn reg weights.
2031         (ready_sort): Set insn reg pressure info.
2032         (update_register_pressure, setup_insn_max_reg_pressure,
2033         update_reg_and_insn_max_reg_pressure,
2034         sched_setup_bb_reg_pressure_info): New functions.
2035         (schedule_insn): Add code for printing and updating reg pressure info.
2036         (find_set_reg_weight, find_insn_reg_weight): Remove.
2037         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2038         (debug_ready_list): Print reg pressure info.
2039         (schedule_block): Ditto.  Check insn issue time.
2040         (sched_init): Set up sched_pressure_p.  Allocate and set up some
2041         reg pressure related info.
2042         (sched_finish): Free some reg pressure related info.
2043         (fix_tick_ready): Make insn always ready if pressure_p.
2044         (init_h_i_d): Don't call find_insn_reg_weight.
2045         (haifa_finish_h_i_d): Free insn reg pressure info.
2046
2047         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2048         ira_memory_move_cost, ira_class_hard_regs,
2049         ira_class_hard_regs_num, ira_no_alloc_regs,
2050         ira_available_class_regs, ira_reg_class_cover_size,
2051         ira_reg_class_cover, ira_class_translate): Move to ira.h.
2052
2053         * ira-lives.c (single_reg_class): Check mode to find how many
2054         registers are necessary for operand.
2055         (ira_implicitly_set_insn_hard_regs): New.
2056
2057         * common.opt (fsched-pressure): New options.
2058         (fsched-reg-pressure-heuristic): Remove.
2059
2060         * ira.c (setup_eliminable_regset): Rename to
2061         ira_setup_eliminable_regset.  Make it external.
2062         (expand_reg_info): Pass cover class to setup_reg_classes.
2063         (ira): Call resize_reg_info instead of allocate_reg_info.
2064
2065         * sched-deps.c: Include ira.h.
2066         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2067         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2068         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2069         mark_insn_hard_regno_birth, mark_insn_reg_birth,
2070         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2071         mark_insn_reg_store, mark_insn_reg_clobber,
2072         setup_insn_reg_pressure_info): New.
2073         (sched_analyze_1): Update implicit_reg_pending_uses.
2074         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2075         Use them to create dependencies.  Set insn reg uses and pressure
2076         info.  Process reg_pending_uses in one place.
2077         (free_deps): Free implicit sets.
2078         (remove_from_deps): Remove implicit sets if necessary.  Check
2079         implicit sets when clearing reg_last_in_use.
2080         (init_deps_global): Clear implicit_reg_pending_clobbers and
2081         implicit_reg_pending_uses.
2082
2083         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2084         ira_memory_move_cost, ira_class_hard_regs,
2085         ira_class_hard_regs_num, ira_no_alloc_regs,
2086         ira_available_class_regs, ira_reg_class_cover_size,
2087         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2088         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2089         ira_implicitly_set_insn_hard_regs): New prototypes.
2090
2091         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2092         cost_elements_num): New variables.
2093         (allocno_costs, total_costs): Rename to costs and
2094         total_allocno_costs.
2095         (COSTS_OF_ALLOCNO): Rename to COSTS.
2096         (allocno_pref): Rename to pref.
2097         (allocno_pref_buffer): Rename to pref_buffer.
2098         (common_classes): Rename to regno_cover_class.
2099         (COST_INDEX): New.
2100         (record_reg_classes): Set allocno attributes only if allocno_p.
2101         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2102         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2103         and COSTS_OF_ALLOCNO.
2104         (print_costs): Rename to print_allocno_costs.
2105         (print_pseudo_costs): New.
2106         (process_bb_node_for_costs): Split into 2 functions with new
2107         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2108         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2109         new parameter dump_file.  Use cost_elements_num instead of
2110         ira_allocnos_num.  Make one iteration if preferred classes were
2111         already calculated for scheduler.  Make 2 versions of code
2112         depending on allocno_p.
2113         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2114         regno_cover_class and COSTS instead of common_classes and
2115         COSTS_OF_ALLOCNO.
2116         (init_costs, finish_costs): New.
2117         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2118         init_costs and finish_costs.
2119         (ira_set_pseudo_classes): New.
2120
2121         * rtl.h (allocate_reg_info): Remove.
2122         (resize_reg_info): Change return type.
2123         (reg_cover_class): New.
2124         (setup_reg_classes): Add new parameter.
2125
2126         * sched-int.h (struct deps_reg): New member implicit_sets.
2127         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2128         (INCREASE_BITS): New macro.
2129         (struct reg_pressure_data, struct reg_use_data): New.
2130         (struct _haifa_insn_data): Remove reg_weight.  Add members
2131         reg_pressure, reg_use_list, reg_set_list, and
2132         reg_pressure_excess_cost_change.
2133         (struct deps): New member implicit_sets.
2134         (pressure_p): New variable.
2135         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2136         (struct reg_pressure_data, struct reg_use_data): New.
2137         (INSN_REG_WEIGHT): Remove.
2138         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2139         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2140         (sched_init_region_reg_pressure_info,
2141         sched_setup_bb_reg_pressure_info): New prototypes.
2142
2143         * reginfo.c (struct reg_pref): New member coverclass.
2144         (reg_cover_class): New function.
2145         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2146         (reg_info_size): New variable.
2147         (allocate_reg_info): Make static.  Setup reg_info_size.
2148         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2149         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2150
2151         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2152         the dependencies.
2153
2154         * sched-rgn.c (deps_join): Set up implicit_sets.
2155         (schedule_region): Set up region and basic blocks pressure
2156         relative info.
2157
2158         * passes.c (init_optimization_passes): Move
2159         pass_subregs_of_mode_init before pass_sched.
2160
2161 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2162
2163         * tree-sra.c (struct access): New field grp_hint.
2164         (dump_access): Dump grp_hint.
2165         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2166         multiple times.
2167         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2168         those which have been specifically read and somehow written to.
2169         (propagate_subacesses_accross_link): Set grp_hint of right child and
2170         also possibly of the left child.
2171
2172 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2173
2174         * tree-object-size.c (addr_object_size): Always use object_size_type
2175         0 or 2 when determining the pointer pointed object size.
2176
2177 2009-09-02  Richard Guenther  <rguenther@suse.de>
2178
2179         Revert
2180         2009-08-31  Richard Guenther  <rguenther@suse.de>
2181
2182         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2183         to query if the memory regions for memmove overlap.
2184         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2185         asserts on pointers, instead deal with odd trees.
2186         (ptr_derefs_may_alias_p): Likewise.
2187         (refs_may_alias_p_1): Constructor bases also never alias.
2188
2189 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2190
2191         Revert:
2192         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2193         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2194
2195 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2196
2197         * doc/invoke.texi (-fvar-tracking-assignments): New.
2198         (-fvar-tracking-assignments-toggle): New.
2199         (-fdump-final-insns=file): Mark filename as optional.
2200         (--param min-nondebug-insn-uid): New.
2201         (-gdwarf-@{version}): Mention version 4.
2202         * opts.c (common_handle_option): Accept it.
2203         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2204         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2205         insns as uses.  Don't reject change because of debug insn.
2206         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2207         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2208         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2209         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2210         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2211         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2212         * doc/gimple.texi (is_gimple_debug): New.
2213         (gimple_debug_bind_p): New.
2214         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2215         * doc/install.texi (bootstrap-debug): More details.
2216         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2217         (bootstrap-debug-lib): More details.
2218         (bootstrap-debug-ckovw): Update.
2219         (bootstrap-time): New.
2220         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2221         (insert_phi_nodes_for): Insert debug stmts.
2222         (rewrite_stmt): Take iterator.  Insert debug stmts.
2223         (rewrite_enter_block): Adjust.
2224         (maybe_replace_use_in_debug_stmt): New.
2225         (rewrite_update_stmt): Use it.
2226         (mark_use_interesting): Return early for debug stmts.
2227         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2228         stmts before replacing stmt.
2229         (move_computations_stmt): Likewise.
2230         * ira-conflicts.c (add_copies): Skip debug insns.
2231         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2232         (regstat_bb_compute_ri): Skip debug insns.
2233         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2234         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2235         check_loop_closed_ssa_stmt): Skip debug stmts.
2236         * tree-tailcall.c (find_tail_calls): Likewise.
2237         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2238         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2239         (build_var_debug_value_stat): Declare.
2240         (build_var_debug_value): Define.
2241         (target_for_debug_bind): Declare.
2242         * reload.c (find_equiv_reg): Skip debug insns.
2243         * rtlanal.c (reg_used_between_p): Skip debug insns.
2244         (side_effects_p): Likewise.
2245         (canonicalize_condition): Likewise.
2246         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2247         insns never depend on debug insns.
2248         (create_ddg_dep_no_link): Likewise.
2249         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2250         Don't add inter-loop dependencies for debug insns.
2251         (build_intra_loop_deps): Likewise.
2252         (create_ddg): Count debug insns.
2253         * ddg.h (struct ddg::num_debug): New.
2254         (num_backargs): Pair up with previous int field.
2255         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2256         -fcompare-debug-second.
2257         * final.c (get_attr_length_1): Skip debug insns.
2258         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2259         * gcc.c (invoke_as): Call compare-debug-dump-opt.
2260         (driver_self_specs): Map -fdump-final-insns to
2261         -fdump-final-insns=..
2262         (get_local_tick): New.
2263         (compare_debug_dump_opt_spec_function): Test for . argument and
2264         compute output name.  Compute temp output spec without flag name.
2265         Compute -frandom-seed.
2266         (OPT): Undef after use.
2267         * cfgloopanal.c (num_loop_insns): Skip debug insns.
2268         (average_num_loop_insns): Likewise.
2269         * params.h (MIN_NONDEBUG_INSN_UID): New.
2270         * gimple.def (GIMPLE_DEBUG): New.
2271         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2272         * auto-inc-dec.c (merge_in_block): Skip debug insns.
2273         (merge_in_block): Fix whitespace.
2274         * toplev.c (flag_var_tracking): Update comment.
2275         (flag_var_tracking_assignments): New.
2276         (flag_var_tracking_assignments_toggle): New.
2277         (process_options): Don't open final insns dump file if we're not
2278         going to write to it.  Compute defaults for var_tracking.
2279         * df-scan.c (df_insn_rescan_debug_internal): New.
2280         (df_uses_record): Handle debug insns.
2281         * haifa-sched.c (ready): Initialize n_debug.
2282         (contributes_to_priority): Skip debug insns.
2283         (dep_list_size): New.
2284         (priority): Use it.
2285         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
2286         they're ready.  Disregard previous debug insns to make decisions.
2287         (queue_insn): Never queue debug insns.
2288         (ready_add, ready_remove_first, ready_remove): Count debug insns.
2289         (schedule_insn): Don't reject debug insns because of issue rate.
2290         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2291         (queue_to_ready): Skip and discount debug insns.
2292         (choose_ready): Let debug insns through.
2293         (schedule_block): Check boundary debug insns.  Discount debug
2294         insns, schedule them early.  Adjust whitespace.
2295         (set_priorities): Check for boundary debug insns.
2296         (add_jump_dependencies): Use dep_list_size.
2297         (prev_non_location_insn): New.
2298         (check_cfg): Use it.
2299         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2300         stmts.
2301         (remove_unused_ivs): Reset debug stmts.
2302         * modulo-sched.c (const_iteration_count): Skip debug insns.
2303         (res_MII): Discount debug insns.
2304         (loop_single_full_bb_p): Skip debug insns.
2305         (sms_schedule): Likewise.
2306         (sms_schedule_by_order): Likewise.
2307         (ps_has_conflicts): Likewise.
2308         * caller-save.c (refmarker_fn): New.
2309         (save_call_clobbered_regs): Replace regs with saved mem in
2310         debug insns.
2311         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
2312         Call refmarker_fn mark for hardregnos.
2313         (mark_reg_as_referenced): New.
2314         (replace_reg_with_saved_mem): New.
2315         * ipa-pure-const.c (check_stmt): Skip debug stmts.
2316         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
2317         searching back.
2318         (cse_extended_basic_block): Skip debug insns.
2319         (count_reg_usage): Likewise.
2320         (is_dead_reg): New, split out of...
2321         (set_live_p): ... here.
2322         (insn_live_p): Use it for debug insns.
2323         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2324         (execute_optimize_stdarg): Likewise.
2325         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2326         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2327         changes in debug stmts as changes.
2328         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2329         (moveup_expr): Don't move across debug insns.  Don't move
2330         debug insn if it would create a bookkeeping block.
2331         (moveup_expr_cached): Don't use cache for debug insns that
2332         are heads of blocks.
2333         (compute_av_set_inside_bb): Skip debug insns.
2334         (sel_rank_for_schedule): Schedule debug insns first.  Remove
2335         dead code.
2336         (block_valid_for_bookkeeping_p); Support lax searches.
2337         (create_block_for_bookkeeping): Adjust block numbers when
2338         encountering debug-only blocks.
2339         (find_place_for_bookkeeping): Deal with debug-only blocks.
2340         (generate_bookkeeping_insn): Accept no place to insert.
2341         (remove_temp_moveop_nops): New argument full_tidying.
2342         (prepare_place_to_insert): Deal with debug insns.
2343         (advance_state_on_fence): Debug insns don't start cycles.
2344         (update_boundaries): Take fence as argument.  Deal with
2345         debug insns.
2346         (schedule_expr_on_boundary): No full_tidying on debug insns.
2347         (fill_insns): Deal with debug insns.
2348         (track_scheduled_insns_and_blocks): Don't count debug insns.
2349         (need_nop_to_preserve_insn_bb): New, split out of...
2350         (remove_insn_from_stream): ... this.
2351         (fur_orig_expr_not_found): Skip debug insns.
2352         * rtl.def (VALUE): Move up.
2353         (DEBUG_INSN): New.
2354         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2355         (nearest_common_dominator_of_uses): Take debug_stmts argument.
2356         Set it if debug stmts are found.
2357         (statement_sink_location): Skip debug stmts.  Propagate
2358         moving defs into debug stmts.
2359         * ifcvt.c (first_active_insn): Skip debug insns.
2360         (last_active_insns): Likewise.
2361         (cond_exec_process_insns): Likewise.
2362         (noce_process_if_block): Likewise.
2363         (check_cond_move_block): Likewise.
2364         (cond_move_convert_if_block): Likewise.
2365         (block_jumps_and_fallthru_p): Likewise.
2366         (dead_or_predicable): Likewise.
2367         * dwarf2out.c (debug_str_hash_forced): New.
2368         (find_AT_string): Add comment.
2369         (gen_label_for_indirect_string): New.
2370         (get_debug_string_label): New.
2371         (AT_string_form): Use it.
2372         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
2373         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
2374         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2375         several operations that cannot be represented with DWARF opcodes.
2376         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
2377         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2378         (dwarf2out_var_location): Take during-call mark into account.
2379         (output_indirect_string): Update comment.  Output if there are
2380         label and references.
2381         (prune_indirect_string): New.
2382         (prune_unused_types): Call it if debug_str_hash_forced.
2383         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2384         (dw_long_long_const): Remove.
2385         (struct dw_val_struct): Change val_long_long type to rtx.
2386         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2387         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2388         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
2389         component instead of HOST_BITS_PER_LONG.
2390         (output_loc_operands): Likewise.  For const8* assert
2391         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2392         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2393         rather than HOST_BITS_PER_LONG is >= 64.
2394         (add_AT_long_long): Remove val_hi and val_lo arguments, add
2395         val_const_double.
2396         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2397         HOST_BITS_PER_LONG for dw_val_class_long_long.
2398         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
2399         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
2400         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2401         DW_OP_stack_value.
2402         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2403         Handle DW_OP_implicit_value.
2404         (extract_int): Move prototype earlier.
2405         (mem_loc_descriptor): For SUBREG punt if inner
2406         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
2407         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
2408         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2409         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2410         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2411         instead of Pmode size.
2412         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
2413         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2414         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
2415         (concat_loc_descriptor, concatn_loc_descriptor,
2416         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2417         (add_location_or_const_value_attribute): Likewise.  For single
2418         location loc_lists attempt to use add_const_value_attribute
2419         for constant decls.  Add DW_AT_const_value even if
2420         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2421         in its expression.
2422         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2423         (control_flow_insn_p): Likewise.
2424         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2425         (separate_decls_in_region_debug_bind): New.
2426         (separate_decls_in_region): Process debug bind stmts afterwards.
2427         * recog.c (verify_changes): Handle debug insns.
2428         (extract_insn): Likewise.
2429         (peephole2_optimize): Skip debug insns.
2430         * dse.c (scan_insn): Skip debug insns.
2431         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2432         Pass it on.
2433         (setup_id_for_insn): Handle debug insns.
2434         (maybe_tidy_empty_bb): Adjust whitespace.
2435         (tidy_control_flow): Skip debug insns.
2436         (sel_remove_insn): Adjust for debug insns.
2437         (sel_estimate_number_of_insns): Skip debug insns.
2438         (create_insn_rtx_from_pattern): Handle debug insns.
2439         (create_copy_of_insn_rtx): Likewise.
2440         * sel-sched-.h (sel_bb_end): Declare.
2441         (sel_bb_empty_or_nop_p): New.
2442         (get_all_loop_exits): Use it.
2443         (_eligible_successor_edge_p): Likewise.
2444         (return_nop_to_pool): Adjust.
2445         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
2446         * ira-lives.c (process_bb_node_lives): Skip debug insns.
2447         * gimple-pretty-print.c (dump_gimple_debug): New.
2448         (dump_gimple_stmt): Use it.
2449         (dump_bb_header): Skip gimple debug stmts.
2450         * regmove.c (optimize_reg_copy_1): Discount debug insns.
2451         (fixup_match_2): Likewise.
2452         (regmove_backward_pass): Likewise.  Simplify combined
2453         replacement.  Handle debug insns.
2454         * function.c (instantiate_virtual_regs): Handle debug insns.
2455         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
2456         * print-rtl.h: Include cselib.h.
2457         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
2458         * df.h (df_inns_rescan_debug_internal): Declare.
2459         * gcse.c (alloc_hash_table): Estimate n_insns.
2460         (cprop_insn): Don't regard debug insns as changes.
2461         (bypass_conditional_jumps): Skip debug insns.
2462         (one_pre_gcse_pass): Adjust.
2463         (one_code_hoisting_pass): Likewise.
2464         (compute_ld_motion_mems): Skip debug insns.
2465         (one_cprop_pass): Adjust.
2466         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
2467         (if_convertible_stmt_p): Handle debug stmts.
2468         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
2469         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
2470         * ira-build.c (create_bb_allocnos): Skip debug insns.
2471         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
2472         (has_single_use): Likewise.
2473         (single_imm_use): Likewise.
2474         (num_imm_uses): Likewise.
2475         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
2476         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
2477         (create_outofssa_var_map): Likewise.
2478         * lower-subreg.c (adjust_decomposed_uses): New.
2479         (resolve_debug): New.
2480         (decompose_multiword_subregs): Use it.
2481         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
2482         * emit-rtl.c: Include params.h.
2483         (cur_debug_insn_uid): Define.
2484         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
2485         (copy_rtx_if_shared_1): Handle debug insns.
2486         (reset_used_flags): Likewise.
2487         (set_used_flags): LIkewise.
2488         (get_max_insn_count): New.
2489         (next_nondebug_insn): New.
2490         (prev_nondebug_insn): New.
2491         (make_debug_insn_raw): New.
2492         (emit_insn_before_noloc): Handle debug insns.
2493         (emit_jump_insn_before_noloc): Likewise.
2494         (emit_call_insn_before_noloc): Likewise.
2495         (emit_debug_insn_before_noloc): New.
2496         (emit_insn_after_noloc): Handle debug insns.
2497         (emit_jump_insn_after_noloc): Likewise.
2498         (emit_call_insn_after_noloc): Likewise.
2499         (emit_debug_insn_after_noloc): Likewise.
2500         (emit_insn_after): Take loc from earlier non-debug insn.
2501         (emit_jump_insn_after): Likewise.
2502         (emit_call_insn_after): Likewise.
2503         (emit_debug_insn_after_setloc): New.
2504         (emit_debug_insn_after): New.
2505         (emit_insn_before): Take loc from later non-debug insn.
2506         (emit_jump_insn_before): Likewise.
2507         (emit_call_insn_before): Likewise.
2508         (emit_debug_insn_before_setloc): New.
2509         (emit_debug_insn_before): New.
2510         (emit_insn): Handle debug insns.
2511         (emit_debug_insn): New.
2512         (emit_jump_insn): Handle debug insns.
2513         (emit_call_insn): Likewise.
2514         (emit): Likewise.
2515         (init_emit): Take min-nondebug-insn-uid into account.
2516         Initialize cur_debug_insn_uid.
2517         (emit_copy_of_insn_after): Handle debug insns.
2518         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
2519         location of single rhs in place.
2520         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
2521         (floor_sdiv_adjust): New.
2522         (cell_sdiv_adjust): New.
2523         (cell_udiv_adjust): New.
2524         (round_sdiv_adjust): New.
2525         (round_udiv_adjust): New.
2526         (wrap_constant): Moved from cselib.
2527         (unwrap_constant): New.
2528         (expand_debug_expr): New.
2529         (expand_debug_locations): New.
2530         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
2531         debug bind stmts.
2532         (gimple_expand_cfg): Expand debug locations.
2533         * cselib.c: Include tree-pass.h.
2534         (struct expand_value_data): New.
2535         (cselib_record_sets_hook): New.
2536         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
2537         (cselib_clear_table): Move, and implemnet in terms of...
2538         (cselib_reset_table_with_next_value): ... this.
2539         (cselib_get_next_unknown_value): New.
2540         (discard_useless_locs): Don't discard preserved values.
2541         (cselib_preserve_value): New.
2542         (cselib_preserved_value_p): New.
2543         (cselib_preserve_definitely): New.
2544         (cselib_clear_preserve): New.
2545         (cselib_preserve_only_values): New.
2546         (new_cselib_val): Take rtx argument.  Dump it in details.
2547         (cselib_lookup_mem): Adjust.
2548         (expand_loc): Take regs_active in struct.  Adjust.  Silence
2549         dumps unless details are requested.
2550         (cselib_expand_value_rtx_cb): New.
2551         (cselib_expand_value_rtx): Rename and reimplment in terms of...
2552         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
2553         without details.  Copy more subregs.  Try to resolve values
2554         using a callback.  Wrap constants.
2555         (cselib_subst_to_values): Adjust.
2556         (cselib_log_lookup): New.
2557         (cselib_lookup): Call it.
2558         (cselib_invalidate_regno): Don't count preserved values as useless.
2559         (cselib_invalidate_mem): Likewise.
2560         (cselib_record_set): Likewise.
2561         (struct set): Renamed to cselib_set, moved to cselib.h.
2562         (cselib_record_sets): Adjust.  Call hook.
2563         (cselib_process_insn): Reset table when it would be cleared.
2564         (dump_cselib_val): New.
2565         (dump_cselib_table): New.
2566         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
2567         (remove_forwarder_block): Support moving debug stmts.
2568         * cselib.h (cselib_record_sets_hook): Declare.
2569         (cselib_expand_callback): New type.
2570         (cselib_expand_value_rtx_cb): Declare.
2571         (cselib_reset_table_with_next_value): Declare.
2572         (cselib_get_next_unknown_value): Declare.
2573         (cselib_preserve_value): Declare.
2574         (cselib_preserved_value_p): Declare.
2575         (cselib_preserve_only_values): Declare.
2576         (dump_cselib_table): Declare.
2577         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
2578         (try_crossjump_to_edge): Likewise.
2579         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
2580         dominated blocks when debug stmts are present.
2581         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
2582         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
2583         (set_var_live_on_entry): Likewise.
2584         * loop-invariant.c (find_invariants_bb): Skip debug insns.
2585         * cfglayout.c (curr_location, last_location): Make static.
2586         (set_curr_insn_source_location): Don't avoid bouncing.
2587         (get_curr_insn_source_location): New.
2588         (get_curr_insn_block): New.
2589         (duplicate_insn_chain): Handle debug insns.
2590         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
2591         into debug stmts.
2592         * common.opt (fcompare-debug): Move to sort order.
2593         (fdump-unnumbered-links): Likewise.
2594         (fvar-tracking-assignments): New.
2595         (fvar-tracking-assignments-toggle): New.
2596         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
2597         because of debug stmts.
2598         (mark_stmt_if_obviously_necessary): Mark debug stmts.
2599         (eliminate_unnecessary_stmts): Walk dominated blocks before
2600         dominators.
2601         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
2602         * ira.c (memref_used_between_p): Skip debug insns.
2603         (update_equiv_regs): Likewise.
2604         * sched-deps.c (sd_lists_size): Accept empty list.
2605         (sd_init_insn): Mark debug insns.
2606         (sd_finish_insn): Unmark them.
2607         (sd_add_dep): Reject non-debug deps on debug insns.
2608         (fixup_sched_groups): Give debug insns group treatment.
2609         Skip debug insns.
2610         (sched_analyze_reg): Don't mark debug insns for sched before call.
2611         (sched_analyze_2): Handle debug insns.
2612         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
2613         insns.
2614         (deps_analyze_insn): Handle debug insns.
2615         (deps_start_bb): Skip debug insns.
2616         (init_deps): Initialize last_debug_insn.
2617         * tree-ssa.c (target_for_debug_bind): New.
2618         (find_released_ssa_name): New.
2619         (propagate_var_def_into_debug_stmts): New.
2620         (propagate_defs_into_debug_stmts): New.
2621         (verify_ssa): Skip debug bind stmts without values.
2622         (warn_uninialized_vars): Skip debug stmts.
2623         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
2624         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
2625         (rtx_equal_p): Likewise.
2626         * ira-costs.c (scan_one_insn): Skip debug insns.
2627         (process_bb_node_for_hard_reg_moves): Likewise.
2628         * rtl.h (DEBUG_INSN_P): New.
2629         (NONDEBUG_INSN_P): New.
2630         (MAY_HAVE_DEBUG_INSNS): New.
2631         (INSN_P): Accept debug insns.
2632         (RTX_FRAME_RELATED_P): Likewise.
2633         (INSN_DELETED_P): Likewise
2634         (PAT_VAR_LOCATION_DECL): New.
2635         (PAT_VAR_LOCATION_LOC): New.
2636         (PAT_VAR_OCATION_STATUS): New.
2637         (NOTE_VAR_LOCATION_DECL): Reimplement.
2638         (NOTE_VAR_LOCATION_LOC): Likewise.
2639         (NOTE_VAR_LOCATION_STATUS): Likewise.
2640         (INSN_VAR_LOCATION): New.
2641         (INSN_VAR_LOCATION_DECL): New.
2642         (INSN_VAR_LOCATION_LOC): New.
2643         (INSN_VAR_LOCATION_STATUS): New.
2644         (gen_rtx_UNKNOWN_VAR_LOC): New.
2645         (VAR_LOC_UNKNOWN_P): New.
2646         (NOTE_DURING_CALL_P): New.
2647         (SCHED_GROUP_P): Accept debug insns.
2648         (emit_debug_insn_before): Declare.
2649         (emit_debug_insn_before_noloc): Declare.
2650         (emit_debug_insn_beore_setloc): Declare.
2651         (emit_debug_insn_after): Declare.
2652         (emit_debug_insn_after_noloc): Declare.
2653         (emit_debug_insn_after_setloc): Declare.
2654         (emit_debug_insn): Declare.
2655         (make_debug_insn_raw): Declare.
2656         (prev_nondebug_insn): Declare.
2657         (next_nondebug_insn): Declare.
2658         (delegitimize_mem_from_attrs): Declare.
2659         (get_max_insn_count): Declare.
2660         (wrap_constant): Declare.
2661         (unwrap_constant): Declare.
2662         (get_curr_insn_source_location): Declare.
2663         (get_curr_insn_block): Declare.
2664         * tree-inline.c (insert_debug_decl_map): New.
2665         (processing_debug_stmt): New.
2666         (remap_decl): Don't create new mappings in debug stmts.
2667         (remap_gimple_op_r): Don't add references in debug stmts.
2668         (copy_tree_body_r): Likewise.
2669         (remap_gimple_stmt): Handle debug bind stmts.
2670         (copy_bb): Skip debug stmts.
2671         (copy_edges_for_bb): Likewise.
2672         (copy_debug_stmt): New.
2673         (copy_debug_stmts): New.
2674         (copy_body): Copy debug stmts at the end.
2675         (insert_init_debug_bind): New.
2676         (insert_init_stmt): Take id.  Skip and emit debug stmts.
2677         (setup_one_parameter): Remap variable earlier, register debug mapping.
2678         (estimate_num_insns): Skip debug stmts.
2679         (expand_call_inline): Preserve debug_map.
2680         (optimize_inline_calls): Check for no debug_stmts left-overs.
2681         (unsave_expr_now): Preserve debug_map.
2682         (copy_gimple_seq_and_replace_locals): Likewise.
2683         (tree_function_versioning): Check for no debug_stmts left-overs.
2684         Init and destroy debug_map as needed.  Split edges unconditionally.
2685         (build_duplicate_type): Init and destroy debug_map as needed.
2686         * tree-inline.h: Include gimple.h instead of pointer-set.h.
2687         (struct copy_body_data): Add debug_stmts and debug_map.
2688         * sched-int.h (struct ready_list): Add n_debug.
2689         (struct deps): Add last_debug_insn.
2690         (DEBUG_INSN_SCHED_P): New.
2691         (BOUNDARY_DEBUG_INSN_P): New.
2692         (SCHEDULE_DEBUG_INSN_P): New.
2693         (sd_iterator_cond): Accept empty list.
2694         * combine.c (create_log_links): Skip debug insns.
2695         (combine_instructions): Likewise.
2696         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
2697         return value is always unshared.
2698         (struct rtx_subst_pair): New.
2699         (auto_adjust_pair): New.
2700         (propagate_for_debug_subst): New.
2701         (propagate_for_debug): New.
2702         (try_combine): Skip debug insns.  Propagate removed defs into
2703         debug insns.
2704         (next_nonnote_nondebug_insn): New.
2705         (distribute_notes): Use it.  Skip debug insns.
2706         (distribute_links): Skip debug insns.
2707         * tree-outof-ssa.c (set_location_for_edge): Likewise.
2708         * resource.c (mark_target_live_regs): Likewise.
2709         * var-tracking.c: Include cselib.h and target.h.
2710         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
2711         MO_VAL_SET.
2712         (micro_operation_type_name): New.
2713         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
2714         (struct micro_operation_def): Update comments.
2715         (decl_or_value): New type.  Use instead of decls.
2716         (struct emit_note_data_def): Add vars.
2717         (struct attrs_def): Use decl_or_value.
2718         (struct variable_tracking_info_def): Add permp, flooded.
2719         (struct location_chain_def): Update comment.
2720         (struct variable_part_def): Use decl_or_value.
2721         (struct variable_def): Make var_part a variable length array.
2722         (valvar_pool): New.
2723         (scratch_regs): New.
2724         (cselib_hook_called): New.
2725         (dv_is_decl_p): New.
2726         (dv_is_value_p): New.
2727         (dv_as_decl): New.
2728         (dv_as_value): New.
2729         (dv_as_opaque): New.
2730         (dv_onepart_p): New.
2731         (dv_pool): New.
2732         (IS_DECL_CODE): New.
2733         (check_value_is_not_decl): New.
2734         (dv_from_decl): New.
2735         (dv_from_value): New.
2736         (dv_htab_hash): New.
2737         (variable_htab_hash): Use it.
2738         (variable_htab_eq): Support values.
2739         (variable_htab_free): Free from the right pool.
2740         (attrs_list_member, attrs_list_insert): Use decl_or_value.
2741         (attrs_list_union): Adjust.
2742         (attrs_list_mpdv_union): New.
2743         (tie_break_pointers): New.
2744         (canon_value_cmp): New.
2745         (unshare_variable): Return possibly-modified slot.
2746         (vars_copy_1): Adjust.
2747         (var_reg_decl_set): Adjust.  Split out of...
2748         (var_reg_set): ... this.
2749         (get_init_value): Adjust.
2750         (var_reg_delete_and_set): Adjust.
2751         (var_reg_delete): Adjust.
2752         (var_regno_delete): Adjust.
2753         (var_mem_decl_set): Split out of...
2754         (var_mem_set): ... this.
2755         (var_mem_delete_and_set): Adjust.
2756         (var_mem_delete): Adjust.
2757         (val_store): New.
2758         (val_reset): New.
2759         (val_resolve): New.
2760         (variable_union): Adjust.  Speed up merge of 1-part vars.
2761         (variable_canonicalize): Use unshared slot.
2762         (VALUED_RECURSED_INTO): New.
2763         (find_loc_in_1pdv): New.
2764         (struct dfset_merge): New.
2765         (insert_into_intersection): New.
2766         (intersect_loc_chains): New.
2767         (loc_cmp): New.
2768         (canonicalize_loc_order_check): New.
2769         (canonicalize_values_mark): New.
2770         (canonicalize_values_star): New.
2771         (variable_merge_over_cur): New.
2772         (variable_merge_over_src): New.
2773         (dataflow_set_merge): New.
2774         (dataflow_set_equiv_regs): New.
2775         (remove_duplicate_values): New.
2776         (struct dfset_post_merge): New.
2777         (variable_post_merge_new_vals): New.
2778         (variable_post_merge_perm_vals): New.
2779         (dataflow_post_merge_adjust): New.
2780         (find_mem_expr_in_1pdv): New.
2781         (dataflow_set_preserve_mem_locs): New.
2782         (dataflow_set_remove_mem_locs): New.
2783         (dataflow_set_clear_at_call): New.
2784         (onepart_variable_different_p): New.
2785         (variable_different_p): Use it.
2786         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
2787         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
2788         if not needed.
2789         (track_loc_p): Pass it true.
2790         (struct count_use_info): New.
2791         (find_use_val): New.
2792         (replace_expr_with_values): New.
2793         (log_op_type): New.
2794         (use_type): New, partially split out of...
2795         (count_uses): ... this.  Count new micro-ops.
2796         (count_uses_1): Adjust.
2797         (count_stores): Adjust.
2798         (count_with_sets): New.
2799         (VAL_NEEDS_RESOLUTION): New.
2800         (VAL_HOLDS_TRACK_EXPR): New.
2801         (VAL_EXPR_IS_COPIED): New.
2802         (VAL_EXPR_IS_CLOBBERED): New.
2803         (add_uses): Adjust.  Generate new micro-ops.
2804         (add_uses_1): Adjust.
2805         (add_stores): Generate new micro-ops.
2806         (add_with_sets): New.
2807         (find_src_status): Adjust.
2808         (find_src_set_src): Adjust.
2809         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
2810         Handle new micro-ops.  Canonicalize value equivalances.
2811         (vt_find_locations): Compute total size of hash tables for
2812         dumping.  Perform merge for var-tracking-assignments.  Don't
2813         disregard single-block loops.
2814         (dump_attrs_list): Handle decl_or_value.
2815         (dump_variable): Take variable.  Deal with decl_or_value.
2816         (dump_variable_slot): New.
2817         (dump_vars): Use it.
2818         (dump_dataflow_sets): Adjust.
2819         (set_slot_part): New, extended to support one-part variables
2820         after splitting out of...
2821         (set_variable_part): ... this.
2822         (clobber_slot_part): New, split out of...
2823         (clobber_variable_part): ... this.
2824         (delete_slot_part): New, split out of...
2825         (delete_variable_part): .... this.
2826         (check_wrap_constant): New.
2827         (vt_expand_loc_callback): New.
2828         (vt_expand_loc): New.
2829         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
2830         EMIT_NOTE_AFTER_CALL_INSN.
2831         (emit_notes_for_differences_1): Adjust.  Handle values.
2832         (emit_notes_for_differences_2): Likewise.
2833         (emit_notes_for_differences): Adjust.
2834         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
2835         Adjust.  Handle new micro-ops.
2836         (vt_add_function_parameters): Adjust.  Create and bind values.
2837         (vt_initialize): Adjust.  Initialize scratch_regs and
2838         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
2839         operations.  Move some code to count_with_sets and add_with_sets.
2840         (delete_debug_insns): New.
2841         (vt_debug_insns_local): New.
2842         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
2843         cselib.
2844         (var_tracking_main): If var-tracking-assignments is enabled
2845         but var-tracking isn't, delete debug insns and leave.  Likewise
2846         if we exceed limits or fail the stack adjustments tests, and
2847         after all var-tracking processing.
2848         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
2849         (dataflow_set): Add traversed_vars.
2850         (value_chain, const_value_chain): New typedefs.
2851         (value_chain_pool, value_chains): New variables.
2852         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
2853         add_value_chains, add_cselib_value_chains, remove_value_chain,
2854         remove_value_chains, remove_cselib_value_chains): New functions.
2855         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
2856         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
2857         static inlines.
2858         (shared_hash_find_slot_unshare, shared_hash_find_slot,
2859         shared_hash_find_slot_noinsert, shared_hash_find): Update.
2860         (dst_can_be_shared): New variable.
2861         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
2862         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
2863         different from set->vars, look up slot again instead of using the
2864         passed in slot.
2865         (dataflow_set_init): Initialize traversed_vars.
2866         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
2867         lookup if set->vars is shared.  Don't keep slot cleared before
2868         calling unshare_variable.  Unshare set->vars if needed.  Adjust
2869         unshare_variable callers.  Clear dst_can_be_shared if needed.
2870         Even ->refcount == 1 vars must be unshared if set->vars is shared
2871         and var needs to be modified.
2872         (dataflow_set_union): Set traversed_vars during canonicalization.
2873         (VALUE_CHANGED, DECL_CHANGED): Define.
2874         (set_dv_changed, dv_changed_p): New static inlines.
2875         (track_expr_p): Clear DECL_CHANGED.
2876         (dump_dataflow_sets): Set it.
2877         (variable_was_changed): Call set_dv_changed.
2878         (emit_note_insn_var_location): Likewise.
2879         (changed_variables_stack): New variable.
2880         (check_changed_vars_1, check_changed_vars_2): New functions.
2881         (emit_notes_for_changes): Do nothing if changed_variables is
2882         empty.  Traverse changed_variables with check_changed_vars_1,
2883         call check_changed_vars_2 on each changed_variables_stack entry.
2884         (emit_notes_in_bb): Add SET argument.  Just clear it at the
2885         beginning, use it instead of local &set, don't destroy it at the end.
2886         (vt_emit_notes): Call dataflow_set_clear early on all
2887         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
2888         computed set, dataflow_set_clear also VTI(bb)->in when we are
2889         done with the basic block.  Initialize changed_variables_stack,
2890         free it afterwards.  If ENABLE_CHECKING verify that after noting
2891         differences to an empty set value_chains hash table is empty.
2892         (vt_initialize): Initialize value_chains and value_chain_pool.
2893         (vt_finalize): Delete value_chains htab, free value_chain_pool.
2894         (variable_tracking_main): Call dump_dataflow_sets before calling
2895         vt_emit_notes, not after it.
2896         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
2897         (propagate_var_def_into_debug_stmts): Declare.
2898         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
2899         (df_set_note): Reject debug insns.
2900         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
2901         add notes to debug insns.
2902         (df_note_bb_compute): Adjust.  Likewise.
2903         (df_simulate_uses): Skip debug insns.
2904         (df_simulate_initialize_backwards): Likewise.
2905         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
2906         (subst_stack_regs_pat): Reject debug insns.
2907         (convert_regs_1): Handle debug insns.
2908         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
2909         (print-rtl.o): Depend on cselib.h.
2910         (cselib.o): Depend on TREE_PASS_H.
2911         (var-tracking.o): Depend on cselib.h and TARGET_H.
2912         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
2913         (init_ready_list): Skip boundary debug insns.
2914         (add_branch_dependences): Skip debug insns.
2915         (free_block_dependencies): Check for blocks with only debug insns.
2916         (compute_priorities): Likewise.
2917         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
2918         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
2919         all callers.
2920         (gimple_build_debug_bind_stat): New.
2921         (empty_body_p): Skip debug stmts.
2922         (gimple_has_side_effects): Likewise.
2923         (gimple_rhs_has_side_effects): Likewise.
2924         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
2925         (gimple_build_debug_bind_stat): Declare.
2926         (gimple_build_debug_bind): Define.
2927         (is_gimple_debug): New.
2928         (gimple_debug_bind_p): New.
2929         (gimple_debug_bind_get_var): New.
2930         (gimple_debug_bind_get_value): New.
2931         (gimple_debug_bind_get_value_ptr): New.
2932         (gimple_debug_bind_set_var): New.
2933         (gimple_debug_bind_set_value): New.
2934         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
2935         (gimple_debug_bind_reset_value): New.
2936         (gimple_debug_bind_has_value_p): New.
2937         (gsi_next_nondebug): New.
2938         (gsi_prev_nondebug): New.
2939         (gsi_start_nondebug_bb): New.
2940         (gsi_last_nondebug_bb): New.
2941         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
2942         (print_insn): Handle DEBUG_INSN.
2943         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
2944         of first insn prevail.
2945         (first_stmt): Skip debug stmts.
2946         (first_non_label_stmt): Likewise.
2947         (last_stmt): Likewise.
2948         (has_zero_uses_1): New.
2949         (single_imm_use_1): New.
2950         (verify_gimple_debug): New.
2951         (verify_types_in_gimple_stmt): Handle debug stmts.
2952         (verify_stmt): Likewise.
2953         (debug_loop_num): Skip debug stmts.
2954         (remove_edge_and_dominated_blocks): Remove dominators last.
2955         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
2956         (linearize_expr): Likewise.
2957         * config/i386/i386.c (ix86_delegitimize_address): Call
2958         default implementation.
2959         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
2960         (group_barrier_needed): Skip debug insns.
2961         (emit_insn_group_barriers): Likewise.
2962         (emit_all_insn_group_barriers): Likewise.
2963         (ia64_variable_issue): Handle debug insns.
2964         (ia64_dfa_new_cycle): Likewise.
2965         (final_emit_insn_group_barriers): Skip debug insns.
2966         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
2967         def cfa without frame.
2968         (process_set): Likewise.
2969         (process_for_unwind_directive): Pass frame on.
2970         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
2971         (rs6000_delegitimize_address): New.
2972         (rs6000_debug_adjust_cost): Handle debug insns.
2973         (is_microcoded_insn): Likewise.
2974         (is_cracked_insn): Likewise.
2975         (is_nonpipeline_insn): Likewise.
2976         (insn_must_be_first_in_group): Likewise.
2977         (insn_must_be_last_in_group): Likewise.
2978         (force_new_group): Likewise.
2979         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
2980         contains only debug insns.
2981         (rtl_merge_blocks): Skip debug insns.
2982         (purge_dead_edges): Likewise.
2983         (rtl_block_ends_with_call_p): Skip debug insns.
2984         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
2985         (mark_reg_dependencies): Skip debug insns.
2986         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
2987         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
2988         * tree-ssa-threadedge.c
2989         (record_temporary_equivalences_from_stmts): Skip debug stmts.
2990         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
2991         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
2992         (copyprop_hardreg_forward_1): Handle debug insns.
2993         * reload1.c (reload): Skip debug insns.  Replace unassigned
2994         pseudos in debug insns with their equivalences.
2995         (eliminate_regs_in_insn): Skip debug insns.
2996         (emit_input_reload_insns): Skip debug insns at first, adjust
2997         them later.
2998         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
2999         (get_indirect_ref_operands): Pass opf_no_vops on.
3000         (get_expr_operands): Likewise.  Skip debug stmts.
3001         (parse_ssa_operands): Scan debug insns with opf_no_vops.
3002
3003 2009-09-01  Richard Henderson  <rth@redhat.com>
3004
3005         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3006         stmt_ends_pp_p statements at least once.
3007         * tree-vrp.c (vrp_initialize): Likewise.
3008         (vrp_visit_stmt): Be prepared for non-interesting stmts.
3009
3010 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
3011
3012         PR bootstrap/41205
3013         Fix AIX bootstrap after PR debug/30161
3014         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3015         that is a GNU extension.
3016         (tmpl_value_parm_die_table): Move the definition of this global
3017         outside #ifdef DWARF2_DEBUGGING_INFO region.
3018
3019 2009-09-01  Richard Guenther  <rguenther@suse.de>
3020
3021         * tree.c (tree_expr_size): New function.
3022         * tree.h (tree_expr_size): Declare.
3023         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3024         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3025         * langhooks.c (lhd_expr_size): Remove.
3026         * langhooks.h (struct lang_hooks): Remove expr_size.
3027         * explow.c (expr_size): Use tree_expr_size.
3028         (int_expr_size): Likewise.
3029         * langhooks-def.h (lhd_expr_size): Remove.
3030         (LANG_HOOKS_EXPR_SIZE): Likewise.
3031         (LANG_HOOKS_INITIALIZER): Adjust.
3032
3033 2009-09-01  Richard Guenther  <rguenther@suse.de>
3034
3035         * tree-flow.h (mark_addressable): Move declaration ...
3036         * tree.h (mark_addressable): ... here.
3037         * stmt.c (expand_asm_operands): Use mark_addressable, not
3038         lang_hooks.mark_addressable.
3039         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3040         LANG_HOOKS_MARK_ADDRESSABLE.
3041         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3042         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3043
3044 2009-08-31  Chris Demetriou  <cgd@google.com>
3045
3046         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3047         vectorize if not TARGET_SSE2.
3048
3049 2009-08-31  DJ Delorie  <dj@redhat.com>
3050
3051         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3052         registers if no coprocessor is enabled.
3053
3054 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
3055
3056         PR debug/30161
3057         * cgraph.h (cgraph_get_node): Declare ...
3058         * cgraph.c (cgraph_get_node): ... new function.
3059         * dwarf2out.c (gen_generic_params_dies,
3060         generic_parameter_die, tree_add_const_value_attribute_for_decl,
3061         make_ith_pack_parameter_name,
3062         append_entry_to_tmpl_value_parm_die_table,
3063         gen_remaining_tmpl_value_param_die_attribute): New functions.
3064         (gen_subprogram_die): Generate debug info for template parameters
3065         if debug info level is higher than DINFO_LEVEL_TERSE.
3066         Use tree_add_const_value_attribute_for_decl instead of
3067         tree_add_const_value_attribute.
3068         (gen_const_die): Use tree_add_const_value_attribute_for_decl
3069         instead of tree_add_const_value_attribute.
3070         (gen_struct_or_union_type_die): Generate debug
3071         info for template parameters if debug info level is higher than
3072         DINFO_LEVEL_TERSE.
3073         (tree_add_const_value_attribute): Handle integral and pointer
3074         constants. Update comment.
3075         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3076         (dwarf_attr_name): Support DW_AT_GNU_template_name.
3077         (reference_to_unused): Fix thinko. Remove redundant predicates from
3078         tests.
3079         (tree_add_const_value_attribute): Make this work for constant
3080         expressions only.
3081         tree_add_const_value_attribute_for_decl is to be used for variable
3082         DECLs now.
3083         (add_location_or_const_value_attribute): Use
3084         tree_add_const_value_attribute_for_decl now.
3085         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3086         DW_TAG_template_value_param DIEs after function DIEs have been
3087         emitted.
3088         * langhooks.h (lang_hooks_for_types): Add
3089         get_argument_pack_elems.
3090         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3091         (lang_hooks): Added get_innermost_generic_parms,
3092         get_innermost_generic_args.
3093         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3094         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3095         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3096         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3097
3098 2009-08-31  DJ Delorie  <dj@redhat.com>
3099
3100         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3101         it once we start generating the prologue or epilogue.
3102         (mep_call_saves_register): If the frame is locked, re-use
3103         cached values.
3104         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3105         (mep_expand_prologue): Call it.
3106         (mep_expand_epilogue): Likewise.
3107         (mep_start_function): Use the same logic as mep_expand_prologue.
3108         (mep_pass_by_reference): Make logic more readable.
3109         (mep_return_in_memory): Zero-sized objects are passed in memory.
3110         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3111
3112 2009-08-31  Richard Guenther  <rguenther@suse.de>
3113
3114         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3115         to query if the memory regions for memmove overlap.
3116         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3117         asserts on pointers, instead deal with odd trees.
3118         (ptr_derefs_may_alias_p): Likewise.
3119         (refs_may_alias_p_1): Constructor bases also never alias.
3120
3121 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3122
3123         * doc/install.texi (Final install): Adjust reference on where to
3124         order printed manuals.
3125
3126 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3127
3128         * dwarf2out.c (switch_to_frame_table_section): Move
3129         definition prior to first use.
3130
3131 2009-08-30  Richard Guenther  <rguenther@suse.de>
3132
3133         PR tree-optimization/41186
3134         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3135         (ao_ref_init_from_ptr_and_size): New function.
3136         (ref_maybe_used_by_call_p_1): Be more precise tracking
3137         used ranges for builtin functions.
3138         (ref_maybe_used_by_call_p): Adjust.
3139         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3140         ranges for builtin functions.
3141         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3142
3143 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3144
3145         PR target/41081
3146         * fwprop.c (get_reg_use_in): Delete.
3147         (free_load_extend): New function.
3148         (forward_propagate_subreg): Use it.
3149
3150 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3151
3152         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3153
3154 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3155
3156         PR/41184
3157         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3158         padding.
3159
3160 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3161
3162         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3163         fini or fini_array section.
3164
3165 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3166
3167         * graphite-dependences.c (graphite_legal_transform_bb): Call
3168         pbb_remove_duplicate_pdrs.
3169         * graphite-poly.c (can_collapse_pdr): Removed.
3170         (pdr_find_duplicate): Removed.
3171         (can_collapse_pdrs): New.
3172         (pbb_remove_duplicate_pdrs): New.
3173         (new_poly_dr): Do not look for duplicates.
3174         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3175         (PBB_PDR_DUPLICATES_REMOVED): New.
3176         (pbb_remove_duplicate_pdrs): Declared.
3177
3178 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3179
3180         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3181         the strides by multiplying by PDR_NB_REFS.
3182         * graphite-poly.c (can_collapse_pdr): New.
3183         (pdr_find_duplicate): New.
3184         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3185         Initialize PDR_NB_REFS.
3186         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3187         (PDR_NB_REFS): New.
3188         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3189
3190 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3191
3192         PR middle-end/40965
3193         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3194         any transform.
3195
3196 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3197
3198         * graphite-dependences.c (pddr_original_scattering): Return NULL
3199         for read-read dependence relations.
3200         * graphite-poly.h (enum poly_dr_type): Fix comment.
3201         (pdr_read_p): New.
3202         (pdr_write_p): New.
3203         (pdr_may_write_p): New.
3204
3205 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3206
3207         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3208         (struct poly_dr): Same.
3209         (new_poly_dr): Same.
3210         * graphite-poly.c (new_poly_dr): Same.
3211         * graphite-dependences.c (dot_deps): Disable call to system.
3212
3213 2009-08-28  Cary Coutant  <ccoutant@google.com>
3214
3215         PR debug/41063
3216         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3217         struct/union/enum types local to a function.
3218
3219 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3220             Sebastian Pop  <sebastian.pop@amd.com>
3221
3222         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3223         pbb_strip_mine_time_depth.  Changed the implementation so that
3224         transformation is expressed as a transformation on
3225         time (scatttering) dimensions.  Also, ensures that the 2d+1
3226         scheduling format is preserved.
3227         (pbb_strip_mine_profitable_p): Profitability is based on the
3228         iteration number of a given time (scattering) dimension,
3229         and not on a original loop depth dimension.
3230         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3231         (pbb_do_strip_mine): Call psct_dynamic_dim.
3232         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3233         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3234         (pbb_nb_dynamic_scattering_transform): New.
3235         (psct_dynamic_dim): New.
3236
3237 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3238
3239         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3240         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3241         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3242         * graphite-interchange.c (build_linearized_memory_access): Same.
3243         (memory_stride_in_loop): Same.
3244
3245 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3246
3247         * graphite-dependences.c (pddr_original_scattering): New.
3248         (graphite_legal_transform_dr): Call pddr_original_scattering.
3249         (dot_deps_1): New.
3250         (dot_deps): New.
3251         * graphite-dependences.h (dot_deps): Declared.
3252         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3253         (print_pdr): Print PDR_ID.
3254         * graphite-poly.h (struct poly_dr): Add field id.
3255         (PDR_ID): New.
3256         (pbb_index): New.
3257         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3258
3259 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3260
3261         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3262         not delete the original dependence relation.
3263
3264 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3265
3266         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3267         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3268         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3269         (free_poly_ddr): New.
3270         (pddr_is_empty): New.
3271         (dependence_polyhedron_1): Now returns a poly_ddr_p.
3272         (dependence_polyhedron): Same.  Remove useless gcc_assert.
3273         Remove fprintfs.
3274         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3275         (graphite_carried_dependence_level_k): Call pddr_is_empty.
3276         * graphite-dependences.h (enum poly_dependence_kind): New.
3277         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
3278         (PDRP_SOURCE): Renamed PDDR_SOURCE.
3279         (PDRP_SINK): Renamed PDDR_SINK.
3280         (PDRP_DDP): Renamed PDDR_DDP.
3281         (PDDR_KIND): New.
3282         (free_poly_ddr): Declared.
3283         * graphite-poly.c (new_scop): Use the new hash function names.
3284         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3285         into original_pddrs.
3286         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3287
3288 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3289
3290         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3291         bounds with LT_EXPR to make niter analysis more precise on code
3292         generated by Graphite.
3293
3294 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3295
3296         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3297         (graphite_legal_transform_bb): Same.
3298         (poly_drs_may_alias_p): Same.
3299
3300 2009-08-28  Richard Guenther  <rguenther@suse.de>
3301
3302         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3303
3304 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3305
3306         * config/i386/netware.c: Include langhooks.h.
3307         (i386_nlm_encode_section_info): Simplify.
3308         (netware_override_options): Delete.
3309         * config/i386/netware.h (netware_override_options): Delete
3310         declaration.
3311         (OVERRIDE_OPTIONS): Delete definition.
3312         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3313         (ASM_COMMENT_START): Define.
3314         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3315
3316 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3317
3318         * configure.ac: For in-tree ld, do a plain version check to
3319         determine whether comdat groups are supported.
3320         * configure: Regenerate.
3321
3322 2009-08-28  Olivier Hainque  <hainque@adacore.com>
3323
3324         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3325         always defined.  Reflect definition or absence of such for
3326         COLLECT_EXPORT_LIST.  Readability helper.
3327         (scanfilter): New enum, to help control what symbols
3328         are to be considered or ignored by scan_prog_file.
3329         (enum pass): Rename as "scanpass", moved together with scanfilter
3330         prior to scan_prog_file's prototype.
3331         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3332         Group prototype with the scanpass/scanfilter definitions, factorize
3333         head comments for the several implementations at the prototype.
3334         (main): Reorganize the first pass link control to let AIX
3335         drag only the needed frame tables in executables.  Prevent
3336         frame tables collection during the scan aimed at static ctors.
3337         Pre-link and scan for frame tables later to compensate.
3338         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3339         A C statement to issue assembly directives that create a reference
3340         to the given DWARF table identifier label from the current function
3341         section.
3342         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3343         to differentiate first time section entry.  Only emit a .data
3344         tables start identifier label the first time around.
3345         (switch_to_frame_table_section): New function.  Helper for
3346         output_call_frame_info to switch possibly BACK into the eh_frame
3347         or the debug_frame section depending on FOR_EH.
3348         (output_call_frame_info): Use helper to first enter the proper
3349         frame section.
3350         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3351         emit a link to the frame table start label from each function
3352         section.
3353         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3354         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3355         * config/rs6000/rs6000-protos.h: Declare it.
3356         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3357
3358 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3359
3360         * config/sh/sh.c (split_branches): Check the result of
3361         next_active_insn.
3362
3363 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
3364
3365         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3366         using -pthread -fopenmp
3367
3368 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
3369
3370         * doc/service.texi (service directory): Update URL.
3371
3372 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
3373
3374         PR rtl-optimization/40861
3375         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3376         extract word from a multi-word subreg for negative byte positions.
3377
3378 2009-08-27  Tristan Gingold  <gingold@adacore.com>
3379             Douglas B Rupp  <rupp@gnat.com>
3380
3381         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3382         (SECTION_VMS_OVERLAY): Define.
3383         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
3384         attribute.
3385         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
3386         for common_object.
3387         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
3388         common_object declarations.
3389         (ia64_section_type_flags): Set section flag for common_object.
3390         * config/ia64/ia64-protos.h
3391         (ia64_vms_output_aligned_decl_common): Declare.
3392         (ia64_vms_elf_asm_named_section): Declare.
3393
3394 2009-08-27  Michael Matz  <matz@suse.de>
3395
3396         * expr.c (expand_expr_real_2): New function taking exploded
3397         unary or binary expression, split out from ...
3398         (expand_expr_real_1): ... here.  Move over all unary/binary
3399         switch parts to above function, in particular these codes:
3400         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3401         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3402         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3403         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3404         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3405         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3406         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3407         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3408         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3409         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3410         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3411         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3412         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3413         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3414         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3415         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3416         VEC_PACK_FIX_TRUNC_EXPR.
3417         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3418         full expression.
3419
3420 2009-08-27  Richard Guenther  <rguenther@suse.de>
3421
3422         * gengtype.c (main): Handle uint64_t.
3423         * ipa-utils.c (get_base_var): Indent properly.
3424         * tree-ssa-live.c (debug_scope_block): New function.
3425         * tree-flow.h (debug_scope_block): Declare.
3426         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3427         * basic-block.h (enum profile_status): Rename to
3428         enum profile_status_d.
3429         (x_profile_status): Adjust type.
3430
3431 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
3432
3433         PR debug/41170
3434         * dwarf2out.c (get_context_die): Declare this static function.
3435         (gen_type_die_with_usage): Make sure a DIE is a generated for
3436         the context of a typedef.
3437
3438 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
3439
3440         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
3441         switch.
3442
3443 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
3444
3445         * config/mips/mips-protos.h (mips_output_sync): Declare.
3446         (mips_sync_loop_insns): Likewise.
3447         (mips_output_sync_loop): Replace first two parameters with an rtx.
3448         * config/mips/mips.c (mips_multi_member): New structure.
3449         (mips_multi_members): New variable.
3450         (mips_multi_start): New function.
3451         (mips_multi_add): Likewise.
3452         (mips_multi_add_insn): Likewise.
3453         (mips_multi_add_label): Likewise.
3454         (mips_multi_last_index): Likewise.
3455         (mips_multi_copy_insn): Likewise.
3456         (mips_multi_set_operand): Likewise.
3457         (mips_multi_write): Likewise.
3458         (mips_print_operand_punctuation): Remove '%|' and '%-'.
3459         (mips_init_print_operand_punct): Update accordingly.
3460         (mips_start_ll_sc_sync_block): New function.
3461         (mips_end_ll_sc_sync_block): Likewise.
3462         (mips_output_sync): Likewise.
3463         (mips_sync_insn1_template): Likewise.
3464         (mips_sync_insn2_template): Likewise.
3465         (mips_get_sync_operand): Likewise.
3466         (mips_process_sync_loop): Likewise.
3467         (mips_output_sync_loop): Use mips_process_sync_loop.
3468         (mips_sync_loop_insns): New function.
3469         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
3470         (MIPS_COMPARE_AND_SWAP_12): Likewise.
3471         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
3472         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
3473         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
3474         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
3475         (MIPS_SYNC_OLD_OP_12): Likewise.
3476         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
3477         (MIPS_SYNC_NEW_OP_12): Likewise.
3478         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
3479         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
3480         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
3481         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
3482         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
3483         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
3484         * config/mips/mips.md (sync_mem): New attribute.
3485         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
3486         (sync_exclusive_mask, sync_required_oldval): Likewise.
3487         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
3488         (sync_release_barrier): Likewise.
3489         (length): Handle sync loops.
3490         (sync): Use mips_output_sync.
3491         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
3492         (sync_compare_and_swap<mode>): Set the new sync_* attributes
3493         and use mips_output_sync_loop.
3494         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
3495         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3496         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
3497         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
3498         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
3499         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
3500         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
3501         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
3502         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
3503
3504 2009-08-26  Richard Guenther  <rguenther@suse.de>
3505
3506         PR middle-end/41163
3507         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
3508         the types to not match.
3509         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
3510         verification.
3511         * tree-ssa.c (useless_type_conversion_p): Conversions to
3512         pointers to unprototyped functions are useless.
3513
3514 2009-08-26  Richard Guenther  <rguenther@suse.de>
3515
3516         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
3517         whole-program condition, prepare to be called for non-globals.
3518         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
3519         params build a representative with known type and track its fields.
3520
3521 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
3522
3523         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
3524         clearing by a taken branch.
3525         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
3526         effectively after bbro pass.
3527         (sync_nand<mode>): Ditto.
3528         (sync_old_<fetchop_name><mode>): Ditto.
3529         (sync_old_nand<mode>): Ditto.
3530         (sync_new_<fetchop_name><mode>): Dito.
3531         (sync_new_nand<mode>): Ditto.
3532         (sync_compare_and_swap<mode>_1): Ditto.
3533         (*sync_compare_and_swap<mode>): Ditto.
3534         (sync_lock_test_and_set<mode>_1): Ditto.
3535         ("sync_lock_test_and_set<mode>): Ditto.
3536
3537 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
3538
3539         * hwint.h (HOST_LONG_FORMAT): New macro
3540         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
3541         Use HOST_PTR_PRINTF.
3542         * system.h (HOST_PTR_PRINTF): Resurrect old macro
3543         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
3544         (HOST_PTR_PRINTF): Document.
3545
3546 2009-08-25 Jan Hubicka  <jh@suse.cz>
3547
3548         * config/i386/bmmintrin.h: Replace by #error.
3549
3550         Revert:
3551         Michael Meissner  <michael.meissner@amd.com>
3552         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3553         Tony Linthicum  <tony.linthicum@amd.com>
3554
3555         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3556         (TARGET_ROUND): New macro for the round/ptest instructions which
3557         are shared between SSE4.1 and SSE5.
3558         (OPTION_MASK_ISA_ROUND): Ditto.
3559         (OPTION_ISA_ROUND): Ditto.
3560         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3561         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3562
3563         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3564         (-mfused-madd): New switch to give users control over whether the
3565         compiler optimizes to use the multiply/add SSE5 instructions.
3566
3567         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
3568         (ix86_handle_option): Turn off 3dnow if -msse5.
3569         (override_options): Add SSE5 support.
3570         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3571         instructions.
3572         (ix86_expand_sse_movcc): Add SSE5 support.
3573         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3574         vector type to the next largest size.
3575         (ix86_expand_sse5_pack): New function to use pperm to pack a
3576         vector type to the next smallest size.
3577         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3578         (IX86_BUILTIN_FMADDSD): Ditto.
3579         (IX86_BUILTIN_FMADDPS): Ditto.
3580         (IX86_BUILTIN_FMADDPD): Ditto.
3581         (IX86_BUILTIN_FMSUBSS): Ditto.
3582         (IX86_BUILTIN_FMSUBSD): Ditto.
3583         (IX86_BUILTIN_FMSUBPS): Ditto.
3584         (IX86_BUILTIN_FMSUBPD): Ditto.
3585         (IX86_BUILTIN_FNMADDSS): Ditto.
3586         (IX86_BUILTIN_FNMADDSD): Ditto.
3587         (IX86_BUILTIN_FNMADDPS): Ditto.
3588         (IX86_BUILTIN_FNMADDPD): Ditto.
3589         (IX86_BUILTIN_FNMSUBSS): Ditto.
3590         (IX86_BUILTIN_FNMSUBSD): Ditto.
3591         (IX86_BUILTIN_FNMSUBPS): Ditto.
3592         (IX86_BUILTIN_FNMSUBPD): Ditto.
3593         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3594         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3595         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3596         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3597         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3598         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3599         (IX86_BUILTIN_PPERM): Ditto.
3600         (IX86_BUILTIN_PERMPS): Ditto.
3601         (IX86_BUILTIN_PERMPD): Ditto.
3602         (IX86_BUILTIN_PMACSSWW): Ditto.
3603         (IX86_BUILTIN_PMACSWW): Ditto.
3604         (IX86_BUILTIN_PMACSSWD): Ditto.
3605         (IX86_BUILTIN_PMACSWD): Ditto.
3606         (IX86_BUILTIN_PMACSSDD): Ditto.
3607         (IX86_BUILTIN_PMACSDD): Ditto.
3608         (IX86_BUILTIN_PMACSSDQL): Ditto.
3609         (IX86_BUILTIN_PMACSSDQH): Ditto.
3610         (IX86_BUILTIN_PMACSDQL): Ditto.
3611         (IX86_BUILTIN_PMACSDQH): Ditto.
3612         (IX86_BUILTIN_PMADCSSWD): Ditto.
3613         (IX86_BUILTIN_PMADCSWD): Ditto.
3614         (IX86_BUILTIN_PHADDBW): Ditto.
3615         (IX86_BUILTIN_PHADDBD): Ditto.
3616         (IX86_BUILTIN_PHADDBQ): Ditto.
3617         (IX86_BUILTIN_PHADDWD): Ditto.
3618         (IX86_BUILTIN_PHADDWQ): Ditto.
3619         (IX86_BUILTIN_PHADDDQ): Ditto.
3620         (IX86_BUILTIN_PHADDUBW): Ditto.
3621         (IX86_BUILTIN_PHADDUBD): Ditto.
3622         (IX86_BUILTIN_PHADDUBQ): Ditto.
3623         (IX86_BUILTIN_PHADDUWD): Ditto.
3624         (IX86_BUILTIN_PHADDUWQ): Ditto.
3625         (IX86_BUILTIN_PHADDUDQ): Ditto.
3626         (IX86_BUILTIN_PHSUBBW): Ditto.
3627         (IX86_BUILTIN_PHSUBWD): Ditto.
3628         (IX86_BUILTIN_PHSUBDQ): Ditto.
3629         (IX86_BUILTIN_PROTB): Ditto.
3630         (IX86_BUILTIN_PROTW): Ditto.
3631         (IX86_BUILTIN_PROTD): Ditto.
3632         (IX86_BUILTIN_PROTQ): Ditto.
3633         (IX86_BUILTIN_PROTB_IMM): Ditto.
3634         (IX86_BUILTIN_PROTW_IMM): Ditto.
3635         (IX86_BUILTIN_PROTD_IMM): Ditto.
3636         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3637         (IX86_BUILTIN_PSHLB): Ditto.
3638         (IX86_BUILTIN_PSHLW): Ditto.
3639         (IX86_BUILTIN_PSHLD): Ditto.
3640         (IX86_BUILTIN_PSHLQ): Ditto.
3641         (IX86_BUILTIN_PSHAB): Ditto.
3642         (IX86_BUILTIN_PSHAW): Ditto.
3643         (IX86_BUILTIN_PSHAD): Ditto.
3644         (IX86_BUILTIN_PSHAQ): Ditto.
3645         (IX86_BUILTIN_FRCZSS): Ditto.
3646         (IX86_BUILTIN_FRCZSD): Ditto.
3647         (IX86_BUILTIN_FRCZPS): Ditto.
3648         (IX86_BUILTIN_FRCZPD): Ditto.
3649         (IX86_BUILTIN_CVTPH2PS): Ditto.
3650         (IX86_BUILTIN_CVTPS2PH): Ditto.
3651         (IX86_BUILTIN_COMEQSS): Ditto.
3652         (IX86_BUILTIN_COMNESS): Ditto.
3653         (IX86_BUILTIN_COMLTSS): Ditto.
3654         (IX86_BUILTIN_COMLESS): Ditto.
3655         (IX86_BUILTIN_COMGTSS): Ditto.
3656         (IX86_BUILTIN_COMGESS): Ditto.
3657         (IX86_BUILTIN_COMUEQSS): Ditto.
3658         (IX86_BUILTIN_COMUNESS): Ditto.
3659         (IX86_BUILTIN_COMULTSS): Ditto.
3660         (IX86_BUILTIN_COMULESS): Ditto.
3661         (IX86_BUILTIN_COMUGTSS): Ditto.
3662         (IX86_BUILTIN_COMUGESS): Ditto.
3663         (IX86_BUILTIN_COMORDSS): Ditto.
3664         (IX86_BUILTIN_COMUNORDSS): Ditto.
3665         (IX86_BUILTIN_COMFALSESS): Ditto.
3666         (IX86_BUILTIN_COMTRUESS): Ditto.
3667         (IX86_BUILTIN_COMEQSD): Ditto.
3668         (IX86_BUILTIN_COMNESD): Ditto.
3669         (IX86_BUILTIN_COMLTSD): Ditto.
3670         (IX86_BUILTIN_COMLESD): Ditto.
3671         (IX86_BUILTIN_COMGTSD): Ditto.
3672         (IX86_BUILTIN_COMGESD): Ditto.
3673         (IX86_BUILTIN_COMUEQSD): Ditto.
3674         (IX86_BUILTIN_COMUNESD): Ditto.
3675         (IX86_BUILTIN_COMULTSD): Ditto.
3676         (IX86_BUILTIN_COMULESD): Ditto.
3677         (IX86_BUILTIN_COMUGTSD): Ditto.
3678         (IX86_BUILTIN_COMUGESD): Ditto.
3679         (IX86_BUILTIN_COMORDSD): Ditto.
3680         (IX86_BUILTIN_COMUNORDSD): Ditto.
3681         (IX86_BUILTIN_COMFALSESD): Ditto.
3682         (IX86_BUILTIN_COMTRUESD): Ditto.
3683         (IX86_BUILTIN_COMEQPS): Ditto.
3684         (IX86_BUILTIN_COMNEPS): Ditto.
3685         (IX86_BUILTIN_COMLTPS): Ditto.
3686         (IX86_BUILTIN_COMLEPS): Ditto.
3687         (IX86_BUILTIN_COMGTPS): Ditto.
3688         (IX86_BUILTIN_COMGEPS): Ditto.
3689         (IX86_BUILTIN_COMUEQPS): Ditto.
3690         (IX86_BUILTIN_COMUNEPS): Ditto.
3691         (IX86_BUILTIN_COMULTPS): Ditto.
3692         (IX86_BUILTIN_COMULEPS): Ditto.
3693         (IX86_BUILTIN_COMUGTPS): Ditto.
3694         (IX86_BUILTIN_COMUGEPS): Ditto.
3695         (IX86_BUILTIN_COMORDPS): Ditto.
3696         (IX86_BUILTIN_COMUNORDPS): Ditto.
3697         (IX86_BUILTIN_COMFALSEPS): Ditto.
3698         (IX86_BUILTIN_COMTRUEPS): Ditto.
3699         (IX86_BUILTIN_COMEQPD): Ditto.
3700         (IX86_BUILTIN_COMNEPD): Ditto.
3701         (IX86_BUILTIN_COMLTPD): Ditto.
3702         (IX86_BUILTIN_COMLEPD): Ditto.
3703         (IX86_BUILTIN_COMGTPD): Ditto.
3704         (IX86_BUILTIN_COMGEPD): Ditto.
3705         (IX86_BUILTIN_COMUEQPD): Ditto.
3706         (IX86_BUILTIN_COMUNEPD): Ditto.
3707         (IX86_BUILTIN_COMULTPD): Ditto.
3708         (IX86_BUILTIN_COMULEPD): Ditto.
3709         (IX86_BUILTIN_COMUGTPD): Ditto.
3710         (IX86_BUILTIN_COMUGEPD): Ditto.
3711         (IX86_BUILTIN_COMORDPD): Ditto.
3712         (IX86_BUILTIN_COMUNORDPD): Ditto.
3713         (IX86_BUILTIN_COMFALSEPD): Ditto.
3714         (IX86_BUILTIN_COMTRUEPD): Ditto.
3715         (IX86_BUILTIN_PCOMEQUB): Ditto.
3716         (IX86_BUILTIN_PCOMNEUB): Ditto.
3717         (IX86_BUILTIN_PCOMLTUB): Ditto.
3718         (IX86_BUILTIN_PCOMLEUB): Ditto.
3719         (IX86_BUILTIN_PCOMGTUB): Ditto.
3720         (IX86_BUILTIN_PCOMGEUB): Ditto.
3721         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3722         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3723         (IX86_BUILTIN_PCOMEQUW): Ditto.
3724         (IX86_BUILTIN_PCOMNEUW): Ditto.
3725         (IX86_BUILTIN_PCOMLTUW): Ditto.
3726         (IX86_BUILTIN_PCOMLEUW): Ditto.
3727         (IX86_BUILTIN_PCOMGTUW): Ditto.
3728         (IX86_BUILTIN_PCOMGEUW): Ditto.
3729         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3730         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3731         (IX86_BUILTIN_PCOMEQUD): Ditto.
3732         (IX86_BUILTIN_PCOMNEUD): Ditto.
3733         (IX86_BUILTIN_PCOMLTUD): Ditto.
3734         (IX86_BUILTIN_PCOMLEUD): Ditto.
3735         (IX86_BUILTIN_PCOMGTUD): Ditto.
3736         (IX86_BUILTIN_PCOMGEUD): Ditto.
3737         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3738         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3739         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3740         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3741         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3742         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3743         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3744         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3745         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3746         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3747         (IX86_BUILTIN_PCOMEQB): Ditto.
3748         (IX86_BUILTIN_PCOMNEB): Ditto.
3749         (IX86_BUILTIN_PCOMLTB): Ditto.
3750         (IX86_BUILTIN_PCOMLEB): Ditto.
3751         (IX86_BUILTIN_PCOMGTB): Ditto.
3752         (IX86_BUILTIN_PCOMGEB): Ditto.
3753         (IX86_BUILTIN_PCOMFALSEB): Ditto.
3754         (IX86_BUILTIN_PCOMTRUEB): Ditto.
3755         (IX86_BUILTIN_PCOMEQW): Ditto.
3756         (IX86_BUILTIN_PCOMNEW): Ditto.
3757         (IX86_BUILTIN_PCOMLTW): Ditto.
3758         (IX86_BUILTIN_PCOMLEW): Ditto.
3759         (IX86_BUILTIN_PCOMGTW): Ditto.
3760         (IX86_BUILTIN_PCOMGEW): Ditto.
3761         (IX86_BUILTIN_PCOMFALSEW): Ditto.
3762         (IX86_BUILTIN_PCOMTRUEW): Ditto.
3763         (IX86_BUILTIN_PCOMEQD): Ditto.
3764         (IX86_BUILTIN_PCOMNED): Ditto.
3765         (IX86_BUILTIN_PCOMLTD): Ditto.
3766         (IX86_BUILTIN_PCOMLED): Ditto.
3767         (IX86_BUILTIN_PCOMGTD): Ditto.
3768         (IX86_BUILTIN_PCOMGED): Ditto.
3769         (IX86_BUILTIN_PCOMFALSED): Ditto.
3770         (IX86_BUILTIN_PCOMTRUED): Ditto.
3771         (IX86_BUILTIN_PCOMEQQ): Ditto.
3772         (IX86_BUILTIN_PCOMNEQ): Ditto.
3773         (IX86_BUILTIN_PCOMLTQ): Ditto.
3774         (IX86_BUILTIN_PCOMLEQ): Ditto.
3775         (IX86_BUILTIN_PCOMGTQ): Ditto.
3776         (IX86_BUILTIN_PCOMGEQ): Ditto.
3777         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
3778         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
3779         (enum multi_arg_type): New enum for describing the various SSE5
3780         intrinsic argument types.
3781         (bdesc_multi_arg): New table for SSE5 intrinsics.
3782         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
3783         (ix86_expand_multi_arg_builtin): New function for creating SSE5
3784         intrinsics.
3785         (ix86_expand_builtin): Add SSE5 intrinsic support.
3786         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
3787         operand instructions.
3788         (ix86_expand_sse5_multiple_memory): New function to split the
3789         second memory reference from SSE5 instructions.
3790         (type_has_variadic_args_p): Delete in favor of stdarg_p.
3791         (ix86_return_pops_args): Use stdarg_p to determine if the function
3792         has variable arguments.
3793         (ix86_setup_incoming_varargs): Ditto.
3794         (x86_this_parameter): Ditto.
3795
3796         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
3797         declaration.
3798         (ix86_expand_sse5_pack): Ditto.
3799         (ix86_sse5_valid_op_p): Ditto.
3800         (ix86_expand_sse5_multiple_memory): Ditto.
3801
3802         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
3803         constant for SSE5 support.
3804         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
3805         (UNSPEC_SSE5_TRUEFALSE): Ditto.
3806         (UNSPEC_SSE5_PERMUTE): Ditto.
3807         (UNSPEC_SSE5_ASHIFT): Ditto.
3808         (UNSPEC_SSE5_LSHIFT): Ditto.
3809         (UNSPEC_FRCZ): Ditto.
3810         (UNSPEC_CVTPH2PS): Ditto.
3811         (UNSPEC_CVTPS2PH): Ditto.
3812         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
3813         (PCOM_TRUE): Ditto.
3814         (COM_FALSE_S): Ditto.
3815         (COM_FALSE_P): Ditto.
3816         (COM_TRUE_S): Ditto.
3817         (COM_TRUE_P): Ditto.
3818         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
3819         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
3820         types.
3821         (memory attribute): Ditto.
3822         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3823         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
3824         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
3825         (floor<mode>2): Ditto.
3826         (ceil<mode>2): Ditto.
3827         (btrunc<mode>2): Ditto.
3828         (nearbyintdf2): Ditto.
3829         (nearbyintsf2): Ditto.
3830         (sse_setccsf): Disable if SSE5.
3831         (sse_setccdf): Ditto.
3832         (sse5_setcc<mode>): New support for SSE5 conditional move.
3833         (sse5_pcmov_<mode>): Ditto.
3834
3835         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
3836         (SSEMODEF4): Ditto.
3837         (SSEMODEF2P): Ditto.
3838         (ssemodesuffixf4): New mode attribute for SSE5.
3839         (ssemodesuffixf2s): Ditto.
3840         (ssemodesuffixf2c): Ditto.
3841         (sserotatemax): Ditto.
3842         (ssescalarmode): Ditto.
3843         (sse_maskcmpv4sf3): Disable if SSE5.
3844         (sse_maskcmpv2df3): Ditto.
3845         (sse_vmmaskcmpv4sf3): Ditto.
3846         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
3847         (sse5_vmfmadd<mode>4): Ditto.
3848         (sse5_fmsub<mode>4): Ditto.
3849         (sse5_vmfmsub<mode>4): Ditto.
3850         (sse5_fnmadd<mode>4): Ditto.
3851         (sse5_vmfnmadd<mode>4): Ditto.
3852         (sse5_fnmsub<mode>4): Ditto.
3853         (sse5_vmfnmsub<mode>4): Ditto.
3854         (sse5i_fmadd<mode>4): Ditto.
3855         (sse5i_fmsub<mode>4): Ditto.
3856         (sse5i_fnmadd<mode>4): Ditto.
3857         (sse5i_fnmsub<mode>4): Ditto.
3858         (sse5i_vmfmadd<mode>4): Ditto.
3859         (sse5i_vmfmsub<mode>4): Ditto.
3860         (sse5i_vmfnmadd<mode>4): Ditto.
3861         (sse5i_vmfnmsub<mode>4): Ditto.
3862         (mulv16qi3): Add SSE5 support.
3863         (mulv4si3): Ditto.
3864         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
3865         (sse2_mulv4si3): Disable if SSE5.
3866         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
3867         (sse4_1_roundps): Ditto.
3868         (sse4_1_roundsd): Ditto.
3869         (sse4_1_roundss): Ditto.
3870         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
3871         be generated.
3872         (sse_maskcmpsf3): Ditto.
3873         (sse_vmmaskcmpv4sf3): Ditto.
3874         (sse2_maskcmpv2df3): Ditto.
3875         (sse2_maskcmpdf3): Ditto.
3876         (sse2_vmmaskcmpv2df3): Ditto.
3877         (sse2_eq<mode>3): Ditto.
3878         (sse2_gt<mode>3): Ditto.
3879         (sse5_pcmov_<mode>): Add SSE5 support.
3880         (vec_unpacku_hi_v16qi): Ditto.
3881         (vec_unpacks_hi_v16qi): Ditto.
3882         (vec_unpacku_lo_v16qi): Ditto.
3883         (vec_unpacks_lo_v16qi): Ditto.
3884         (vec_unpacku_hi_v8hi): Ditto.
3885         (vec_unpacks_hi_v8hi): Ditto.
3886         (vec_unpacku_lo_v8hi): Ditto.
3887         (vec_unpacks_lo_v8hi): Ditto.
3888         (vec_unpacku_hi_v4si): Ditto.
3889         (vec_unpacks_hi_v4si): Ditto.
3890         (vec_unpacku_lo_v4si): Ditto.
3891         (vec_unpacks_lo_v4si): Ditto.
3892         (sse5_pmacsww): New SSE5 intrinsic insn.
3893         (sse5_pmacssww): Ditto.
3894         (sse5_pmacsdd): Ditto.
3895         (sse5_pmacssdd): Ditto.
3896         (sse5_pmacssdql): Ditto.
3897         (sse5_pmacssdqh): Ditto.
3898         (sse5_pmacsdqh): Ditto.
3899         (sse5_pmacsswd): Ditto.
3900         (sse5_pmacswd): Ditto.
3901         (sse5_pmadcsswd): Ditto.
3902         (sse5_pmadcswd): Ditto.
3903         (sse5_pcmov_<move>): Conditional move support on SSE5.
3904         (sse5_phaddbw): New SSE5 intrinsic insn.
3905         (sse5_phaddbd): Ditto.
3906         (sse5_phaddbq): Ditto.
3907         (sse5_phaddwd): Ditto.
3908         (sse5_phaddwq): Ditto.
3909         (sse5_phadddq): Ditto.
3910         (sse5_phaddubw): Ditto.
3911         (sse5_phaddubd): Ditto.
3912         (sse5_phaddubq): Ditto.
3913         (sse5_phadduwd): Ditto.
3914         (sse5_phadduwq): Ditto.
3915         (sse5_phaddudq): Ditto.
3916         (sse5_phsubbw): Ditto.
3917         (sse5_phsubwd): Ditto.
3918         (sse5_phsubdq): Ditto.
3919         (sse5_pperm): Ditto.
3920         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
3921         (sse5_pperm_zero_v16qi_v8hi): Ditto.
3922         (sse5_pperm_sign_v8hi_v4si): Ditto.
3923         (sse5_pperm_zero_v8hi_v4si): Ditto.
3924         (sse5_pperm_sign_v4si_v2di): Ditto.
3925         (sse5_pperm_sign_v4si_v2di): Ditto.
3926         (sse5_pperm_pack_v2di_v4si): Ditto.
3927         (sse5_pperm_pack_v4si_v8hi): Ditto.
3928         (sse5_pperm_pack_v8hi_v16qi): Ditto.
3929         (sse5_perm<mode>): New SSE5 intrinsic insn.
3930         (rotl<mode>3): Ditto.
3931         (sse5_rotl<mode>3): Ditto.
3932         (sse5_ashl<mode>3): Ditto.
3933         (sse5_lshl<mode>3): Ditto.
3934         (sse5_frcz<mode>2): Ditto.
3935         (sse5s_frcz<mode>2): Ditto.
3936         (sse5_cvtph2ps): Ditto.
3937         (sse5_cvtps2ph): Ditto.
3938         (sse5_vmmaskcmp<mode>3): Ditto.
3939         (sse5_com_tf<mode>3): Ditto.
3940         (sse5_maskcmp<mode>3): Ditto.
3941         (sse5_maskcmp_uns<mode>3): Ditto.
3942         (sse5_maskcmp_uns2<mode>3): Ditto.
3943         (sse5_pcom_tf<mode>3): Ditto.
3944
3945         * config/i386/predicates.md (sse5_comparison_float_operator):
3946         New predicate to match the comparison operators supported by
3947         the SSE5 com instruction.
3948         (ix86_comparison_int_operator): New predicate to match just the
3949         signed int comparisons.
3950         (ix86_comparison_uns_operator): New predicate to match just the
3951         unsigned int comparisons.
3952
3953         * doc/invoke.texi (-msse5): Add documentation.
3954         (-mfused-madd): Ditto.
3955
3956         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
3957
3958         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
3959         mmintrin-common.h.
3960         (x86_64-*-*): Ditto.
3961
3962         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
3963
3964         * config/i386/bmmintrin.h: New file, provide common x86 compiler
3965         intrinisics for SSE5.
3966
3967         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
3968         mmintrin-common.h.
3969
3970         * config/i386/mmintrin-common.h: New file, to contain common
3971         instructions between SSE4.1 and SSE5.
3972
3973         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
3974         FOREACH_FUNCTION_ARGS to iterate over the argument list.
3975         (gen_regparm_prefix): Ditto.
3976
3977         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
3978         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
3979         prototype_p to determine if a function is prototyped.
3980
3981 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
3982
3983         * c-common.c (c_common_reswords) add the alignof keyword,
3984         with same RID as __alignof and __alignof__
3985
3986 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
3987
3988         * hooks.h (hook_bool_const_int_const_int_true): Declare.
3989         * hooks.c (hook_bool_const_int_const_int_true): New function.
3990         * target.h (struct gcc_target): Add can_eliminate field.
3991         * target-def.h (TARGET_CAN_ELIMINATE): Define.
3992         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
3993         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
3994         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
3995         (elim_table): Revise comment.
3996         * system.h (CAN_ELIMINATE): Poison.
3997         * defaults.h (CAN_ELIMINATE): Remove.
3998         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
3999
4000         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4001         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4002         Define macro.
4003         (alpha_vms_can_eliminate): Declare as static, change return type to
4004         bool.
4005         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4006
4007         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4008         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4009         (arm_can_eliminate): New function.
4010
4011         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4012         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4013         (avr_can_eliminate): Declare as static.
4014         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4015
4016         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
4017         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
4018         (bfin_can_eliminate): New function.
4019
4020         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
4021         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
4022         (crx_can_eliminate): New function.
4023
4024         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
4025         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
4026         (fr30_can_eliminate): New function.
4027
4028         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
4029         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
4030         (frv_can_eliminate): New function.
4031
4032         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
4033         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
4034         (h8300_can_eliminate): New function.
4035
4036         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
4037         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
4038         (i386_can_eliminate): Declare as static, change return type to bool.
4039         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
4040
4041         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
4042         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
4043         (ia64_can_eliminate): New function.
4044
4045         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
4046         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
4047         (iq2000_can_eliminate): New function.
4048
4049         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
4050         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
4051         (m32r_can_eliminate): New function.
4052
4053         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
4054         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
4055         (m68hc11_can_eliminate): New function.
4056
4057         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
4058         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
4059         (m68k_can_eliminate): New function.
4060
4061         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
4062         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
4063         (mep_can_eliminate): New function.
4064
4065         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
4066         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
4067         (mips_can_eliminate): New function.
4068
4069         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
4070         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
4071         (rs6000_can_eliminate): New function.
4072
4073         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
4074         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
4075         (s390_can_eliminate): Declare as static.
4076         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
4077
4078         * config/score/score.h (CAN_ELIMINATE): Remove macro.
4079         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
4080         (score_can_eliminate): New function.
4081
4082         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4083         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4084         (sparc_can_eliminate): Declare as static.
4085         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4086
4087         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4088         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4089         (xstormy16_can_eliminate): New function.
4090
4091         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4092         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4093         (v850_can_eliminate): New function.
4094
4095 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
4096
4097         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4098         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4099         (*movdfcc_ext[1234]): Disable for IEEE mode.
4100
4101 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
4102
4103         * gimplify.c (prepare_gimple_addressable): New static function.
4104         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4105         it addressable.
4106         (gimplify_addr_expr): Invoke it similarly on the operand instead of
4107         manually fiddling with it.
4108
4109 2009-08-25  Michael Matz  <matz@suse.de>
4110
4111         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4112         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4113         full expression.
4114         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4115         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4116         (do_jump): Split out code for simple binary comparisons into ...
4117         (do_jump_1): ... this, taking the individual operands and code.
4118         Change callers to helper function above accordingly.
4119         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4120         comparisons.
4121
4122 2009-08-25  Michael Matz  <matz@suse.de>
4123
4124         * expr.h (struct separate_ops, sepops): New type for passing
4125         around an exploded simple expression.
4126         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4127         Use this structure instead of expression tree.
4128         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4129         expression, only its type.
4130         (expand_vec_cond_expr): Take type and individual operands instead
4131         of full expression.
4132         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4133         expand_vec_shift_expr): Change prototype accordingly.
4134         * tree-vect-stmts.c (vectorizable_condition): Change call of
4135         expand_vec_cond_expr_p to pass only type.
4136         * expr.c (do_store_flags): Change prototype and implementation
4137         to take an exploded expression.
4138         (expand_expr_real_1): New local ops initialized with details
4139         of the full expression.  Use it instead of full
4140         expression in calls to do_store_flags, expand_vec_cond_expr,
4141         expand_widen_pattern_expr and expand_vec_shift_expr.
4142
4143 2009-08-25  Michael Matz  <matz@suse.de>
4144
4145         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4146         treeop2 initialized with first three operands of the full expression.
4147         Substitute all TREE_OPERAND (exp, [012]) calls with them.
4148
4149 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
4150
4151         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4152         (__gthread_objc_condition_allocate): Mark arguments as unused.
4153         (__gthread_objc_condition_deallocate): Likewise.
4154         (__gthread_objc_condition_wait): Likewise.
4155         (__gthread_objc_condition_broadcast): Likewise.
4156         (__gthread_objc_condition_signal): Likewise.
4157         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4158         (__gthread_objc_thread_id): Likewise.
4159
4160 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
4161
4162         PR middle-end/41149
4163         * tree-pretty-print.c (print_call_name): Print the correct call name
4164         for procedure pointer components.
4165
4166 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
4167
4168         * config/ia64/ia64.c (ia64_promote_function_mode): Call
4169         default_promote_function_mode when not VMS.
4170
4171 2009-08-24  Olivier Hainque  <hainque@adacore.com>
4172
4173         * convert.c (convert_to_integer): Don't assume an input pointer is
4174         POINTER_SIZE wide.  Fetch from the type instead.
4175
4176 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4177
4178         * configure.ac (AC_PREREQ): Bump to 2.64.
4179
4180 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
4181
4182         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4183         (process_command): Don't search standard_exec_prefix_1 and
4184         standard_exec_prefix_2.
4185
4186 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4187
4188         * config/arm/arm.c (output_return_instruction): Handle for
4189         unified syntax.
4190
4191 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4192
4193         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4194
4195 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4196
4197         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4198         (*arm_movdf_vfp): Likewise.
4199
4200 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4201
4202         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4203         (vashr<mode>3): Rename from ashr<mode>3.
4204         (vlshr<mode>3): Rename from lshr<mode>3.
4205
4206 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
4207
4208         PR/40786
4209         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4210         (check_format_info_main): Use scalar_identify_flag.
4211         (check_format_types): Check for scalar size identity if
4212         scalar_identify_flag is set.
4213         (printf_length_specs): Extend by new field.
4214         (asm_fprintf_length_specs): Likewise.
4215         (gcc_diag_length_specs): Likewise.
4216         (scanf_length_specs): Likewise.
4217         (strfmon_length_specs): Likewise.
4218         (gcc_gfc_length_specs): Likewise.
4219         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4220         (ms_printf_flag_specs): Likewise.
4221         * c-format.h (format_length_info): Add new member scalar_identity_flag.
4222
4223 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
4224
4225         PR target/40718
4226         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4227         (*call_value_pop_1): Ditto.
4228         (*sibcall_pop_1): New insn pattern.
4229         (*sibcall_value_pop_1): Ditto.
4230
4231 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4232
4233         PR target/41081
4234         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4235         ashrsi3_64): New.
4236
4237 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4238
4239         PR target/41081
4240         * fwprop.c (try_fwprop_subst): Allow multiple sets.
4241         (get_reg_use_in): New function.
4242         (forward_propagate_subreg): Propagate through subreg of zero_extend
4243         or sign_extend.
4244
4245 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
4246
4247         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
4248         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
4249
4250 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4251
4252         * configure.ac: Remove --with-datarootdir, --with-docdir,
4253         --with-htmldir switches.  No need to call AC_SUBST for
4254         datarootdir, docdir, htmldir any more.
4255         * configure: Regenerate.
4256         * doc/install.texi (Configuration): Document --datarootdir,
4257         --docdir, --htmldir, --pdfdir; update documentation for
4258         --infodir, --mandir.
4259         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
4260         M4 to 1.4.6.
4261
4262         * aclocal.m4: Regenerate.
4263         * config.in: Regenerate.
4264         * configure: Regenerate.
4265
4266 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
4267             Olivier Hainque  <hainque@adacore.com>
4268
4269         * config/ia64/ia64.c: Include libfuncs.h.
4270         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
4271         (ia64_expand_call): Use reg 25 on VMS.
4272         (ia64_initialize_trampoline): Fix for VMS ABI.
4273         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
4274         (ia64_function_arg): Initialize reg 25 on VMS.
4275         Fix OpenVMS ABI issues for varargs.
4276         For OpenVMS, emit the Argument Information register set in the
4277         incoming/sibcall case as well.
4278         (ia64_arg_type): New function.
4279         (ia64_function_arg_advance): Keep track of cum->words.
4280         Fix OpenVMS ABI issues for varargs.
4281         (ia64_function_value): On VMS, promote mode of non-aggregate types.
4282         (ia64_override_options): Set flag_no_common on VMS.
4283         (ia64_init_builtins): Disable FWRITE builtin.
4284         (ia64_asm_output_external): Call DO_CRTL_NAMES.
4285         (ia64_vms_init_libfuncs): Add decc$ routines.
4286         (ia64_vms_valid_pointer_mode): New function.
4287         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
4288         (ia64_promote_function_mode): New function
4289         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
4290         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
4291         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
4292         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
4293         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
4294         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
4295         Suppress trailing '#' if VALUE is numeric.
4296         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
4297         ia64_promote_function_mode.
4298         (TARGET_VALID_POINTER_MODE): Define.
4299
4300 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
4301
4302         PR target/40671
4303         * config/rs6000/rs6000.c (rs6000_override_options): Use
4304         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
4305
4306         PR target/41145
4307         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
4308         reporting of vector + decimal/boolean/complex error.
4309
4310 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
4311
4312         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
4313         __vector double TYPE_DECL.
4314
4315 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
4316
4317         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
4318         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
4319         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
4320         to pointer to enum machine_mode.  Update all callers as needed.
4321
4322 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
4323
4324         * config/alpha/alpha.md (exception_receiver): Emit alternative
4325         GP load sequence if flag_reorder_blocks_and_partition is set.
4326         (*exception_receiver_2): Also enable when
4327         flag_reorder_blocks_and_partition is set.
4328
4329 2009-08-20  Matt Rice  <ratmice@gmail.com>
4330             Diego Novillo  <dnovillo@google.com>
4331
4332         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
4333         tree-ssa-sccvn.h.
4334
4335 2009-08-20  Richard Guenther  <rguenther@suse.de>
4336
4337         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
4338         * c-tree.h (c_dup_lang_specific_decl): Remove.
4339         (struct lang_decl, struct lang_type): Move definitions ...
4340         * c-lang.h: ... here.  New file.
4341         * c-decl.c: Include c-lang.h.
4342         (c_dup_lang_specific_decl): Remove.
4343         * c-typeck.c: Include c-lang.h.
4344         * Makefile.in (c-decl.o): Add c-lang.h dependency.
4345         (c-typeck.o): Likewise.
4346         * c-config-lang.in (gtfiles): Add c-lang.h.
4347         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
4348         like c-tree.h.
4349
4350 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
4351
4352         * config/alpha/alpha.c (alpha_end_function): Do not clear
4353         crtl->emit structure and free insn locators if cfun->is_thunk is true,
4354         this is now handled in generic code.
4355
4356 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4357
4358         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
4359         (s390_z10_fix_long_loop_prediction): New function.
4360         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
4361         (s390_reorg): Walk over the INSNs and invoke
4362         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
4363
4364 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4365
4366         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
4367         "*brx_64bit", "*brx_31bit"): New patterns.
4368         * config/s390/s390.c ('E'): New output modifier.
4369
4370 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4371             Richard Earnshaw  <richard.earnshaw@arm.com>
4372
4373         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
4374         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
4375
4376 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4377
4378         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
4379         patterns.
4380         * pa.c (emit_move_sequence): Check if address of operand1 is valid
4381         for mode mode of operand0 when doing secondary reload for SAR.
4382
4383 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4384
4385         PR middle-end/41123
4386         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
4387         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
4388
4389 2009-08-19  Jason Merrill  <jason@redhat.com>
4390
4391         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
4392         supported template depth in C++0x.
4393
4394 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4395
4396         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
4397         free_after_compilation.
4398         * config/score/score7.c (score7_output_mi_thunk): Likewise.
4399         * config/score/score3.c (score3_output_mi_thunk): Likewise.
4400         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
4401         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4402         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4403         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4404         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4405
4406 2009-08-19  Ian Lance Taylor  <iant@google.com>
4407
4408         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
4409         of (plus (mult (neg B) C) A).
4410
4411 2009-08-18  Michael Matz  <matz@suse.de>
4412
4413         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
4414         instead of comparing TYPE_MAIN_VARIANT for equality.
4415         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
4416         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
4417         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
4418         * gimplify.c (goa_lhs_expr_p): Ditto and use
4419         STRIP_USELESS_TYPE_CONVERSION.
4420
4421 2009-08-18  Michael Matz  <matz@suse.de>
4422
4423         * tree-ssa-structalias.c (create_variable_info_for): Also mark
4424         first field in a struct.
4425         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
4426
4427 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
4428
4429         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4430         locators before emit_insn is called.  Remove assert that
4431         cfun->is_thunk.
4432         (alpha_end_function): Clear crtl->emit structure and free insn
4433         locators if cfun->is_thunk is true.
4434
4435 2009-08-18  Jason Merrill  <jason@redhat.com>
4436
4437         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
4438         type if available.
4439         * configure.ac: Test for it.
4440         * configure, config.in: Regenerate.
4441         * doc/install.texi: Document --enable-gnu-unique-object.
4442
4443 2009-08-18  Richard Guenther  <rguenther@suse.de>
4444
4445         PR middle-end/41094
4446         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
4447         pow(x,y*z) only if x is nonnegative.
4448
4449 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
4450
4451         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
4452         on jumps.
4453
4454         PR target/40971
4455         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
4456         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
4457
4458 2009-08-17  DJ Delorie  <dj@redhat.com>
4459
4460         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
4461         * config/m32c/prologue.md (epilogue_freit): New.
4462         (fset_b): New.
4463         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
4464         (bank_switch_p): Likewise.
4465         (fast_interrupt_p): Likewise.
4466         (interrupt_p): Likewise.
4467         (m32c_conditional_register_usage): Round memregs size up.
4468         (need_to_save): We only need to save $a0 when we use ENTER.
4469         (interrupt_p): Check for fast_interrupt too.
4470         (bank_switch_p): New.
4471         (fast_interrupt_p): New.
4472         (m32c_attribute_table): Add bank_switch and fast_interrupt.
4473         (m32c_emit_prolog): Support bank switching and fast interrupts.
4474         * doc/extend.texi (Function Attributes): Add bank_switch and
4475         fast_interrupt.
4476
4477 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
4478
4479         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
4480         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
4481
4482 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
4483
4484         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
4485         (menu): Add IA-64/VMS Options.
4486         (IA-64/VMS Options): Likewise.
4487
4488 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4489
4490         PR target/38599
4491         * config/mips/mips.md (*lwxs): Use :P for pointer values.
4492
4493 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4494
4495         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
4496         (mips_pop_asm_switch): Likewise.
4497         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
4498         with...
4499         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4500         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
4501         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
4502         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
4503         instead of set_noreorder.
4504         (mips_output_function_prologue): Use the new functions.
4505         (mips_output_function_epilogue): Likewise.
4506         (mips_need_noat_wrapper_p): New function, split out from...
4507         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
4508         Use mips_push_asm_switch and mips_pop_asm_switch.
4509         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
4510         and mips_pop_asm_switch.
4511         (ASM_OUTPUT_REG_POP): Likewise.
4512         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
4513         Use mips_pop_asm_switch.
4514         (mips_asm_switch): New structure.
4515         (set_noreorder, set_nomacro): Replace with...
4516         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4517         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
4518         instead of set_nomacro.
4519         (fix_truncsfsi2_macro): Likewise.
4520         (cprestore): Likewise.
4521         (hazard): Use mips_noreorder instead of set_noreorder.
4522         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
4523
4524 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
4525
4526         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
4527         from prev_active_insn.
4528
4529 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
4530
4531         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
4532         * config/avr/avr.c (avr_override_options): Initialize
4533         avr_current_arch variable.
4534         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
4535         __AVR_HAVE_16BIT_SP__ according to the device type.
4536         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
4537         TARGET_TINY_STACK.
4538         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
4539         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
4540
4541 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
4542
4543         PR debug/37801
4544         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
4545         generating inlined subroutine die only. We shouldn't be
4546         called for anything else.
4547         (gen_block_die): Don't generate inline subroutine debug info for
4548         abstract blocks.
4549
4550 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4551
4552         * graphite-poly.c (print_pbb): Print PBB index.
4553
4554 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4555
4556         PR middle-end/40981
4557         * graphite-interchange.c (ppl_max_for_le): Moved...
4558         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
4559         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
4560         ppl_Pointset_Powerset_C_Polyhedron_maximize.
4561         * graphite-ppl.h (ppl_max_for_le): Declared.
4562
4563 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
4564
4565         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
4566         supported on all platforms.
4567         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
4568         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
4569         * c-pragma.c: Likewise.
4570         * target-def.h (TARGET_INITIALIZER): Remove
4571         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4572         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4573
4574 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4575
4576         * config/ia64/fde-vms.c: New file.
4577         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
4578         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
4579         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
4580         (uw_frame_state_for): Only register a personality routine if it is
4581         known to be compatible with our expectations.
4582         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
4583         Declare unw_table_entry stack variable and
4584         mod all calls to _Unwind_FindTableEntry to add arg.
4585         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
4586         (_Unwind_FindTableEntry): Add arg to prototype.
4587
4588 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
4589
4590         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
4591         field 'signal_pfs_loc'.
4592         (uw_frame_state_for): Remove duplicate code dealing with leaf
4593         procedures without unwind info.
4594         If in the frame after unwinding through a signal handler, restore
4595         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
4596         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
4597         'pfs_loc' to the AR.PFS location in the signal context; instead
4598         set 'signal_pfs_loc'.
4599         Manually generate the unwind info for the AR.PFS register.
4600         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
4601         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
4602         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
4603         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
4604         instead set 'signal_pfs_loc'.
4605         Remove code preventing the AR.PFS register from being restored
4606         from the signal context.
4607
4608 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4609             Tristan Gingold  <gingold@adacore.com>
4610
4611         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
4612         * config/ia64/t-vms: New file.
4613         * config/ia64/vms64.h: New file.
4614         * config/ia64/vms.h: New file.
4615         * config/ia64/vms-crtinit.asm: New file.
4616         * config/ia64/vms_symvec_libgcc_s.opt: New file.
4617         * config/ia64/vms-unwind.h: New file.
4618
4619 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4620
4621         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
4622         TFmode compares.
4623
4624 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4625
4626         PR middle-end/30789
4627         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
4628         Move declaration...
4629         * real.h (do_mpc_arg2): ... here.
4630         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
4631         and RDIV_EXPR.
4632
4633 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
4634
4635         * final.c (add_debug_prefix_map): Don't use GC memory for
4636         old_prefix and new_prefix.
4637
4638 2009-08-14  Richard Guenther  <rguenther@suse.de>
4639
4640         * ipa-prop.c (compute_complex_pass_through): If we cannot
4641         compute a non-varying offset for IPA_JF_ANCESTOR punt.
4642
4643 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4644
4645         * c-lex.c (c_lex_with_flags): Increase size of local variable
4646         to avoid memory clobber.
4647
4648 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
4649
4650         PR target/40934
4651         * config/i386/i386.c (ix86_fp_comparison_strategy):
4652         Only enable/disable sahf at function granularity.
4653
4654 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
4655
4656         PR rtl-optimization/41064
4657         * reload1.c (reload_as_needed): Don't call extract_insn
4658         for known invalid replacements after calling
4659         validate_replace_rtx_group and verify_changes.
4660
4661 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4662
4663         PR target/41019
4664         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
4665         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
4666         ix86_expand_fp_vcond.
4667         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
4668         Assert that operation is supported by ix86_expand_int_vcond.
4669         (vcondu<SSEMODE124C8:mode>): Ditto.
4670
4671 2009-08-13  DJ Delorie  <dj@redhat.com>
4672
4673         * config/i386/djgpp-stdint.h: New.
4674         * config.gcc (djgpp): Use it.
4675
4676 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
4677
4678         * config/sh/sh.c (sh_override_options): When flag_exceptions or
4679         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
4680
4681 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
4682
4683         * tree-ssa-loop-prefetch.c
4684         (prune_ref_by_group_reuse): Enhance probabilistic analysis
4685         for long-stride pruning.
4686         (compute_miss_rate): New function to compute the probability
4687         that two memory references access different cache lines.
4688
4689 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
4690
4691         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
4692
4693 2009-08-13  Richard Guenther  <rguenther@suse.de>
4694
4695         PR middle-end/41047
4696         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
4697         use the constant pointer type.
4698         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
4699         of CV qualifiers on the target pointer type.
4700         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
4701         conversion check before restrict check.
4702
4703 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4704
4705         PR target/41029
4706         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
4707
4708 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4709
4710         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
4711
4712 2009-08-12  Richard Guenther  <rguenther@suse.de>
4713
4714         PR tree-optimization/41011
4715         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
4716         and reference constructing.
4717
4718 2009-08-12  Xinliang David Li  <davidxl@google.com>
4719
4720         PR tree-optimization/41012
4721         * tree-flow.h : New external interface.
4722         * gimple-low.c (check_call_arg): Change to public function.
4723         Remove argument mismatch check in lowering.
4724         * tree-inline.h (tree_can_inline_p): Interface change.
4725         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
4726         into this function.
4727         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
4728         Call change to tree_can_inline_p function.
4729         (cgraph_decide_inlining_incrementally): Ditto.
4730
4731 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
4732
4733         PR tree-optimization/41031
4734         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
4735         on the partition variable rather than promote_mode on the source
4736         type.  Assert that the partition variable's type has the same
4737         mode as the source value's.
4738
4739 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
4740
4741         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
4742         for for_return == 2.
4743         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
4744         comments.
4745         * calls.c (expand_call): Fix typo.
4746         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
4747         and PARM_DECL.
4748         * stmt.c (expand_value_return): Use promote_function_mode to copy out
4749         of pseudo.
4750         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
4751         * config/cris/cris.c (cris_promote_function_mode): Likewise.
4752         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
4753         * config/pa/pa.c (pa_promote_function_mode): Likewise.
4754
4755 2009-08-12  Andrew Haley  <aph@redhat.com>
4756
4757         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
4758
4759 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4760
4761         PR bootstrap/40103
4762         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
4763
4764 2009-08-12  Richard Guenther  <rguenther@suse.de>
4765
4766         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
4767         * gimplify.c (gimplify_modify_expr): Do not use
4768         lang_hooks.types_compatible_p.
4769         * tree-ssa.c (useless_type_conversion_p): For aggregates
4770         just return false if the canonical types differ.
4771
4772 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4773
4774         PR middle-end/40980
4775         * sese.c (convert_for_phi_arg): New.
4776         (add_guard_exit_phis): Use convert_for_phi_arg.
4777
4778 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4779
4780         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
4781         unknown subscript upper bounds.
4782
4783 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4784             Pranav Garg  <pranav.garg2107@gmail.com>
4785
4786         * graphite-interchange.c (gather_access_strides): Removed.
4787         (ppl_max_for_le): New.
4788         (build_linearized_memory_access): New.
4789         (memory_stride_in_loop): New.
4790         (pbb_interchange_profitable_p): Reimplemented.
4791         * graphite-ppl.h (ppl_new_id_map): New.
4792         (ppl_interchange): New.
4793
4794 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4795
4796         * graphite-interchange.c (compute_subscript): Removed.
4797         (compute_array_size_cstr): Removed.
4798         (compute_array_size_poly): Removed.
4799         (compute_array_size): Removed.
4800         (gather_access_strides_poly): Removed.
4801         (gather_access_strides): Empty.
4802
4803 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4804
4805         * graphite-dependences.c (dependence_polyhedron_1): Replace
4806         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
4807         (graphite_legal_transform_dr): Same.
4808         (graphite_carried_dependence_level_k): Same.
4809         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
4810         Initialize PDR_NB_SUBSCRIPTS.
4811         (print_pdr_access_layout): Replace pdr_nb_subscripts with
4812         PDR_NB_SUBSCRIPTS.
4813         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
4814         (PDR_NB_SUBSCRIPTS): New.
4815         (pdr_nb_subscripts): Removed.
4816         (pdr_dim): Simplified.
4817         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
4818         with PDR_NB_SUBSCRIPTS.
4819
4820 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4821
4822         * graphite-interchange.c (compute_array_size): Remove use of
4823         PDR_DATA_CONTAINER.
4824         * graphite-poly.c (new_poly_dr): Remove argument data_container.
4825         Do not initialize PDR_DATA_CONTAINER.
4826         (print_pdr): Do not print PDR_DATA_CONTAINER.
4827         * graphite-poly.h (struct poly_dr): Remove data_container field.
4828         (PDR_DATA_CONTAINER): Removed.
4829         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
4830         PDR_DATA_CONTAINER.
4831         (build_poly_dr): Same.
4832
4833 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4834             Sebastian Pop  <sebastian.pop@amd.com>
4835
4836         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
4837         copy of the dependence polyhedron.  Free the temporary objects.
4838         (graphite_carried_dependence_level_k): Free unused objects before
4839         returning.
4840
4841         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
4842         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
4843         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
4844         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
4845         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
4846
4847 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4848
4849         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
4850         Early return without analyzing the data dependences if no
4851         transform has been done.  Call restore_scattering if the transform
4852         is not legal.
4853         (graphite-interchange.c): Same.
4854         * graphite-poly.c (print_scattering_function): Test for
4855         PBB_TRANSFORMED.
4856         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
4857         (apply_poly_transforms): Do not gcc_assert that
4858         the transform is legal.
4859         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
4860         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
4861         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
4862         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
4863         * graphite-poly.h (struct poly_scattering): New.
4864         (struct poly_bb): Add original, transformed, and saved fields.
4865         Remove transformed_scattering, original_scattering,
4866         nb_local_variables and nb_scattering_transform fields.
4867         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
4868         (poly_scattering_new): New.
4869         (poly_scattering_free): New.
4870         (poly_scattering_copy): New.
4871         (store_scattering_pbb): New.
4872         (store_scattering): New.
4873         (restore_scattering_pbb): New.
4874         (restore_scattering): New.
4875         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
4876         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
4877
4878 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4879
4880         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
4881         (print_scop): Same.
4882
4883 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4884
4885         * Makefile.in (graphite.o): Depends on PREDICT_H.
4886         * graphite.c: Include predict.h.
4887         (graphite_finalize): Call tree_estimate_probability.
4888         * predict.c (predict_loops): Do not call scev_initialize and
4889         scev_finalize.
4890         (tree_estimate_probability_bb): New.
4891         (tree_estimate_probability): Do not initialize loops: move that
4892         code to the driver.  Call tree_estimate_probability_bb.
4893         (tree_estimate_probability_driver): New.
4894         (pass_profile): Use tree_estimate_probability_driver.
4895         * predict.h (tree_estimate_probability): Declared.
4896
4897 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
4898
4899         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
4900         * graphite-dependences.c (graphite_legal_transform): Add time to
4901         TV_GRAPHITE_DATA_DEPS.
4902         (dependency_between_pbbs_p): Same.
4903         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
4904
4905 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
4906
4907         PR rtl-optimization/41033
4908         * alias.c (nonoverlapping_component_refs_p): Punt when strict
4909         aliasing is disabled.
4910
4911 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
4912
4913         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
4914         si_mask_operand, and_load_operand, low_bitmask_operand,
4915         and_reg_operand, and_operand): New predicates.
4916         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
4917         * config/mips/mips.c (and_operands_ok): New function.
4918         * config/mips/mips-protos.h (and_operands_ok): Declare it.
4919         * config/mips/mips.md (move_type): Add ext_ins and logical.
4920         (type): Handle them.
4921         (and<mode>3): Use and_reg_operand as the second operand's predicate.
4922         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
4923         shift_shift.  Remove commutative constraint modifier.
4924         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
4925         shift_shift.
4926         (*clear_upper32_dext): Remove define_insn_and_split.
4927         (*clear_upper32): Turn this define_insn_and_split ...
4928         (splitter for ANDing register with 0xffff_ffff): .. into this.
4929
4930 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
4931
4932         * combine.c (try_widen_shift_mode): Factor out code to check if an
4933         integer constant is a low-order bitmask from here ...
4934         * rtlanal.c (low_bitmask_len): ... to here.
4935         * rtl.h (low_bitmask_len): Declare.
4936
4937 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
4938
4939         PR target/8603
4940         * config/alpha/alpha.md (addsi3): Remove expander.
4941         (addsi3): Rename from *addsi3_internal insn pattern.
4942         (subsi3): Remove expander.
4943         (subsi3): Rename from *subsi3_internal insn pattern.
4944
4945 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
4946
4947         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
4948         FWRITE_UNLOCKED.
4949
4950 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
4951             Eric Botcazou  <botcazou@adacore.com>
4952             Douglas B Rupp  <rupp@gnat.com>
4953
4954         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
4955         that records that fit in 64 bits are returned by immediate value,
4956         as required by OpenVMS Calling Standard.
4957         (function_value): Adjust for above modification.
4958         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
4959         virtual_incoming_args_rtx as base object, not next_arg.
4960         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
4961
4962 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4963
4964         * reload.c (find_reloads_subreg_address): Check the original
4965         req_equiv_mem address to detect the case where an address is
4966         not valid in the outer mode.
4967
4968 2009-08-11  Richard Guenther  <rguenther@suse.de>
4969
4970         PR bootstrap/40788
4971         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
4972
4973 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
4974
4975         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
4976         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
4977
4978 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
4979             Douglas B Rupp  <rupp@gnat.com>
4980
4981         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
4982         PT_STACK when frame_pointer_needed on OpenVMS.
4983         (alpha_pv_save_size, alpha_using_fp): Remove.
4984         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
4985         with proper processing for PT_NULL.
4986         (alpha_vms_initial_elimination_offset): New function. Support for
4987         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
4988         (alpha_sa_size): Force procedure type to PT_STACK when
4989         frame_pointer_needed on OpenVMS.
4990         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
4991         (alpha_using_fp): Likewise.
4992         (alpha_vms_can_eliminate): Add prototype.
4993         (alpha_vms_initial_elimination_offset): Likewise.
4994         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
4995         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
4996
4997 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
4998             Douglas B Rupp  <rupp@gnat.com>
4999
5000         * config/alpha/alpha.c (common_object_handler): New function.
5001         (vms_attribute_table): Declare a single attribute "common_object".
5002         (vms_output_aligned_decl_common): New global function.
5003         (SECTION_VMS_OVERLAY): Delete.
5004         (SECTION_VMS_GLOBAL): Likewise.
5005         (SECTION_VMS_INITIALIZE): Likewise.
5006         (vms_asm_named_section): Remove support for above flags.
5007         (vms_section_type_flags): Delete.
5008         (TARGET_SECTION_TYPE_FLAGS): Likewise.
5009         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5010         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5011         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5012
5013 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5014
5015         PR target/41015
5016         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5017         (sub_ddmmss): Likewise.
5018
5019 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
5020
5021         PR bootstrap/41018
5022         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
5023         year.
5024
5025 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5026
5027         PR target/37053
5028         * reload1.c (reload_as_needed): Use cancel_changes to completely
5029         undo a failed replacement attempt.
5030
5031 2009-08-10  Richard Guenther  <rguenther@suse.de>
5032
5033         PR middle-end/41006
5034         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
5035         (useless_type_conversion_p): ... here.  Require pointer targets
5036         to be compatible.
5037
5038 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
5039
5040         PR c++/40866
5041         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
5042         loose the original type of the statement list.
5043
5044 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5045
5046         * config/alpha/alpha.c: Include libfuncs.h
5047         (avms_asm_output_extern): New function.
5048         (alpha_init_libfuncs): Init some decc libfuncs.
5049         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
5050         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
5051         (DO_CRTL_NAMES): Define.
5052         (LIB_SPEC): Remove.
5053         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
5054         (LONG_TYPE_SIZE): Define.
5055         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
5056         (SUBTARGET_SWITCHES): Define malloc64 switch.
5057         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
5058         (MASK_RETURN_ADDR): Define.
5059         doc/invoke.texi (mmalloc64): Document switch.
5060
5061 2009-08-09  Olivier Hainque  <hainque@adacore.com>
5062             Douglas B Rupp  <rupp@gnat.com>
5063
5064         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
5065         uses_condition_handler.
5066         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
5067         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
5068         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
5069         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
5070         (code_for_builtin): New insn codes for the new alpha_builtins.
5071         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
5072         (alpha_sa_size): Account for uses_condition_handler.
5073         (alpha_expand_prologue): Likewise.
5074         (alpha_start_function): Likewise.
5075         (alpha_expand_epilogue): Likewise.
5076         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
5077         establish/revert expanders.
5078         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
5079         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
5080         New expander, resorting to the alpha.c associated function.
5081         (builtin_revert_vms_condition_handler): Likewise.
5082         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5083         __gcc_shell_handler, the static VMS condition handler used as
5084         an indirection wrapper to the current dynamically established
5085         handler.
5086         * config/alpha/vms-unwind.h: Complete rewrite.
5087         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5088         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5089
5090 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
5091             Douglas B Rupp  <rupp@gnat.com>
5092
5093         * config/alpha/alpha.c (alpha_links): Add 'target' field.
5094         (alpha_need_linkage): Handle aliases.  Return function symbol.
5095         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5096         Use ultimate alias target for the linkage name.
5097         * config/alpha/alpha.md (movmemdi): Use the symbol returned
5098         by alpha_need_linkage for the function symbol.
5099         (setmemdi): Likewise.
5100
5101 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5102
5103         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5104         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5105         (ASM_WEAKEN_LABEL): Define.
5106         (CRT_CALL_STATIC_FUNCTION): Define.
5107         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5108         (ENDFILE_SPEC): Define.
5109         (INIT_SECTION_ASM_OP): Define.
5110         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5111         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5112         crtend.o crtendS.o.
5113         (MULTILIB_OSDIRNAMES): Define.
5114         (shlib_version): Define.
5115         (SHLIB_EXT): Define.
5116         (SHLIB_OBJS): Define.
5117         (SHLIB_NAME): Define.
5118         (SHLIB_MULTILIB): Define.
5119         (SHLIB_INSTALL): Define.
5120         (SHLIB_SYMVEC): Define.
5121         (SHLIB_SYMVECX2): Define.
5122         (SHLIB_LINK): Define.
5123
5124 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5125
5126         * config/alpha/alpha.c (alpha_initialize_trampoline):
5127         Initialize VMS trampoline IAW ABI for bounded procedure calls.
5128         (alpha_start_function): Emit transfer address on nested functions
5129         for VMS trampoline call.
5130         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5131         since no longer used.
5132         * config/alpha/vms-tramp.asm: Remove.
5133         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5134         since now only data initialized at runtime.
5135
5136 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5137
5138         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5139         (LINK_GCC_C_SEQUENCE_SPEC): Define.
5140         (MD_EXEC_PREFIX): Remove, no longer used.
5141         (MD_STARTFILE_PREFIX): Likewise.
5142         (INCLUDE_DEFAULTS): Likewise.
5143         * config/alpha/t-vms:
5144         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5145
5146 2009-08-09  Richard Guenther  <rguenther@suse.de>
5147
5148         PR tree-optimization/41016
5149         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5150         (operand_precision): Remove.
5151         (integral_operand_p): Likewise.
5152         (recognize_single_bit_test): Adjust.
5153
5154 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5155
5156         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5157         operation overflows.  Likewise non-cast unary arithmetic.
5158         If one arm of a conditional expression is always taken,
5159         inhibit evaluation warnings for the other arm.  Likewise inhibit
5160         evaluation warnings for the second && or || operand if the first
5161         operand is enough to determine the result.
5162         * c-typeck.c (build_conditional_expr): Apply the same inhibition
5163         rules here.
5164         (build_binary_op): Prevent duplicate evaluation warnings.
5165
5166 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5167
5168         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5169         and destination have different modes, Use promote_mode to
5170         determine the signedness of the conversion.  Assert that the
5171         promoted source mode matches the destination mode.  Don't pass
5172         the destination and destination mode to expand_expr if the source
5173         mode is different.  Simplify conversion logic.
5174
5175 2009-08-09  Ira Rosen  <irar@il.ibm.com>
5176
5177         PR tree-optimization/41008
5178         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5179         from condition only in case it's a comparison. Adjust checks.
5180
5181 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5182
5183         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5184         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5185         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5186         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5187         (dump_cand): Handle them.
5188         (struct iv_cand): New members COST_STEP and AINC_USE.
5189         (stmt_after_increment): Likewise.
5190         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
5191         callers changed.  Use gimple_uid comparison instead of scanning.
5192         (add_candidate_1): When looking for identical candidates, take
5193         AINC_USE into account.  Set it for new candidates.
5194         (force_expr_to_var_cost): Cast target_spill_cost to int.
5195         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5196         All callers changed.  Check for availability of autoinc addressing
5197         modes, both in general for a given mode, and in the specific use case.
5198         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
5199         changed.
5200         (get_computation_cost): Likewise.
5201         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5202         add_autoinc_candidates): New static functions.
5203         (add_candidate): Call add_autoinc_candidates for candidates based on
5204         a USE_ADDRESS use.
5205         (find_iv_candidates): Call set_autoinc_for_original_candidates.
5206         (determine_use_iv_cost_address): If we have an autoinc candidate at
5207         the matching use, verify autoinc is possible and subtract the cost
5208         of the candidate's step from the cost.
5209         (determine_iv_cost): Record the cost of the increment in the COST_STEP
5210         member of the candidate.
5211         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5212         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
5213
5214 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5215
5216         * config.build (ia64-hp-*vms*): New target.
5217         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5218         with ia64-hp-*vms*.
5219         * config.gcc (ia64-hp-*vms*): New target.
5220         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5221         with ia64-hp-*vms*.
5222         * config.host (ia64-hp-*vms*): New target.
5223         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5224         with ia64-hp-*vms*.
5225
5226 2009-08-08  Richard Guenther  <rguenther@suse.de>
5227
5228         PR tree-optimization/40991
5229         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5230
5231 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5232
5233         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5234         mode check.  Do truncations in an integer mode.
5235         (force_to_mode): Handle subregs for all mode types.  Only do
5236         arithmetic simplifications on integer modes.
5237
5238 2009-08-07  Richard Guenther  <rguenther@suse.de>
5239
5240         PR tree-optimization/40999
5241         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5242         (maybe_fold_reference): Lookup constant initializers.
5243         (fold_gimple_assign): Likewise.
5244
5245 2009-08-07  Richard Guenther  <rguenther@suse.de>
5246
5247         * tree-ssa.c (useless_type_conversion_p_1): Only for types
5248         that require structural equality defer to the langhook.
5249
5250 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5251
5252         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
5253         comments.
5254         (struct ipa_pass_through_data): New type.
5255         (struct ipa_ancestor_jf_data): New type.
5256         (union jump_func_value): Removed field formal_id, added fields
5257         pass_through and ancestor.
5258         (struct ipa_param_call_note): Changed type of formal_id to int from
5259         unsigned.
5260         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
5261         operations jump functions and ancestor jump functions.
5262         (compute_complex_pass_through): New function.
5263         (compute_scalar_jump_functions): Call compute_complex_pass_through,
5264         reflect changes in the jump function strucutre.
5265         (update_jump_functions_after_inlining): Ignore complex pass-through
5266         and ancestor jump functions.
5267         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
5268         polynomial pass-through with operation jump functions.
5269
5270 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
5271
5272         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
5273         fde->dw_fde_begin as begin label instead of hot/cold label.
5274         Use LLSDAC label instead of LLSDA for second section lsda.
5275         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
5276         label instead of LLSDA if it is true.
5277         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
5278         callers.
5279         * except.c (add_call_site, dw2_size_of_call_site_table): Add
5280         SECTION argument.  Use it as index into crtl->eh.call_site_record
5281         array.
5282         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
5283         use it to determine how to print table entries instead of using
5284         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
5285         label instead of normal begin label as base.
5286         (sjlj_assign_call_site_values): Adjust add_call_site caller.
5287         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
5288         ensure no EH range spans between sections and that landing pads
5289         are always in the corresponding section.
5290         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
5291         for crtl->eh.call_site_record being an array rather than scalar.
5292         (output_one_function_exception_table): New function, copied
5293         from output_function_exception_table.  Adjust
5294         dw2_size_of_call_site_table, dw2_output_call_site_table
5295         callers.  For SECOND section use *C suffixed labels.
5296         (output_function_exception_table): Call
5297         output_one_function_exception_table and, when doing hot/cold
5298         partitioning, also another time for the second section.
5299         * opts.c: Include except.h.
5300         (decode_options): Allow -freorder-blocks-and-partition with
5301         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
5302         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
5303         * function.h (struct rtl_eh): Change call_site_record from
5304         scalar into array of 2 elements.
5305
5306 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5307
5308         * ipa-prop.c (count_formal_params_1): New function.
5309         (ipa_get_vector_of_formal_parms): New function.
5310         (get_vector_of_formal_parm_types): New function.
5311         (ipa_modify_formal_parameters): New function.
5312         (ipa_modify_call_arguments): New function.
5313         (index_in_adjustments_multiple_times_p): New function.
5314         (ipa_combine_adjustments): New function.
5315         (ipa_dump_param_adjustments): New function.
5316         * ipa-prop.h (struct ipa_parm_adjustment): New type.
5317         (ipa_get_vector_of_formal_parms): Declare.
5318         (ipa_modify_formal_parameters): Declare.
5319         (ipa_modify_call_arguments): Declare.
5320         (ipa_combine_adjustments): Declare.
5321         (ipa_dump_param_adjustments): Declare.
5322         (build_ref_for_offset): Declare.
5323         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
5324         * tree-sra.c: Include ipa-prop.c.
5325         (build_ref_for_offset): Make public.
5326
5327 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
5328
5329         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
5330
5331 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
5332
5333         * gcc/doc/extend.texi (__builtin_extract_return_address)
5334         (__builtin_frob_return_address): Document.
5335
5336 2009-08-06  Paul Brook  <paul@codesourcery.com>
5337
5338         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
5339         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
5340         implementation on ARMv6-M.
5341
5342 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5343
5344         * doc/extend.texi (pcs): Document new attribute for ARM.
5345
5346 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5347
5348         * arm.c (pcs_attribute_args): Comment out unsupported attribute
5349         variants.
5350
5351 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5352
5353         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
5354         warning ().
5355
5356 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5357
5358         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
5359
5360 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5361
5362         Merge ARM/hard_vfp_branch to trunk.
5363
5364         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
5365
5366         * arm.c (libcall_eq): New function.
5367         (libcall_hash): New function.
5368         (add_libcall): New function.
5369         (arm_libcall_uses_aapcs_base): New function.
5370         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
5371         libcalls using the base PCS.
5372         (arm_init_cumulative_args): Likewise.
5373
5374         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
5375
5376         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
5377         Use base ABI for conversion libfuncs between HFmode and SFmode.
5378
5379         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5380
5381         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
5382         V4SImode as representatives of all 64-bit and 128-bit vector
5383         types.  Allow vector types without vector modes.
5384         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
5385         without vector modes like BLKmode.
5386         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
5387         BLKmode.  Avoid unsupported vector modes or TImode moves for
5388         non-TARGET_NEON.
5389         (aapcs_vfp_allocate_return_reg): Likewise.
5390         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
5391         V8QImode if TARGET_NEON || TARGET_IWMMXT.
5392
5393         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5394
5395         * config/arm/arm.c (arm_handle_pcs_attribute): New.
5396         (arm_get_pcs_model): Pass attribute arguments to
5397         arm_pcs_from_attribute.
5398         (arm_init_cumulative_args): Use base AAPCS for conversions from
5399         floating-point types to DImode.
5400         (arm_attribute_table): Add pcs attribute.
5401         (arm_handle_pcs_attribute): New.
5402         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
5403         conversions from floating-point types to DImode, also declare them
5404         to use base AAPCS and declare functions they call to use base
5405         AAPCS and their RTABI names.
5406
5407         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5408
5409         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
5410         -mfloat-abi=hard not being supported for VFP.
5411
5412         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
5413
5414         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
5415         SYMBOL_REF to hard_libcall_value.
5416
5417         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5418             Richard Earnshaw  <rearnsha@arm.com>
5419
5420         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
5421         has been put on the stack, all remaining co-processory arguments for
5422         that co-processor also go on the stack.
5423
5424         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5425
5426         * config/arm/arm.c (arm_return_in_memory): Handle returning
5427         vectors of suitable size in registers also for AAPCS case.
5428
5429         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
5430
5431         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
5432
5433         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
5434
5435         ARM Hard-VFP calling convention
5436         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
5437         * target.h (gcc_target): Add libcall_value to table of call hooks.
5438         * targhooks.h (default_libcall_value): Default implementation.
5439         * targhooks.c (default_libcall_value): Likewise.
5440         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
5441         * optabs.c (expand_unop): Use it.
5442         * expr.h (hard_libcall_value): Pass the function RTX through.
5443         * calls.c (emit_library_call_value_1): Update call to
5444         hard_libcall_value.
5445         * explow.c (hard_libcall_value): Use new target hook.
5446         * testsuite/lib/target-supports.exp
5447         (check_effective_target_arm_hard_vfp_ok): New hook.
5448         (check_effective_target_arm_neon_ok): Improve test for neon
5449         availability.
5450         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
5451         * config/arm/arm.c: Include cgraph.h
5452         (TARGET_FUNCTION_VALUE): Override default hook.
5453         (arm_pcs_default): New variable.
5454         (arm_override_options): Don't fault hard calling convention with VFP.
5455         Add support for AAPCS variants.
5456         (arm_function_value): Make static.  Handle AAPCS variants.
5457         (arm_libcall_value): New function.
5458         (arm_apply_result_size): Handle VFP registers in results.
5459         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
5460         conventions.
5461         (pcs_attribute_args): New variable.
5462         (arm_pcs_from_attribute): New function.
5463         (arm_get_pcs_model): New function.
5464         (aapcs_vfp_cum_init): New function.
5465         (aapcs_vfp_sub_candidate): New function.
5466         (aapcs_vfp_is_return_candidate): New function.
5467         (aapcs_vfp_is_call_candidate): New function.
5468         (aapcs_vfp_allocate): New function.
5469         (aapcs_vfp_allocate_return_reg): New function.
5470         (aapcs_vfp_advance): New function.
5471         (aapcs_cp_arg_layout): New variable.
5472         (aapcs_select_call_coproc): New function.
5473         (aapcs_select_return_coproc): New function.
5474         (aapcs_allocate_return_reg): New function.
5475         (aapcs_libcall_value): New function.
5476         (aapcs_layout_arg): New function.
5477         (arm_init_cumulative_args): Initialize AAPCS args data.
5478         (arm_function_arg): Handle AAPCS variants using new interface.
5479         (arm_arg_parital_bytes): Likewise.
5480         (arm_function_arg_advance): New function.
5481         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
5482         calling conventions.
5483         (arm_setup_incoming_varargs): Handle new AAPCS args data.
5484         * arm.h (NUM_VFP_ARG_REGS): Define.
5485         (LIBCALL_VALUE): Update.
5486         (FUNCTION_VALUE): Delete.
5487         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
5488         (arm_pcs): New enum.
5489         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
5490         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
5491         (FUNCTION_ARG_REGNO_P): Add VFP regs.
5492         * arm-protos.h (arm_function_arg_advance): Add.
5493         (aapcs_libcall_value): Add.
5494         (arm_function_value): Delete.
5495
5496 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
5497             H.J. Lu  <hongjiu.lu@intel.com>
5498
5499         PR target/40957
5500         * config/i386/i386.c (standard_sse_mode_p): Remove.
5501         (standard_sse_constant_p): Return 2 for integer mode
5502         vector_all_ones_operand when SSE2 is enabled.
5503         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
5504         (ix86_expand_vector_move): Do not check for negative values from
5505         standard_sse_constant_p.
5506
5507 2009-08-06  Richard Guenther  <rguenther@suse.de>
5508
5509         * tree-ssa.c (useless_type_conversion_p_1): Make function and
5510         array type comparisons frontend independent.
5511         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
5512         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
5513         out array reference lower bound and element size operands.
5514         (ao_ref_init_from_vn_reference): Properly compute the offset
5515         for ARRAY_RANGE_REF.
5516         (vn_reference_fold_indirect): Fill out array reference lower
5517         bound and element size operands.
5518         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
5519         a non gimple valued reference operand which can happen for
5520         array reference lower bound or element size.
5521         (create_component_ref_by_pieces_1): Properly generate the
5522         element size operand for array references.
5523
5524 2009-08-06  Richard Guenther  <rguenther@suse.de>
5525
5526         PR tree-optimization/40964
5527         * tree.c (iterative_hash_host_wide_int): Export.
5528         * tree.h (iterative_hash_host_wide_int): Declare.
5529         * tree-ssa-structalias.c (heapvar_map): New struct.
5530         (heapvar_map_eq): New function.
5531         (heapvar_map_hash): Likewise.
5532         (heapvar_lookup): Adjust.
5533         (heapvar_insert): Likewise.
5534         (make_constraint_from_heapvar): Allow multiple heap variables
5535         per decl at different offsets.
5536         (init_alias_heapvars): Adjust.
5537
5538 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
5539
5540         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
5541         * mips_output_sync_loop (mips_output_sync_loop): Only emit
5542         trailing sync if TARGET_SYNC_AFTER_SC.
5543
5544 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
5545
5546         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
5547         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
5548         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
5549         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
5550         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5551         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5552         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5553         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
5554         test_and_set_12): Rewrite calls to mips_output_sync_loop.
5555         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
5556         the prototype declaration match the definition.
5557         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
5558         instructions explicitly.  Add barrier_before and operands
5559         parameters.
5560         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
5561         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
5562         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
5563         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5564         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
5565         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
5566
5567 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
5568
5569         * tree-ssa-alias.c: Fix intervals to use [) syntax.
5570
5571 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
5572             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
5573
5574         PR target/40906
5575         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
5576         source operand.
5577
5578 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
5579
5580         PR rtl-optimization/40924
5581         * dse.c (canon_address): Before calling cselib_expand_value_rtx
5582         make sure canon_rtx (mem_address) isn't simpler than
5583         canon_rtx (expanded_mem_address).
5584
5585 2009-08-05  Li Feng  <nemokingdom@gmail.com>
5586
5587         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
5588         for each poly_bb_p.
5589         (build_scop_drs): Build alias set for each SCoP.
5590
5591 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
5592
5593         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
5594         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
5595         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
5596         (MIPS_ARCH_FLOAT_SPEC): Likewise.
5597         (BASE_DRIVER_SELF_SPECS): Likewise.
5598
5599 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
5600
5601         * tree-ssa-alias.c: Fix some comment typos.
5602
5603 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
5604
5605         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
5606         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
5607
5608 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
5609
5610         PR c/39902
5611         * simplify-rtx.c (simplify_binary_operation_1): Disable
5612         simplifications for decimal float operations.
5613
5614 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
5615
5616         PR middle-end/40943
5617         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
5618         operand of INDIRECT_REF.
5619
5620 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
5621
5622         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
5623         constants referencing TLS symbols.
5624
5625 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5626
5627         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
5628         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
5629
5630 2009-08-03  Richard Guenther  <rguenther@suse.de>
5631
5632         * tree.c (make_vector_type): Build a main variant first,
5633         get the canonical one and then build the variant.
5634         * tree-ssa.c (useless_type_conversion_p_1): Handle
5635         fixed-point types.
5636         (useless_type_conversion_p): Conversions to pointers to
5637         incomplete record types are useless.
5638
5639 2009-08-03  Richard Guenther  <rguenther@suse.de>
5640
5641         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
5642         file will be created.
5643         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
5644         * toplev.c (compile_file): Adjust comment.
5645
5646 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
5647
5648         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
5649         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
5650         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5651         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5652         (sh_promote_function_mode): Fix typo.
5653
5654 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
5655
5656         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
5657
5658 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5659
5660         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
5661         declaration arguments.
5662
5663 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
5664
5665         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
5666         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
5667         (ix86_split_ashl): Ditto.
5668         (ix86_expand_vector_init_one_nonzero): Ditto.
5669         (ix86_expand_vector_set): Ditto.
5670         (ix86_expand_reduc_v4sf): Ditto.
5671
5672 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
5673
5674         * explow.c (promote_function_mode): Remove assert.
5675         * config/sh/sh.c (sh_promote_function_mode): Declare.
5676
5677 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5678
5679         * config/pa/pa.c (pa_promote_function_mode): Declare.
5680         Change to static.  Fix promote_mode call.
5681
5682         * gthr-dce.h (CONST_CAST2): Define if not defined.
5683         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
5684
5685         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
5686
5687 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
5688
5689         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5690         now write-only variable unsignedp.
5691         (expand_expr_real_1): Use promote_decl_mode.
5692         * expr.h (promote_function_mode, promote_decl_mode): New.
5693         (promote_mode): Remove last argument.
5694         * function.c (assign_temp): Drop last argument of promote_mode.
5695         (assign_parm_find_data_types): Use promote_function_mode.
5696         (assign_parm_setup_reg): Likewise.
5697         (expand_function_end): Use promote_function_mode.
5698         * calls.c (initialize_argument_information): Use promote_function_mode.
5699         (precompute_arguments): Use promote_mode instead of checking if
5700         only PROMOTE_FUNCTION_MODE is defined.
5701         (expand_call): When making sibcall decisions, use promote_function_mode.
5702         Below, remove an if for targetm.calls.promote_function_return and
5703         and use promote_function_mode.
5704         (emit_library_call_value_1): Use promote_function_mode, fix bug
5705         where promote_mode was passed FOR_CALL == 0 for a return value in an
5706         assertion.
5707         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5708         * explow.c (promote_function_mode, promote_decl_mode): New.
5709         (promote_mode): Keep only the FOR_CALL == 0 case.
5710         * combine.c (setup_incoming_promotion): Remove test of
5711         promote_function_args.  Use promote_function_mode.
5712         * stmt.c (expand_value_return): Use promote_decl_mode.
5713         (expand_decl): Use promote_decl_mode.
5714
5715         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5716         now write-only variable unsignedp.
5717         (expand_expr_real_1): Use promote_decl_mode.
5718         * expr.h (promote_function_mode, promote_decl_mode): New.
5719         (promote_mode): Remove last argument.
5720         * function.c (assign_temp): Drop last argument of promote_mode.
5721         (assign_parm_find_data_types): Use promote_function_mode.
5722         (assign_parm_setup_reg): Likewise.
5723         (expand_function_end): Use promote_function_mode.
5724         * calls.c (initialize_argument_information): Use promote_function_mode.
5725         (precompute_arguments): Use promote_mode instead of checking if
5726         only PROMOTE_FUNCTION_MODE is defined.
5727         (expand_call): When making sibcall decisions, use promote_function_mode.
5728         Below, remove an if for targetm.calls.promote_function_return and
5729         and use promote_function_mode.
5730         (emit_library_call_value_1): Use promote_function_mode, fix bug
5731         where promote_mode was passed FOR_CALL == 0 for a return value in an
5732         assertion.
5733         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5734         * explow.c (promote_function_mode, promote_decl_mode): New.
5735         (promote_mode): Keep only the FOR_CALL == 0 case.
5736         * combine.c (setup_incoming_promotion): Remove test of
5737         promote_function_args.  Use promote_function_mode.
5738         * stmt.c (expand_value_return): Use promote_decl_mode.
5739         (expand_decl): Use promote_decl_mode.
5740
5741         * explow.c (promote_function_mode): Just call the target hook.
5742         * targhooks.c (default_promote_function_mode,
5743         default_promote_function_mode_always_promote): New.
5744         * targhooks.h (default_promote_function_mode,
5745         default_promote_function_mode_always_promote): Declare.
5746         * target.h (promote_function_args, promote_function_return): Remove.
5747         (promote_function_mode): New.
5748         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
5749         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5750         (TARGET_PROMOTE_FUNCTION_MODE): New.
5751         (TARGET_CALLS): Adjust.
5752         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
5753         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
5754
5755         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
5756         * config/s390/s390.c (s390_promote_function_mode): ... here,
5757         with pointer handling.
5758         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5759         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5760
5761         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
5762         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
5763         with pointer handling.
5764         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5765         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5766
5767         * config/sh/sh-protos.h (sh_promote_function_mode): New.
5768         * config/sh/sh.c (sh_promote_function_mode): New.
5769         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5770         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5771
5772         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
5773         * config/cris/cris.c (cris_promote_function_mode): ... here.
5774         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5775         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5776
5777         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
5778         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
5779         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5780         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5781
5782         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
5783         * config/arm/arm.c (arm_promote_function_mode): ... here, without
5784         complex type handling.
5785         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5786         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5787
5788         * config/pa/pa.c (pa_promote_function_mode): New.
5789         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5790         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5791
5792         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
5793         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5794         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
5795         * config/xtensa/xtensa.c: Likewise.
5796         * config/stormy16/stormy16.c: Likewise.
5797         * config/iq2000/iq2000.c: Likewise.
5798         * config/rs6000/rs6000.c: Likewise.
5799         * config/picochip/picochip.c: Likewise.
5800         * config/arc/arc.c: Likewise.
5801         * config/mcore/mcore.c: Likewise.
5802         * config/score/score.c: Likewise.
5803         * config/mips/mips.c: Likewise.
5804         * config/bfin/bfin.c: Likewise.
5805         * config/ia64/ia64.c: Likewise (disabled though).
5806
5807         * config/frv/frv.h: Remove pointless remark.
5808
5809         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
5810         TARGET_PROMOTE_FUNCTION_ARGS,
5811         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
5812         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
5813
5814 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
5815
5816         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
5817         -floop-parallelize-all.
5818         * toplev.c (process_options): Rename flag_graphite_force_parallel to
5819         flag_loop_parallelize_all.
5820         * tree-ssa-loop.c (gate_graphite_transforms): Same.
5821         * graphite.c (graphite_transform_loops): Same.
5822         * common.opt: Same.
5823         * graphite-poly.c (apply_poly_transforms): Same.
5824
5825 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
5826
5827         PR tree-optimization/40914
5828         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
5829         if set, then check the delta field of the PMF record.
5830         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
5831         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
5832         call is stored in the delta.
5833
5834 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
5835
5836         * config/mips/mips.md (*clear_upper32_dext): New pattern.
5837
5838 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
5839
5840         * config/i386/bsd.h (ASM_BYTE): New define.
5841         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
5842         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
5843         .byte.  Use fputs or putc instead of fprintf where appropriate.
5844         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
5845         fputs or putc instead of fprintf where appropriate.
5846         * config/i386/i386elf.h: Ditto.
5847         * config/i386/sysv4.h: Ditto.
5848
5849         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
5850         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
5851         (*tls_global_dynamic_64): Ditto.
5852
5853 2009-07-31  Christian Bruel  <christian.bruel@st.com>
5854
5855         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5856
5857 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5858
5859         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
5860         Remove dead code for MINUS.
5861
5862 2009-07-31  Anthony Green  <green@moxielogic.com>
5863
5864         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
5865         $r12 in prologue.
5866         (moxie_expand_epilogue): Ditto for epilogue.
5867         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
5868         incoming arguments.
5869         (moxie_function_arg): Ditto.
5870         (moxie_pass_by_reference): Ditto.
5871         (moxie_arg_partial_bytes): Ditto.
5872         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
5873         (FUNCTION_ARG_ADVANCE) Ditto.
5874         (REG_PARM_STACK_SPACE) Ditto.
5875         (FUNCTION_ARG_REGNO_P) Dito.
5876
5877         * config.gcc: Add moxie linux config support.
5878         * gcc/config/moxie/uclinux.h: New file.
5879
5880 2009-07-31  DJ Delorie  <dj@redhat.com>
5881
5882         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
5883         (UNSPECV_SP_SWITCH_E): New.
5884         (sp_switch_1): Change to an unspec.
5885         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
5886         replace $r15.
5887         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
5888         reference the new stack's address
5889
5890 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5891
5892         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
5893         graphite-clast-to-gimple.o, graphite-dependences.o,
5894         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
5895         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
5896         (graphite-blocking.o,
5897         graphite-clast-to-gimple.o, graphite-dependences.o,
5898         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
5899         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
5900         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
5901         * cfgloop.h (struct loop): Add can_be_parallel field.
5902         * common.opt (fgraphite-identity): Moved up.
5903         (fgraphite-force-parallel): New flag.
5904         * graphite.c: Rewrite.
5905         * graphite.h: Rewrite.
5906         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
5907         after Graphite.
5908         * toplev.c (graphite_out_file): New file descriptor.
5909         (graphite_in_file): New.
5910         (process_options): flag_graphite_force_parallel cannot be used without
5911         Graphite.
5912         * tree-ssa-loop.c: Include toplev.h.
5913         (gate_graphite_transforms): Enable flag_graphite for
5914         flag_graphite_force_parallel.
5915
5916 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5917
5918         * ChangeLog.graphite: New.
5919         * graphite-blocking.c: New.
5920         * graphite-clast-to-gimple.c: New.
5921         * graphite-clast-to-gimple.h: New.
5922         * graphite-dependences.c: New.
5923         * graphite-dependences.h: New.
5924         * graphite-interchange.c: New.
5925         * graphite-poly.c: New.
5926         * graphite-poly.h: New.
5927         * graphite-ppl.c: New.
5928         * graphite-ppl.h: New.
5929         * graphite-scop-detection.c: New.
5930         * graphite-scop-detection.h: New.
5931         * graphite-sese-to-poly.c: New.
5932         * graphite-sese-to-poly.h: New.
5933         * sese.c: New.
5934         * sese.h: New.
5935
5936 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5937
5938         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
5939         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
5940
5941 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5942
5943         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
5944         (scev_is_linear_expression): Return false if the evolution is not
5945         affine multivariate.
5946
5947 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5948
5949         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
5950         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
5951
5952 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5953
5954         * tree-data-ref.c (debug_data_references): New.
5955         (debug_data_reference): New.
5956         * tree-data-ref.h (debug_data_references): Declared.
5957         (debug_data_reference): Declared.
5958
5959 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5960
5961         * tree-data-ref.c (stmt_simple_memref_p: Removed.
5962         * tree-data-ref.h (scop_p): Removed.
5963         (struct data_reference): Remove field scop.
5964         (DR_SCOP): Removed.
5965         (stmt_simple_memref_p): Removed.
5966
5967 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5968
5969         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
5970         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
5971         basic block empty.
5972
5973 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5974
5975         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
5976
5977 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5978
5979         * doc/invoke.texi (-fgraphite-identity): Documented.
5980
5981 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5982
5983         * tree-scalar-evolution.c: Fix comment.
5984         (instantiate_scev_1): Return unknow from scev instantiation if the
5985         result is not above instantiate_below.
5986
5987 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
5988
5989         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
5990         static anymore.  Instantiate the symbols that may have been introduced
5991         by chrec_apply.
5992         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
5993         Declared.
5994
5995 2009-07-30  DJ Delorie  <dj@redhat.com>
5996
5997         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
5998         .vliw directive to VLIW sections.
5999
6000 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6001
6002         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6003         New variables.
6004         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6005         (AUTOHEADER): New variable.
6006         ($(srcdir)/cstamp-h.in): Use it.
6007
6008 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
6009             Pat Haugen  <pthaugen@us.ibm.com>
6010             Revital Eres <ERES@il.ibm.com>
6011
6012         * config/rs6000/vector.md (VEC_F): Add VSX support.
6013         (VEC_A): Ditto.
6014         (VEC_N): Ditto.
6015         (mov<mode>): Ditto.
6016         (vector_load_<mode>): Ditto.
6017         (vector_store_<mode>): Ditto.
6018         (vector GPR move split): Ditto.
6019         (vec_reload_and_plus_<mptrsize>): Ditto.
6020         (vec_reload_and_reg_<mptrsize>): Ditto.
6021         (add<mode>3): Ditto.
6022         (sub<mode>3): Ditto.
6023         (mul<mode>3): Ditto.
6024         (neg<mode>2): Ditto.
6025         (abs<mode>2): Ditto.
6026         (smin<mode>3): Ditto.
6027         (smax<mode>3): Ditto.
6028         (vector_eq<mode>): Ditto.
6029         (vector_gt<mode>): Ditto.
6030         (vector_ge<mode>): Ditto.
6031         (vector_gtu<mode>): Ditto.
6032         (vector_select_<mode>_uns): Ditto.
6033         (vector_eq_<mode>_p): Ditto.
6034         (vector_gt_<mode>_p): Ditto.
6035         (vector_ge_<mode>_p): Ditto.
6036         (vector_gtu_<mode>_p): Ditto.
6037         (cr6_test_for_zero): Ditto.
6038         (cr6_test_for_zero_reverse): Ditto.
6039         (cr6_test_for_lt): Ditto.
6040         (cr6_test_for_lt_reverse): Ditto.
6041         (xor<mode>3): Ditto.
6042         (ior<mode>3): Ditto.
6043         (and<mode>3): Ditto.
6044         (one_cmpl<mode>2): Ditto.
6045         (nor<mode>2): Ditto.
6046         (andc<mode>2): Ditto.
6047         (float<VEC_int<mode>2): Ditto.
6048         (unsigned_float<VEC_int><mode>2): Ditto.
6049         (fix_trunc<mode><VEC_int>2): Ditto.
6050         (fixuns_trunc<mode><VEC_int>2): Ditto.
6051         (vec_init<mode>):
6052         (vec_set<mode>): Ditto.
6053         (vec_extract<mode>): Ditto.
6054         (vec_interleave_highv4sf): Ditto.
6055         (vec_interleave_lowv4sf): Ditto.
6056         (vec_realign_load_<mode>): Ditto.
6057         (vec_shl_<mode>): Ditto.
6058         (vec_shr_<mode>): Ditto.
6059         (div<mode>3): New patterns for VSX.
6060         (vec_interleave_highv2df): Ditto.
6061         (vec_interleave_lowv2df): Ditto.
6062         (vec_pack_trunc_v2df): Ditto.
6063         (vec_pack_sfix_trunc_v2df): Ditto.
6064         (vec_pack_ufix_trunc_v2df): Ditto.
6065         (vec_unpacks_hi_v4sf): Ditto.
6066         (vec_unpacks_lo_v4sf): Ditto.
6067         (vec_unpacks_float_hi_v4si): Ditto.
6068         (vec_unpacks_float_lo_v4si): Ditto.
6069         (vec_unpacku_float_hi_v4si): Ditto.
6070         (vec_unpacku_float_lo_v4si): Ditto.
6071         (movmisalign<mode>): Ditto.
6072         (vector_ceil<mode>2): New patterns for vectorizing math library.
6073         (vector_floor<mode>2): Ditto.
6074         (vector_btrunc<mode>2): Ditto.
6075         (vector_copysign<mode>3): Ditto.
6076
6077         * config/rs6000/predicates.md (easy_vector_constant_msb): New
6078         predicate for setting the high bit in each word, used for copysign.
6079
6080         * config/rs6000/ppc-asm.h (f19): Whitespace.
6081         (f32-f63): Define if VSX.
6082         (v0-v31): Define if Altivec.
6083         (vs0-vs63): Define if VSX.
6084
6085         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6086
6087         * config/rs6000/power7.md: New file, provide tuning parameters for
6088         -mcpu=power7.
6089
6090         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6091         (rs6000_cpu_cpp_builtins): Ditto.
6092         (altivec_overloaded_builtins): Ditto.
6093         (altivec_resolve_overloaded_builtin): Ditto.
6094
6095         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6096         debug switch to disable vectorizing simple math builtin
6097         functions.
6098
6099         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6100         Vectorize simple math builtin functions.
6101         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6102         hook to vectorize math builtins.
6103         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6104         (rs6000_builtin_conversion): Add VSX/power7 support.
6105         (rs6000_builtin_vec_perm): Ditto.
6106         (vsplits_constant): Add support for loading up a vector constant
6107         with just the high bit set in each part.
6108         (rs6000_expand_vector_init): Add VSX/power7 support.
6109         (rs6000_expand_vector_set): Ditto.
6110         (rs6000_expand_vector_extract): Ditto.
6111         (rs6000_emit_move): Ditto.
6112         (bdesc_3arg): Ditto.
6113         (bdesc_2arg): Ditto.
6114         (bdesc_1arg): Ditto.
6115         (rs6000_expand_ternop_builtin): Ditto.
6116         (altivec_expand_builtin): Ditto.
6117         (rs6000_expand_unop_builtin): Ditto.
6118         (rs6000_init_builtins): Ditto.
6119         (altivec_init_builtins): Ditto.
6120         (builtin_function_type): Ditto.
6121         (rs6000_common_init_builtins): Ditto.
6122         (rs6000_handle_altivec_attribute); Ditto.
6123         (rs6000_mangle_type): Ditto.
6124         (rs6000_vector_mode_supported_p): Ditto.
6125         (rs6000_mode_dependent_address): Altivec addresses with AND -16
6126         are mode dependent.
6127
6128         * config/rs6000/vsx.md: New file for VSX support.
6129
6130         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6131         identifing values with just the most significant bit set.
6132         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
6133         vectorized builtins.
6134
6135         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6136         (UNSPEC_VRFIM): Delete.
6137         (splitter for loading up vector with most significant bit): New
6138         splitter for vectorizing copysign.
6139         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
6140         vectorizing simple math functions.
6141         (altivec_vrfip): Add support for vectorizing simple math functions.
6142         (altivec_vrfim): Ditto.
6143         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6144
6145         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6146         (power7.md, vsx.md): Include for power7 support.
6147         (copysigndf3): Use VSX instructions if -mvsx.
6148         (negdf2_fpr): Ditto.
6149         (absdf2_fpr): Ditto.
6150         (nabsdf2_fpr): Ditto.
6151         (adddf3_fpr): Ditto.
6152         (subdf3_fpr): Ditto.
6153         (muldf3_fpr): Ditto.
6154         (divdf3_fpr): Ditto.
6155         (fix_truncdfdi2_fpr): Ditto.
6156         (cmpdf_internal1): Ditto.
6157         (fred, fred_fpr): Convert into expander/insn to add VSX support.
6158         (btruncdf2, btruncdf2_fpr): Ditto.
6159         (ceildf2, ceildf2_fpr): Ditto.
6160         (floordf2, floordf2_fpr): Ditto.
6161         (floatdidf2, floatdidf2_fpr): Ditto.
6162         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
6163         (fmsubdf4_fpr): Ditto.
6164         (fnmadddf4_fpr_1): Ditto.
6165         (fnmadddf4_fpr_2): Ditto.
6166         (fnmsubdf4_fpr_1): Ditto.
6167         (fnmsubdf4_fpr_2): Ditto.
6168         (fixuns_truncdfdi2): Add expander for VSX support.
6169         (fix_truncdfdi2): Ditto.
6170         (fix_truncdfsi2): Ditto.
6171         (ftruncdf2): Ditto.
6172         (btruncsf2): Whitespace.
6173         (movdf_hardfloat32): Add support for VSX registers.
6174         (movdf_softfloat32): Ditto.
6175         (movdf_hardfloat64): Ditto.
6176         (movdf_hardfloat64_mfpgpr): Ditto.
6177         (movdf_softfloat64): Ditto.
6178         (movti splitters): Add check for vector registers supporting
6179         TImode in the future.
6180         (bpermd): Add power7 bpermd instruction.
6181
6182         * config/rs6000/altivec.h (vec_div): Define if VSX.
6183         (vec_mul): Ditto.
6184         (vec_msub): Ditto.
6185         (vec_nmadd): Ditto.
6186         (vec_nearbyint): Ditto.
6187         (vec_rint): Ditto.
6188         (vec_sqrt): Ditto.
6189         (all predicates): Use the generic builtin function, and not the V4SF
6190         specific function so that the predicates will work with VSX's V2DF.
6191         (vec_all_*): Ditto.
6192         (vec_any_*): Ditto.
6193
6194         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6195         Document new VSX functions and types.
6196
6197         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6198         switches.
6199
6200         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6201         "wa", and "j" constraints.  Modify "v" to talk about Altivec
6202         instead of just vector.
6203
6204 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
6205
6206         PR debug/26475
6207         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6208         location for phi arguments.
6209         (rewrite_update_phi_arguments): Find locations for reaching defs.
6210         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6211         Add location to add_phi_arg calls.
6212         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6213         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6214         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6215         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6216         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6217         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6218         * tree-phinodes.c (make_phi_node): Initialize location.
6219         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6220         (add_phi_arg): Add location parameter.
6221         (remove_phi_arg_num): Move location when moving phi argument.
6222         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6223         location.
6224         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6225         slpeel_update_phi_nodes_for_guard1,
6226         slpeel_update_phi_nodes_for_guard2,
6227         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6228         vect_loop_versioning): Set locations.
6229         * tree-parloops.c (create_phi_for_local_result,
6230         transform_to_exit_first_loop, create_parallel_loop): Add locations.
6231         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6232         * tree-vect-loop.c (get_initial_def_for_induction,
6233         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6234         locations.
6235         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
6236         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
6237         (gimple_phi_arg_set_location): New.  Set locus.
6238         (gimple_phi_arg_has_location): New.  Check for locus.
6239         (redirect_edge_var_map_location): New.  Return locus from var_map.
6240         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6241         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6242         combining PHI arguments.
6243         (cond_store_replacement): Set location.
6244         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
6245         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
6246         scop_add_exit_phis_edge): Add locations.
6247         * tree-cfgcleanup.c (remove_forwarder_block,
6248         remove_forwarder_block_with_phi): Add locations.
6249         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
6250         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
6251         locations.
6252         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
6253         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
6254         flush_pending_stmts): Add source location.
6255         * lambda-code.c (perfect_nestify): Maintain location stack with argument
6256         stack to preserve locations.
6257         * tree-vect-stmts.c (vectorizable_load): Add location.
6258         * tree-inline.c (copy_phis_for_bb): Copy locus.
6259         (setup_one_parameter): Add call locus to inlined parameter stmts.
6260         (initialize_inlined_parameters): Pass in call location as parameter
6261         assignment locus.
6262         (tree_function_versioning): Pass location to setup_one_parameter.
6263         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
6264         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
6265         copy and edge lists.
6266         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
6267         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
6268         locus parameter and override the stmt default if provided.
6269         (new_elim_graph, clear_elim_graph, delete_elim_graph,
6270         elim_graph_add_edge, elim_graph_remove_succ_edge,
6271         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
6272         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
6273         eliminate_phi):  Add locus info in elimination graph for each edge and
6274         value copy.
6275         (insert_backedge_copies): Copy locus if present.
6276         * tree-flow.h (struct _edge_var_map): Add locus field.
6277         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
6278         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
6279         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
6280         locations.
6281         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
6282
6283 2009-07-30  Martin Jambor  <mjambor@suse.cz>
6284
6285         PR tree-optimization/40570
6286         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
6287         use inlining loops.
6288
6289 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
6290
6291         * ssa-loop-manip.c: Include langhooks.h.
6292         (rewrite_phi_with_iv): New.
6293         (rewrite_all_phi_nodes_with_iv): New.
6294         (canonicalize_loop_ivs): Move here from tree-parloops.c.
6295         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
6296         * tree-parloops.c (loop_parallel_p): Move out all conditions
6297         except dependency check.
6298         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
6299         (gen_parallel_loop): Call canonicalize_loop_ivs without
6300         reduction_list argument.
6301         (build_new_reduction): New.
6302         (gather_scalar_reductions): New.
6303         (try_get_loop_niter): New.
6304         (try_create_reduction_list): New.
6305         (parallleize_loops): Change the parallel conditions check.
6306         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
6307         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
6308
6309 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
6310
6311         * opt-functions.awk (opt_args): Allow argument to be enclosed in
6312         curly braces.
6313         * doc/options.texi (Option properties):  Mention new quoting syntax.
6314
6315 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6316
6317         * config/alpha/alpha.c (alpha_start_function):
6318         Handle VMS_DEBUG_MAIN_POINTER
6319         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
6320         * doc/invoke.texi: Document -mdebug-main switch.
6321
6322 2009-07-29  Richard Henderson  <rth@redhat.com>
6323
6324         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
6325         (cgraph_create_edge_including_clones): Likewise.
6326         * tree-inline.c (copy_bb): Operate on the correct edges
6327         when updating the callgraph.
6328
6329 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6330
6331         * config/alpha/vms-cc.c: Deleted.
6332         * config/alpha/vms-ld.c: Deleted.
6333         * config/alpha/t-vms64: Moved to config/vms
6334         * config/alpha/vms-crt0-64.c: Moved to config/vms
6335         * config/alpha/vms-crt0.c: Moved to config/vms
6336         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
6337         * config/alpha/vms-psxcrt0.c: Moved to config/vms
6338         * config/alpha/xm-vms.h: Moved to config/vms
6339         * config/alpha/x-vms: Moved to config/vms
6340         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
6341         config/vms/t-vms.
6342         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
6343         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
6344         (version): Set.
6345         * config/vms/t-vms64: Moved here from config/alpha
6346         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
6347         (argc,argv,envp): Enforce 32bit malloc'ing.
6348         * config/vms/vms-psxcrt0-64.c: Likewise.
6349         * config/vms/vms-crt0.c: Moved here from config/alpha.
6350         * config/vms/vms-psxcrt0.c: Likewise.
6351         * config/vms/vms-crtl-64.h: New file.
6352         * config/vms/vms-crtl.h: New file.
6353         * config/vms/vms.opt: New file.
6354         * config/vms/xm-vms64.h: New file.
6355         * config/vms/xm-vms.h: Moved here from config/alpha.
6356         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
6357         Set.
6358         * config/vms/x-vms: Moved here from config/alpha.
6359         (version, VMS_EXTRA_PARTS): Moved to t-vms.
6360         (vms-ld.o, vms-cc.o): Removed.
6361         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
6362
6363 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6364
6365         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
6366         correct stack (obvious VMS fix).
6367
6368 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6369
6370         * dwarf2out.c (output_file_names): Output VMS style file name, size,
6371         date, version info if VMS_DEBUGGING_INFO defined.
6372         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
6373         size, date calculating code moved here.
6374
6375 2009-07-29  Paul Brook  <paul@codesourcery.com>
6376
6377         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
6378         do_push/do_pop.
6379
6380 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
6381
6382         PR target/40577
6383         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
6384         to DImode when generating insq_le insn.
6385
6386 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6387
6388         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
6389         New macro set for VMS_DEBUGGGING_INFO.
6390         (AT_string_form): Use it.
6391
6392 2009-07-28  DJ Delorie  <dj@redhat.com>
6393
6394         * config/mep/mep.c (vtext_section): New.
6395         (vftext_section): New.
6396         (ftext_section): New.
6397         (mep_select_section): Add support for functions.
6398         (mep_unique_section): Likewise.
6399         (mep_asm_init_sections): Likewise.
6400         (mep_encode_section_info): Remove it from here.
6401
6402         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
6403
6404 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
6405
6406         * tree.h (TREE_DEPRECATED): Document it is used for types too.
6407         (TYPE_VECTOR_OPAQUE): Use default_def_flag
6408
6409 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6410
6411         * dwarf2out.c (output_file_names): Test new macro
6412         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
6413         (add_comp_dir_attribute): Likewise.
6414
6415 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
6416
6417         * config/i386/mingw-w64.h (LINK_SPEC): Add
6418         separating space between commands.
6419
6420 2009-07-28  Jan Hubicka  <jh@suse.cz>
6421
6422         PR tree-optimization/40759
6423         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
6424         for renaming.
6425
6426 2009-07-27  DJ Delorie  <dj@redhat.com>
6427
6428         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
6429         types are dword-aligned.
6430         (mep_expand_va_start): Likewise.
6431
6432 2009-07-27  Olivier Hainque  <hainque@adacore.com>
6433             Douglas B Rupp  <rupp@gnat.com>
6434
6435         * convert.c (convert_to_pointer): Don't assume the target
6436         pointer type is POINTER_SIZE long. Fetch its precision instead.
6437
6438 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
6439
6440         * system.h (fopen): Undefine if macro.
6441
6442 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
6443
6444         * dwarf2out.c (output_cfi_p): Removed.
6445         (output_cfis): New function.
6446         (output_fde): New function, split from output_call_frame_info.
6447         (output_call_frame_info): Use it.
6448         (dwarf2out_switch_text_section): Use output_cfis.
6449
6450 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6451
6452         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
6453         TARGET_BI_ARCH is specified without enabling SJLJ.
6454         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
6455         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
6456
6457 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
6458
6459         * arm.md (negdi2): Use DImode if forcing a value into a register.
6460
6461 2009-07-26  Ira Rosen  <irar@il.ibm.com>
6462
6463         PR tree-optimization/40801
6464         * tree-vect-stmts.c (vectorizable_call): Get previous copy
6465         of vector operand from the previous copy of vector statement.
6466         Pass the correct definition type value to
6467         vect_get_vec_def_for_stmt_copy().
6468
6469 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6470
6471         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
6472         const char ** conversion.
6473
6474 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6475
6476         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
6477         fancy_abort() if !ENABLE_ASSERT_CHECKING.
6478         (gcc_unreachable): Invoke __builtin_unreachable() if
6479         !ENABLE_ASSERT_CHECKING.
6480
6481 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6482
6483         PR rtl-optimization/40445
6484         * emit-rtl.c (next_nonnote_insn_bb): New function.
6485         * rtl.h (next_nonnote_insn_bb): Declare new function.
6486         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
6487         with no successors that is the successor of the ENTRY_BLOCK.
6488         Continue from the top after removing an empty fallthrough block.
6489         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
6490         of next_nonnote_insn.
6491
6492 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6493
6494         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
6495
6496 2009-07-25  Martin Jambor  <mjambor@suse.cz>
6497
6498         * c-common.c (c_common_attribute_table): New element for noclone.
6499         (handle_noclone_attribute): New function. Forward-declare.
6500         * tree-inline.c (tree_versionable_function_p): Check for noclone
6501         attribute.
6502         * doc/extend.texi (Labels as Values): Document need for noclone.
6503         (Function Attributes): Document noclone attribute.
6504
6505 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
6506
6507         PR rtl-optimization/34999
6508         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
6509         and dw_fde_switched_cold_to_hot fields.
6510         (output_cfi_p): New function.
6511         (output_call_frame_info): If fde->dw_fde_switched_sections,
6512         output 2 FDEs instead of one with corrupted header.
6513         (dwarf2out_do_cfi_startproc): New function.
6514         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
6515         and fde->dw_fde_switched_cold_to_hot.
6516         (dwarf2out_switch_text_section): Compute
6517         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
6518         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
6519         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
6520         Otherwise, compute fde->dw_fde_switch_cfi.
6521
6522 2009-07-24  Cary Coutant  <ccoutant@google.com>
6523
6524         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
6525
6526 2009-07-24  Cary Coutant  <ccoutant@google.com>
6527
6528         * cfghooks.c (split_block): Copy discriminator to new block.
6529         * tree-cfg.c (assign_discriminator): Check location of last
6530         instruction in block as well as first.
6531
6532 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
6533
6534         * config/i386/linux.c: Use fputs or putc instead of fprintf
6535         where appropriate.
6536         * config/i386/gas.h: Ditto.
6537         * config/i386/x86-64.h: Ditto.
6538         * config/i386/att.h: Ditto.
6539
6540 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6541
6542         * expmed.c (emit_store_flag): Use a recursive call to optimize the
6543         xor case.
6544
6545 2009-07-24  Martin Jambor  <mjambor@suse.cz>
6546
6547         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
6548         (ipa_push_func_to_list_1): Declare.
6549         (ipa_push_func_to_list): New function.
6550
6551         * ipa-prop.c (ipa_push_func_to_list_1): New function.
6552         (ipa_init_func_list): Call ipa_push_func_to_list_1.
6553         (ipa_push_func_to_list): Removed.
6554         (ipa_pop_func_from_list): Clear node_enqueued flag.
6555
6556 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6557
6558         * config/s390/s390.c (override_options): Default
6559         max-unrolled-insns to 100 for z10 tuning.
6560
6561 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
6562
6563         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
6564         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
6565         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
6566         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
6567         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
6568         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
6569         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
6570
6571 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6572
6573         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
6574         use default set in mingw32.h header.
6575         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
6576         64-bit /mingw/include path.
6577         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
6578         path.
6579
6580 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
6581
6582         PR rtl-optimization/40209
6583         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
6584
6585 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
6586
6587         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
6588         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
6589         with the rest of string where appropriate.  Use fputs or putc
6590         instead of fprintf where appropriate.
6591
6592 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
6593             Pat Haugen  <pthaugen@us.ibm.com>
6594             Revital Eres <ERES@il.ibm.com>
6595
6596         * config/rs6000/vector.md: New file.  Move most of the vector
6597         expander support here from altivec.md to allow for the VSX vector
6598         unit in the future.  Add support for secondary_reload patterns.
6599         Rewrite the patterns for vector comparison, and vector comparison
6600         predicate instructions so that the RTL expresses the desired
6601         behavior, instead of using unspec.
6602
6603         * config/rs6000/constraints.md ("f" constraint): Use
6604         rs6000_constraints to hold the precalculated register class.
6605         ("d" constraint): Ditto.
6606         ("wd" constraint): New constraint for VSX.
6607         ("wf" constraint): Ditto.
6608         ("ws" constraint): Ditto.
6609         ("wa" constraint): Ditto.
6610         ("wZ" constraint): Ditto.
6611         ("j" constraint): Ditto.
6612
6613         * config/rs6000/predicates.md (vsx_register_operand): New
6614         predicate for VSX.
6615         (vfloat_operand): New predicate for vector.md.
6616         (vint_operand): Ditto.
6617         (vlogical_operand): Ditto.
6618         (easy_fp_constant): If VSX, 0.0 is an easy constant.
6619         (easy_vector_constant): Add VSX support.
6620         (altivec_indexed_or_indirect_operand): New predicate for
6621         recognizing Altivec style memory references with AND -16.
6622
6623         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
6624         for vector secondary reload support.
6625         (rs6000_vector_reg_class): Delete, replacing it with
6626         rs6000_constraints.
6627         (rs6000_vsx_reg_class): Ditto.
6628         (rs6000_constraints): New array to hold the register classes of
6629         each of the register constraints that can vary at runtime.
6630         (builtin_mode_to_type): New static array for builtin function type
6631         creation.
6632         (builtin_hash_table): New static hash table for builtin function
6633         type creation.
6634         (TARGET_SECONDARY_RELOAD): Define target hook.
6635         (TARGET_IRA_COVER_CLASSES): Ditto.
6636         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
6637         registers are 128 bits if VSX memory reference instructions are used.
6638         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
6639         unit is being used.
6640         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
6641         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
6642         Print several of the scheduling related parameters.
6643         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
6644         rs6000_constraints instead of rs6000_vector_reg_class.  Move
6645         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
6646         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
6647         Altivec.  Add VSX support.  Setup for secondary reload support on
6648         Altivec/VSX registers.
6649         (rs6000_override_options): Make power7 set the scheduling groups
6650         like the power5.  Add support for new debug switches to override
6651         the scheduling defaults.  Temporarily disable -mcpu=power7 from
6652         setting -mvsx.  Add support for debug switches -malways-hint,
6653         -msched-groups, and -malign-branch-targets.
6654         (rs6000_buitlin_conversion): Add support for returning unsigned
6655         vector conversion functions to fix regressions due to stricter
6656         type checking.
6657         (rs6000_builtin_mul_widen_even): Ditto.
6658         (rs6000_builtin_mul_widen_odd): Ditto.
6659         (rs6000_builtin_vec_perm): Ditto.
6660         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
6661         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
6662         to zero a register.
6663         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
6664         generated upstream.
6665         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
6666         VSX types for bit operations.  Changes to accomidate vector.md.
6667         (bdesc_2arg): Ditto.
6668         (bdesc_1arg): Ditto.
6669         (struct builtin_description_predicates): Rewrite predicate
6670         handling so that RTL describes the operation, instead of passing
6671         the instruction to be used as a string argument.
6672         (bdesc_altivec_preds): Ditto.
6673         (altivec_expand_predicate_builtin): Ditto.
6674         (altivec_expand_builtin): Ditto.
6675         (rs6000_expand_ternop_builtin): Use a switch instead of an if
6676         statement for vsldoi support.
6677         (altivec_expand_ld_builtin): Change to use new names from vector.md.
6678         (altivec_expand_st_builtin): Ditto.
6679         (paired_expand_builtin): Whitespace changes.
6680         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
6681         builtin_mode_to_type table for secondary reload.  Call
6682         builtin_function_type to build random builtin functions.
6683         (altivec_init_builtins): Change to use builtin_function_type to
6684         create builtin function types dynamically as we need them.
6685         (builtin_hash_function): New support for hashing the tree types
6686         for builtin function as we need it, rather than trying to build
6687         all of the trees that we need.  Add initial preliminary VSX support.
6688         (builtin_function_type): Ditto.
6689         (builtin_function_eq): Ditto.
6690         (builtin_hash_struct): Ditto.
6691         (rs6000_init_builtins): Ditto.
6692         (rs6000_common_init_builtins): Ditto.
6693         (altivec_init_builtins): Ditto.
6694         (rs6000_common_init_builtins): Ditto.
6695         (enum reload_reg_type): New enum for simplifing reg classes.
6696         (rs6000_reload_register_type): Simplify register classes into GPR,
6697         Vector, and other registers.  Altivec and VSX addresses in reload.
6698         (rs6000_secondary_reload_inner): Ditto.
6699         (rs6000_ira_cover_classes): New target hook, that returns the
6700         appropriate cover classes, based on -mvsx being used or not.
6701         (rs6000_secondary_reload_class): Add VSX support.
6702         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
6703         (get_vsel_insn): Ditto.
6704         (rs6000_emit_vector_compare): Rewrite vector conditional support
6705         so that where we can, we use RTL operators, instead of blindly use
6706         UNSPEC.
6707         (rs6000_emit_vector_select): Ditto.
6708         (rs6000_emit_vector_cond_expr): Ditto.
6709         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
6710         (create_TOC_reference): Add -mdebug=addr support.
6711         (emit_frame_save): VSX loads/stores need register indexed addressing.
6712
6713         * config/rs6000/rs6000.md: Include vector.md.
6714
6715         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
6716
6717         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
6718         support for V2DI, V2DF in logical, permute, select operations.
6719
6720         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
6721         switch for vsx/power7.
6722         (-mvsx-scalar-memory): Ditto.
6723         (-mvsx-align-128): Ditto.
6724         (-mallow-movmisalign): Ditto.
6725         (-mallow-df-permute): Ditto.
6726         (-msched-groups): Ditto.
6727         (-malways-hint): Ditto.
6728         (-malign-branch-targets): Ditto.
6729
6730         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
6731         hook instead.
6732         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
6733         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
6734         (rs6000_vector_reg_class): Delete.
6735         (rs6000_vsx_reg_class): Ditto.
6736         (enum rs6000_reg_class_enum): New enum for the constraints that
6737         vary based on target switches.
6738         (rs6000_constraints): New array to hold the register class for all
6739         of the register constraints that vary based on the switches used.
6740         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
6741         (enum rs6000_builtins): Add unsigned varients for the builtin
6742         declarations returned by target hooks for expanding multiplies,
6743         select, and permute operations.  Add VSX builtins.
6744         (enum rs6000_builtin_type_index): Add entries for VSX.
6745         (V2DI_type_node): Ditto.
6746         (V2DF_type_node): Ditto.
6747         (unsigned_V2DI_type_node): Ditto.
6748         (bool_long_type_node): Ditto.
6749         (intDI_type_internal_node): Ditto.
6750         (uintDI_type_internal_node): Ditto.
6751         (double_type_internal_node): Ditto.
6752
6753         * config/rs6000/altivec.md (whole file): Move all expanders to
6754         vector.md from altivec.md.  Rename insn matching functions to be
6755         altivec_foo.
6756         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
6757         (altivec_vcmp*): Ditto.
6758         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
6759         (VM): New iterator for moves that includes the VSX types.
6760         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
6761         (altivec_vperm_<mode>_uns): New, for unsigned types.
6762         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
6763         (altivec_eq<mode>): Ditto.
6764         (altivec_gt<mode>): Ditto.
6765         (altivec_gtu<mode>): Ditto.
6766         (altivec_eqv4sf): Ditto.
6767         (altivec_gev4sf): Ditto.
6768         (altivec_gtv4sf): Ditto.
6769         (altivec_vcmpbfp_p): Ditto.
6770
6771 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
6772
6773         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
6774         unsigned HWI.
6775
6776 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
6777
6778         PR target/40832
6779         * config/i386/i386.c (output_387_ffreep): Rewrite to use
6780         ASM_SHORT instead of .word.
6781         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
6782         instead of .word in asm template.
6783
6784 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
6785
6786         PR target/37488
6787         * ira-lives.c (bb_has_abnormal_call_pred): New function.
6788         (process_bb_node_lives): Use it.
6789
6790         * ira.c (setup_cover_and_important_classes): Don't setup
6791         ira_important_class_nums.  Add cover classes to the end of
6792         important classes.
6793         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
6794         New.
6795         (find_reg_class_closure): Use reorder_important_classes.
6796
6797         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
6798
6799         * config/i386/i386.c (i386_ira_cover_classes): New function.
6800         (TARGET_IRA_COVER_CLASSES): Redefine.
6801
6802         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
6803         importance of order of cover classes in the array.
6804
6805 2009-07-22  Diego Novillo  <dnovillo@google.com>
6806
6807         * tree-pass.h (TDF_EH): Define.
6808         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
6809         contains TDF_EH, print the EH region number holding GS.
6810         * tree-dump.c (dump_options): Add "eh".
6811         * doc/invoke.texi: Document it.
6812
6813 2009-07-22  Doug Kwan  <dougkwan@google.com>
6814
6815         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
6816
6817 2009-07-22  Michael Matz  <matz@suse.de>
6818
6819         PR tree-optimization/35229
6820         PR tree-optimization/39300
6821
6822         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
6823         (inhibit_phi_insertion): New function.
6824         (insert_into_preds_of_block): Call it for REFERENCEs.
6825         (init_pre): Initialize and finalize scalar evolutions.
6826         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
6827
6828 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
6829
6830         * config/i386/predicates.md (zero_extended_scalar_load_operand):
6831         Use CONST_VECTOR_NUNITS to determine number of elements.
6832
6833 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
6834
6835         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
6836         (U, W): Constraints are now deprecated and will be removed if we
6837         run out of letters.
6838         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
6839         the file.
6840         ("prefetch"): Add the stcmh instruction for prefetching.
6841         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
6842         changes.
6843         (s390_short_displacement): Return always true if compiling for
6844         machines not providing the long displacement facility.
6845         (s390_mem_constraint): Support the new constraint letter Z.
6846         (s390_check_qrst_address): New function.
6847
6848 2009-07-21  DJ Delorie  <dj@redhat.com>
6849
6850         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
6851         alone too.
6852
6853 2009-07-21  Jason Merrill  <jason@redhat.com>
6854
6855         * c-common.c (max_tinst_depth): Increase default to 1024.
6856
6857 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
6858
6859         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
6860         (vec_unpacku_float_lo_v4si): Ditto.
6861
6862 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
6863
6864         PR target/40811
6865         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
6866         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
6867         (builtin_description): Add __builtin_ia32_cvtudq2ps.
6868         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
6869
6870 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
6871
6872         PR tree-optimization/40813
6873         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
6874         it.
6875
6876 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6877
6878         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
6879         with a NOP_EXPR if needed.
6880
6881 2009-07-21  Paul Brook <paul@codesourcery.com>
6882
6883         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
6884         Terminate debug dump with newline.
6885
6886 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6887
6888         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
6889         Cast "1" to unsigned HOST_WIDE_INT.
6890         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
6891         deposit length to the maximum length - lsb.  Extend length if
6892         HOST_BITS_PER_WIDE_INT is 32.
6893
6894 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
6895
6896         * cgraph.h (constant_pool_htab): New function.
6897         (constant_descriptor_tree): Move from varasm.c.
6898         * varasm.c (constant_pool_htab): New function.
6899         (constant_descriptor_tree): Move to cgraph.h.
6900
6901 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
6902
6903         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
6904
6905 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
6906
6907         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
6908         $(VARRAY_H).
6909
6910 2009-07-20  Xinliang David Li  <davidxl@google.com>
6911
6912         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
6913
6914 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
6915
6916         * config/mips/mips.md (move_type): Add arith.
6917         (type): Handle arith.
6918         (zero_extendsidi2): Rename this into ...
6919         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
6920         (zero_extendsidi2): New expander.
6921         (*zero_extendsidi2_dext): New pattern.
6922
6923 2009-07-20  Nick Clifton  <nickc@redhat.com>
6924
6925         * config.gcc (mips64-*-*): Add definition of tm_defines in order
6926         to set MIPS_ABI_DEFAULT.
6927         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
6928
6929 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
6930
6931         * tree-object-size.c (addr_object_size): Handle unions with
6932         array in it as last field of structs in __bos (, 1) as __bos (, 0).
6933
6934         PR tree-optimization/40792
6935         * tree.c (build_function_type_skip_args): Remove bogus assert.
6936
6937 2009-07-20  Jan Hubicka  <jh@suse.cz>
6938             Martin Jambor  <mjambor@suse.cz>
6939
6940         * cgraph.h (combined_args_to_skip): New field.
6941         * cgraph.c (cgraph_create_virtual_clone): Properly handle
6942         combined_args_to_skip and args_to_skip.
6943         * tree-inline.c (update_clone_info): New function.
6944         (tree_function_versioning): Call update_clone_info.
6945         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
6946         functions.
6947         (cgraph_materialize_all_clones): More extensive dumping, working
6948         with combined_args_to_skip rather than args_to_skip.
6949
6950 2009-07-20  Ira Rosen  <irar@il.ibm.com>
6951
6952         * tree-vectorizer.h (vectorizable_condition): Add parameters.
6953         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
6954         (get_initial_def_for_reduction): Likewise.
6955         (vectorizable_reduction): Skip the check of first operand in case
6956         of COND_EXPR. Add check that it is outer loop vectorization if
6957         nested cycle was detected. Call vectorizable_condition() for
6958         COND_EXPR. If reduction epilogue cannot be created do not fail for
6959         nested cycles (if it is not double reduction). Assert that there
6960         is only one type in the loop in case of COND_EXPR. Call
6961         vectorizable_condition() to vectorize COND_EXPR.
6962         * tree-vect-stmts.c (vectorizable_condition): Update comment.
6963         Add parameters. Allow nested cycles if called from
6964         vectorizable_reduction(). Use reduction vector variable if provided.
6965         (vect_analyze_stmt): Call vectorizable_reduction() before
6966         vectorizable_condition().
6967         (vect_transform_stmt): Update call to vectorizable_condition().
6968
6969 2009-07-20  Christian Bruel  <christian.bruel@st.com>
6970
6971         * config/sh/sh.opt (-mfmovd): Resurrect and document.
6972         * doc/invoke.texi (-mfmovd): Likewise.
6973         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
6974
6975 2009-07-20  Jan Hubicka  <jh@suse.cz>
6976
6977         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
6978         when handling SSA name.
6979
6980 2009-07-19  Jan Hubicka  <jh@suse.cz>
6981
6982         PR tree-optimization/40676
6983         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
6984         virtual PHIs in empty BBs.
6985
6986 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6987
6988         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
6989         re-expanded the compound use gen_lowpart instead to convert to the
6990         desired mode.
6991
6992 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
6993
6994         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
6995         OUTER_CONST arguments.
6996         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
6997         the new wider mode will be masked off.
6998         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
6999
7000 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7001
7002         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7003         high-order bits are zero.
7004
7005 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7006
7007         * combine.c (simplify_shift_const_1): Split code to determine
7008         shift_mode into ...
7009         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
7010         new bits shifted in are identical to the old sign bit.
7011
7012 2009-07-18  Richard Guenther  <rguenther@suse.de>
7013
7014         PR c/40787
7015         * gimplify.c (gimplify_call_expr): Reject code using results from
7016         functions returning void.
7017
7018 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7019
7020         * doc/md.texi: Document the new PowerPC "es" constraint.
7021         Document that "m" can include automodified addresses on this target,
7022         and explain how %U must be used.  Extend the "Q" and "Z" documentation
7023         to suggest "es" as well as "m".
7024         * config/rs6000/constraints.md (es): New memory constraint.
7025         (Q, Z): Update strings to match new documentation.
7026
7027 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7028
7029         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
7030         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
7031         * config/rs6000/predicates.md (volatile_mem_operand): Use
7032         offsettable_nonstrict_memref_p.
7033         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
7034         (*floatunssidf2_internal): Likewise.
7035         (*fix_truncdfsi2_internal): Likewise.
7036         (*fix_trunctfsi2_internal): Likewise.
7037
7038 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
7039
7040         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
7041         atmega32u2 devices.
7042         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7043
7044 2009-07-17  Richard Guenther  <rguenther@suse.de>
7045
7046         PR c/40401
7047         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
7048         (pass_warn_unused_result): Likewise.
7049         (TODO_set_props): Remove.
7050         * omp-low.c (diagnose_omp_structured_block_errors): Change to
7051         run as a pass.
7052         (pass_diagnose_omp_blocks): Define.
7053         * c-decl.c (pop_file_scope): Do not finalize the CU here.
7054         (c_gimple_diagnostics_recursively): Remove.
7055         (finish_function): Do not call it.
7056         (c_write_global_declarations): Continue after errors.
7057         Finalize the CU here.
7058         * c-gimplify.c (c_genericize): Do not gimplify here.
7059         * c-common.c (c_warn_unused_result): Move ...
7060         * tree-cfg.c (do_warn_unused_result): ... here.
7061         (run_warn_unused_result): New function.
7062         (gate_warn_unused_result): New function.
7063         (pass_warn_unused_result): New pass.
7064         * c-common.h (c_warn_unused_result): Remove.
7065         * flags.h (flag_warn_unused_result): Declare.
7066         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
7067         * opts.c (flag_warn_unused_result): Initialize to false.
7068         * toplev.c (compile_file): Add comment.
7069         * omp-low.c (create_omp_child_function): Do not register
7070         the function with the frontend.
7071         (diagnose_omp_structured_block_errors): Prepare to be
7072         called as optimization pass.
7073         (gate_diagnose_omp_blocks): New function.
7074         (pass_diagnose_omp_blocks): New pass.
7075         * cgraph.h (cgraph_optimize): Remove.
7076         (cgraph_analyze_function): Likewise.
7077         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
7078         * cgraphunit.c (cgraph_lower_function): Lower nested functions
7079         before their parents here.
7080         (cgraph_finalize_function): Not here.
7081         (cgraph_analyze_function): Gimplify functions here.
7082         (cgraph_finalize_compilation_unit): Continue after errors.
7083         Optimize the callgraph from here.
7084         (cgraph_optimize): Make static.
7085         * langhooks.c (write_global_declarations): Finalize the CU.
7086         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7087         (gimplify_function_tree): Assert we gimplify only once.
7088         Set PROP_gimple_any property.
7089         * tree-nested.c (gimplify_all_functions): New function.
7090         (lower_nested_functions): Gimplify all nested functions.
7091         * gimple.h (diagnose_omp_structured_block_errors): Remove.
7092         * passes.c (init_optimization_passes): Add pass_warn_unused_result
7093         and pass_diagnose_omp_blocks after gimplification.  Do not
7094         set TODO_set_props on all_lowering_passes.
7095         (execute_one_pass): Do not handle TODO_set_props.
7096         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7097         (gimplify.o): Add tree-pass.h dependency.
7098         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7099         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7100         (unsave_r): Likewise.
7101         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7102         temporary variable.
7103
7104 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
7105
7106         * doc/service.texi (Service): Restore previously removed link,
7107         which isn't broken after all.
7108
7109 2009-07-17  Richard Guenther  <rguenther@suse.de>
7110
7111         PR tree-optimization/40321
7112         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7113         PHI nodes to the maximal set.
7114         (make_values_for_phi): Add PHI arguments to the maximal set.
7115         (execute_pre): Dump PHI_GEN and the maximal set.
7116
7117 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
7118
7119         PR c++/40780
7120         * gimplify.c (gimplify_conversion): Don't change non-conversions into
7121         VIEW_CONVERT_EXPR.
7122
7123 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
7124
7125         * doc/extend.texi (Nested Functions): Replace broken link with
7126         textual reference.
7127         * doc/service.texi (Service): Remove broken link.
7128
7129 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
7130
7131         PR bootstrap/40781
7132         * builtins.c (expand_builtin_memcmp): Use loc instead of
7133         EXPR_LOCATION (exp).
7134         (expand_builtin_strncmp): Likewise.
7135
7136 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
7137             Manuel López-Ibáñez  <manu@gcc.gnu.org>
7138
7139         PR 40435
7140         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7141         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7142         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7143         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7144         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7145         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7146         tree-inline.c, c-common.c, c-common.h, gimple.c,
7147         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7148         convert.c: Add location argument to fold_{unary,binary,ternary},
7149         fold_build[123], build_call_expr, build_size_arg,
7150         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7151         fold_build1_initializer, fold_build2_initializer,
7152         fold_build3_initializer, fold_build_call_array,
7153         fold_build_call_array_initializer, fold_single_bit_test,
7154         omit_one_operand, omit_two_operands, invert_truthvalue,
7155         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7156         combine_comparisons, fold_builtin_*, fold_call_expr,
7157         build_range_check, maybe_fold_offset_to_address, round_up,
7158         round_down.
7159
7160 2009-07-16  Jason Merrill  <jason@redhat.com>
7161
7162         PR libstdc++/37907
7163         * c-common.c (c_common_reswords): Add __is_standard_layout
7164         and __is_trivial.
7165         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7166         * doc/implement-cxx.texi: New.
7167         * doc/gcc.texi: Include it.
7168
7169 2009-07-16  DJ Delorie  <dj@redhat.com>
7170
7171         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7172         compares that may be indirectly affected by previous instructions.
7173
7174 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7175
7176         * builtins.c (do_mpc_arg2): New.
7177         (fold_builtin_2): Fold builtin cpow.
7178         * real.h (HAVE_mpc_pow): New.
7179
7180 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
7181
7182         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7183         comparison to skip unprofitable schedule
7184
7185 2009-07-16  Simon Baldwin  <simonb@google.com>
7186
7187         * gcc.c (option_map): New flag -no-canonical-prefixes.
7188         * (display_help): Print help text for new flag.
7189         * (process_command): Move options translation and language specifics
7190         and handle new flag early.  Use it to set a function pointer to a
7191         prefix builder.  Replace make_relative_prefix calls with calls to
7192         the function pointed to.  Ignore new flag in regular options handling.
7193         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7194
7195 2009-07-15  DJ Delorie  <dj@redhat.com>
7196
7197         * config/mep/mep.md (sibcall_internal): Change register to avoid
7198         argument registers.
7199         (sibcall_value_internal): Likewise.
7200
7201 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
7202
7203         PR rtl-optimization/40710
7204         * resource.c (mark_target_live_regs): Reset DF problem to LR.
7205
7206 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
7207
7208         * config/mips/mips.md (*extenddi_truncate<mode>,
7209         *extendsi_truncate<mode>): Change type attribute to move_type
7210         with shift_shift.  Split out code handling exts from here ...
7211         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7212         pattern.
7213         (*extendhi_truncateqi): Change type attribute to move_type with
7214         shift_shift.  Split out code handling exts from here ...
7215         (*extendhi_truncateqi_exts): ... to this new pattern.
7216
7217 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
7218
7219         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7220         instead of "and" with inverted sign bit mask value.  Use
7221         "nonimmediate_operand" for operand 1 and operand 2 predicate.
7222         Allocate registers only for operand 4 and operand 5.
7223
7224 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
7225
7226         PR middle-end/40747
7227         * fold-const.c (fold_cond_expr_with_comparison): When folding
7228         < and <= to MIN, make sure the MIN uses the same type as the
7229         comparison's operands.
7230
7231 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
7232
7233         * arm.md (ior_xor): New code iterator.
7234         (split for ior/xor with shift and zero-extend): New split pattern.
7235         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7236
7237 2009-07-15  Richard Guenther  <rguenther@suse.de>
7238
7239         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7240         offset member.
7241
7242 2009-07-15  Richard Guenther  <rguenther@suse.de>
7243
7244         PR middle-end/40753
7245         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
7246
7247 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7248
7249         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
7250         handle 2.6.30 kernel.
7251
7252 2009-07-15  DJ Delorie  <dj@redhat.com>
7253
7254         * config/mep/mep.md (sibcall_internal): Change register to allow
7255         for 24-bit addresses.
7256         (sibcall_value_internal): Likewise.
7257
7258 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7259
7260         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
7261         that are enabled/disabled by the flags introduced by a previous patch.
7262
7263 2009-07-14  DJ Delorie  <dj@redhat.com>
7264
7265         * config/mep/mep.md (sibcall_internal): Include non-toggling
7266         non-jmp case.
7267         (sibcall_value_internal): Likewise.
7268
7269 2009-07-14  Taras Glek  <tglek@mozilla.com>
7270             Rafael Espindola  <espindola@google.com>
7271
7272         * doc/sourcebuild.texi: Document install-plugin target.
7273         * configure.ac: Added install-plugin target to language makefiles.
7274         * configure: Regenerate.
7275         * Makefile.in: (install-plugin): Install more headers,
7276         depend on lang.install-plugin.
7277
7278 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7279
7280         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
7281         translation.
7282
7283 2009-07-14  DJ Delorie  <dj@redhat.com>
7284
7285         * config/mep/mep.c (mep_vliw_jmp_match): New function.
7286         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
7287         * config/mep/mep.md (sibcall_internal): Change test from
7288         mep_vliw_mode_match to mep_vliw_jmp_match.
7289         (sibcall_value_internal): Likewise.
7290
7291 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
7292
7293         * config/i386/sse.md (copysign<mode>3): New expander.
7294         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
7295         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
7296         Use ix86_build_const_vector.
7297         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
7298         IX86_BUILTIN_CPYSGNPD.
7299         (builtin_description): Add __builtin_ia32_copysignps and
7300         __builtin_ia32_copysignpd.
7301         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
7302         and BUILT_IN_COPYSIGNF.
7303
7304 2009-07-13  Jason Merrill  <jason@redhat.com>
7305
7306         * builtins.c (can_trust_pointer_alignment): New fn.
7307         (get_pointer_alignment): Factor it out from here.
7308         * tree.h: Declare it.
7309
7310 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
7311
7312         * config/rs6000/predicates.md (offsettable_mem_operand): Test
7313         RTX_AUTOINC class.
7314
7315 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
7316
7317         PR debug/40705
7318         PR c++/403057
7319         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
7320
7321 2009-07-14  Richard Guenther  <rguenther@suse.de>
7322             Andrey Belevantsev <abel@ispras.ru>
7323
7324         PR middle-end/40745
7325         * cfgexpand.c (partition_stack_vars): Do not bother to update
7326         alias information when not optimizing.
7327
7328 2009-07-14  Richard Guenther  <rguenther@suse.de>
7329             Andrey Belevantsev <abel@ispras.ru>
7330
7331         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
7332         (pt_solution_set): Likewise.
7333         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
7334         * tree-ssa-structalias.c (pt_solution_set): New function.
7335         * final.c (rest_of_clean_state): Free SSA data structures.
7336         * print-rtl.c (print_decl_name): Remove.
7337         (print_mem_expr): Implement in terms of print_generic_expr.
7338         * alias.c (ao_ref_from_mem): New function.
7339         (rtx_refs_may_alias_p): Likewise.
7340         (true_dependence): Query alias-export info.
7341         (canon_true_dependence): Likewise.
7342         (write_dependence_p): Likewise.
7343         * tree-dfa.c (get_ref_base_and_extent): For void types leave
7344         size unknown.
7345         * emit-rtl.c (component_ref_for_mem_expr): Remove.
7346         (mem_expr_equal_p): Use operand_equal_p.
7347         (set_mem_attributes_minus_bitpos): Do not use
7348         component_ref_for_mem_expr.
7349         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
7350         (update_alias_info_with_stack_vars): Likewise.
7351         (partition_stack_vars): Call update_alias_info_with_stack_vars.
7352         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
7353         explicitly nor clear stmt operands.
7354         Free the decl-to-pointer map.
7355         * tree-optimize.c (execute_free_datastructures): Do not free
7356         SSA data structures here.
7357         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
7358         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
7359         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
7360         dependencies.
7361         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
7362
7363 2009-07-13  DJ Delorie  <dj@redhat.com>
7364
7365         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
7366         unrolling at the right iteration count.
7367
7368         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
7369         calculations.
7370
7371 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7372
7373         * haifa-sched.c (rank_for_schedule): Introduced flags to
7374         enable/disable individual scheduling heuristics.
7375         * common.opt: Introduced flags to enable/disable individual
7376         heuristics in the scheduler.
7377         * doc/invoke.texi: Introduced flags to enable/disable individual
7378         heuristics in the scheduler.
7379
7380 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
7381
7382         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
7383         config/i386/mingw-tls.c.
7384         * config/i386/mingw-tls.c: Removed.
7385
7386 2009-07-13  Ira Rosen  <irar@il.ibm.com>
7387
7388         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
7389         checks access only relevant statements.
7390         (vectorizable_reduction): Likewise.
7391
7392 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
7393
7394         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
7395         just for 32-bit case.
7396
7397 2009-07-12  Jan Hubicka  <jh@suse.cz>
7398
7399         PR tree-optimization/40585
7400         * except.c (expand_resx_expr): When there already is resume
7401         instruction, produce linked list.
7402         (build_post_landing_pads): Assert that resume is empty.
7403         (connect_post_landing_pads): Handle resume lists.
7404         (dump_eh_tree): Dump resume list.
7405
7406 2009-07-12  Ira Rosen  <irar@il.ibm.com>
7407
7408         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
7409         with additional argument.
7410         * tree-vectorizer.h (enum vect_def_type): Add
7411         vect_double_reduction_def.
7412         (vect_is_simple_reduction): Add argument.
7413         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
7414         indentation.
7415         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
7416         vect_is_simple_reduction with additional argument.
7417         (vect_analyze_loop_operations): Handle exit phi nodes in case of
7418         double reduction.
7419         (reduction_code_for_scalar_code): Handle additional codes by
7420         returning ERROR_MARK for them. Fix comment and indentation.
7421         (vect_is_simple_reduction): Fix comment, add argument to specify
7422         double reduction. Detect double reduction.
7423         (get_initial_def_for_induction): Fix indentation.
7424         (get_initial_def_for_reduction): Fix comment and indentation.
7425         Handle double reduction. Create initial definitions that do not
7426         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
7427         (vect_create_epilog_for_reduction): Fix comment, add argument to
7428         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
7429         epilogue result extraction. Create double reduction phi node and
7430         replace relevant uses.
7431         (vectorizable_reduction): Call vect_is_simple_reduction with
7432         additional argument. Fix indentation. Update epilogue code treatment
7433         according to the changes in reduction_code_for_scalar_code. Check
7434         for double reduction. Call vect_create_epilog_for_reduction with
7435         additional argument.
7436         * tree-vect-stmts.c (process_use): Handle double reduction, update
7437         documentation.
7438         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
7439         (vect_get_vec_def_for_operand): Likewise.
7440
7441 2009-07-12  Danny Smith  <dansmister@gmail.com>
7442
7443         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
7444         dllexport if !TREE_PUBLIC.
7445         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
7446
7447 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
7448
7449         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
7450         (avr_extra_arch_macro) Remove declatation.
7451         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
7452         (avr_extra_arch_macro) Declare as static.
7453         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
7454
7455 2009-07-11  Jan Hubicka  <jh@suse.cz>
7456
7457         PR middle-end/48388
7458         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
7459
7460 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
7461
7462         PR debug/40713
7463         * dwarf2out.c (dw_fde_struct): Add in_std_section and
7464         cold_in_std_section bits.
7465         (dwarf2out_begin_prologue): Initialize them.
7466         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
7467         if already covered by text_section or cold_text_section range.
7468
7469         PR rtl-optimization/40667
7470         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
7471         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
7472         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
7473         * config/i386/i386.c (ix86_minimum_alignment): New function.
7474         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
7475         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
7476         * emit-rtl.c (gen_reg_rtx): Likewise.
7477         * function.c (assign_parms): Likewise.  If nominal_type needs
7478         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
7479         rather than passed_type's alignment.
7480
7481         PR target/40668
7482         * function.c (assign_parm_setup_stack): Adjust
7483         MEM_OFFSET (data->stack_parm) if promoted_mode is different
7484         from nominal_mode on big endian.
7485
7486 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
7487
7488         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
7489
7490 2009-07-10  DJ Delorie  <dj@redhat.com>
7491
7492         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
7493
7494 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
7495
7496         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
7497         attribute.
7498         (thumb2_cbnz): Likewise.
7499
7500 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
7501
7502         PR target/39079
7503         * config.gcc (supported_defaults): Add synci.
7504         (with_synci): Add validation.
7505         (all_defaults): Add synci.
7506         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
7507         ISA_HAS_SYNCI.
7508         (synci): Same.
7509         * config/mips/mips.opt (msynci): New option.
7510         * config/mips/mips.c (mips_override_options): Warn on use of
7511         -msynci for targets that do now support it.
7512         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
7513         msynci.
7514         * gcc/doc/invoke.texi (-msynci): Document the new option.
7515         * doc/install.texi (--with-synci): Document the new option.
7516
7517 2009-07-10  Richard Guenther  <rguenther@suse.de>
7518
7519         PR tree-optimization/40496
7520         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
7521         the PHI result with a compatible type.
7522
7523 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7524
7525         PR 25509
7526         PR 40614
7527         * c.opt (Wunused-result): New.
7528         * doc/invoke.texi: Document it.
7529         * c-common.c (c_warn_unused_result): Use it.
7530
7531 2009-07-09  DJ Delorie  <dj@redhat.com>
7532
7533         * targhooks.c (default_target_can_inline_p): Rename from
7534         default_target_option_can_inline_p.
7535         * targhooks.h (default_target_can_inline_p): Likewise.
7536         * target-def.h (TARGET_CAN_INLINE_P): Rename from
7537         TARGET_OPTION_CAN_INLINE_P.
7538         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
7539         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
7540         (mep_target_can_inline_p): Rename from
7541         mep_target_option_can_inline_p.
7542
7543         PR target/40626
7544         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
7545         registers used to pass vectors.
7546
7547         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
7548
7549 2009-07-09  Tom Tromey  <tromey@redhat.com>
7550
7551         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
7552         * config/mmix/mmix.c: Include dwarf2.h.
7553         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
7554         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
7555         * config/sh/sh.c: Include dwarf2.h.
7556         * config/i386/i386.c: Include dwarf2.h.
7557         * Makefile.in (DWARF2_H): Remove 'elf'.
7558         * except.c: Include dwarf2.h.
7559         * unwind-dw2.c: Include dwarf2.h.
7560         * dwarf2out.c: Include dwarf2.h.
7561         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
7562         * unwind-dw2-fde.c: Include dwarf2.h.
7563         * dwarf2asm.c: Include dwarf2.h.
7564
7565 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7566
7567         * haifa-sched.c (insn_finishes_cycle_p): New static function.
7568         (max_issue): Use it.
7569         * sched-int.h (struct sched_info: insn_finishes_block_p): New
7570         scheduler hook.
7571         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
7572         (region_sched_info): Update.
7573         * sched-ebb.c (ebb_sched_info): Update.
7574         * modulo-sched.c (sms_sched_info): Update.
7575         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
7576
7577 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7578
7579         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
7580
7581 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
7582
7583         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
7584
7585 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
7586
7587         PR middle-end/40692
7588         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
7589         arg1 with arg01 if arg1 is already INTEGER_CST.
7590
7591 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7592
7593         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
7594         Transform (and (truncate)) into (truncate (and)).
7595
7596 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7597
7598         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
7599         creating LHS paradoxical subregs.  Fix surrounding returns to
7600         use NULL_RTX rather than 0.
7601
7602 2009-07-08  DJ Delorie  <dj@redhat.com>
7603
7604         * config/mep/mep.c: (mep_option_can_inline_p): New.
7605         (TARGET_OPTION_CAN_INLINE_P): Define.
7606
7607 2009-07-08  Mark Wielaard  <mjw@redhat.com>
7608
7609         PR debug/40659
7610         * dwarf2out.c (add_data_member_location_attribute): When we have
7611         only a constant offset don't emit a new location description using
7612         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
7613         dwarf_version > 2.
7614
7615 2009-07-08  Richard Henderson  <rth@redhat.com>
7616
7617         PR target/38900
7618         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
7619         (enum reg_class): Add CLOBBERED_REGS.
7620         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
7621         * config/i386/i386.c (ix86_conditional_register_usage): Moved
7622         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
7623         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
7624         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
7625         force 64-bit sibcalls into R11.
7626         * config/i386/constraints.md (U): New constraint.
7627         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
7628         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
7629         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
7630
7631 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
7632
7633         * basic-block.h (dump_regset, debug_regset): Remove duplicate
7634         prototypes.
7635         * c-objc-common.h (c_initialize_diagnostics): Ditto.
7636         * ebitmap.h (dump_ebitmap): Ditto.
7637         * optabs.h (optab_libfunc): Ditto.
7638         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
7639         * tree-flow.h (vect_can_force_dr_alignment_p,
7640         get_vectype_for_scalar_type): Ditto.
7641         (vectorize_loops): Move prototype to ...
7642         * tree-vectorizer.h: ... here. Also, adjust comment.
7643         (vect_set_verbosity_level): Remove duplicate prototype.
7644         * tree-ssa-loop.c: Include tree-vectorizer.h.
7645         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
7646
7647 2009-07-08  Nick Clifton  <nickc@redhat.com>
7648
7649         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
7650         forward slash.
7651
7652 2009-07-08  DJ Delorie  <dj@redhat.com>
7653
7654         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
7655         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
7656         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
7657         written to.
7658         * config/mep/intrinsics.md: Regenerated.
7659         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
7660         registers when asm() or calls are detected.
7661
7662 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7663
7664         PR c++/31246
7665         * gimplify.c (gimplify_expr): Propagate no_warning flag when
7666         gimplifying.
7667         * gimple (gimple_build_call_from_tree): Likewise.
7668         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
7669         no_warning flag before warning.
7670
7671 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7672
7673         * tree.c (set_expr_locus): Remove.
7674         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
7675         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
7676         EXPR_LOCATION.
7677         * gimplify.c (internal_get_tmp_var): Likewise.
7678         (gimplify_call_expr): Likewise.
7679         (gimplify_one_sizepos): Likewise.
7680
7681 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
7682
7683         PR debug/40666
7684         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
7685         to variables for debugging purposes.
7686
7687 2009-06-23  Mark Loeser  <mark@halcy0n.com>
7688
7689         PR build/40010
7690         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
7691
7692 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7693
7694         * pretty-print.c (pp_base_format): Remove %J.
7695         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7696         gcc_cxxdiag_char_table): Likewise.
7697         (init_dynamic_diag_info): Likewise.
7698
7699 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7700
7701         * pretty-print.c (pp_base_format): Remove %H.
7702         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7703         gcc_cxxdiag_char_table): Likewise.
7704         (init_dynamic_diag_info): Likewise.
7705         * config/mep/mep.c (mep_select_section): Likewise.
7706
7707 2009-07-07  Duncan Sands  <baldrick@free.fr>
7708
7709         * final.c (pass_clean_state): Give the pass a name.
7710         * passes.c (pass_rest_of_compilation): Likewise.
7711         * tree-optimize.c (pass_all_optimizations): Likewise.
7712
7713 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
7714
7715         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
7716         an extra 'decl' for error_at.
7717
7718 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
7719
7720         PR middle-end/40669
7721         * tree-tailcall.c (adjust_return_value_with_ops,
7722         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
7723         if it has complex or vector type.
7724
7725 2009-07-07  Olivier Hainque  <hainque@adacore.com>
7726
7727         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
7728         pthread symbols.
7729
7730 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
7731
7732         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
7733
7734 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7735
7736         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
7737         * c-decl.c: Likewise.
7738         * function.c: Likewise.
7739         * varasm.c: Likewise.
7740         * tree-ssa.c: Likewise.
7741         * c-common.c: Likewise.
7742         * tree-cfg.c: Likewise.
7743         * config/spu/spu.c: Likewise.
7744         * config/ia64/ia64.c: Likewise.
7745         * config/v850/v850.c: Likewise.
7746
7747 2009-07-06  DJ Delorie  <dj@redhat.com>
7748
7749         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
7750         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
7751         unspecified accesses to control registers.
7752         * config/mep/intrinsics.md: Regenerate.
7753         * config/mep/intrinsics.h: Regenerate.
7754         * config/mep/mep-intrin.h: Regenerate.
7755
7756 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7757
7758         * c-lex.c: Replace %H by an explicit location. Update all calls.
7759         * c-common.c: Likewise.
7760         * c-decl.c: Likewise.
7761         * c-typeck.c: Likewise.
7762         * fold-const.c: Likewise.
7763         * gimplify.c: Likewise.
7764         * stmt.c: Likewise.
7765         * tree-cfg.c: Likewise.
7766         * tree-ssa-loop-niter.c: Likewise.
7767         * tree-vrp.c: Likewise.
7768         * value-prof.c: Likewise.
7769
7770 2009-07-06  Diego Novillo  <dnovillo@google.com>
7771
7772         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
7773         if it has one.  Handle cases where VAR does not have an
7774         annotation or cfun is NULL.
7775
7776 2009-07-06  Diego Novillo  <dnovillo@google.com>
7777
7778         * tree.c: Include debug.h.
7779         (initialize_tree_contains_struct): New.
7780         (init_ttree): Call it.
7781         (tree_node_structure_for_code): Factor out of ...
7782         (tree_node_structure): ... here.
7783         * treestruct.def (TS_PHI_NODE): Remove.
7784         (TS_GIMPLE_STATEMENT): Remove.
7785
7786 2009-07-06  Diego Novillo  <dnovillo@google.com>
7787
7788         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
7789         (debug_tree_chain): Handle cycles.
7790
7791 2009-07-06  Nick Clifton  <nickc@redhat.com>
7792             DJ Delorie  <dj@redhat.com>
7793
7794         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
7795         __FMOVD_ENABLED__ is defined.
7796         * config/sh/sh.h
7797         (TARGET_FMOVD): Provide a default definition.
7798         (MASK_FMOVD): Likewise.
7799         (TARGET_CPU_CPP_BUILTINS): Define
7800         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
7801         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
7802         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
7803         (split for DF load from memory into register): Also handle
7804         MEMs which consist of REG+DISP addressing.
7805         (split for DF store from register to memory): Likewise.
7806         (movsf_ie): Always use single fp_mode.
7807         * config/sh/sh.c (sh_override_options): Do not automatically
7808         enable TARGET_MOVD for the SH2A when supporting doubles - leave
7809         that to the -mfmovd command line switch.
7810         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
7811         (fldi_ok): Always allow.
7812         * config/sh/sh.opt (mfmovd): Remove this switch.
7813         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
7814
7815 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
7816             Kaz Kojima  <kkojima@gcc.gnu.org>
7817
7818         PR rtl-optimization/30807
7819         * postreload.c (reload_combine): For every new use of REG_SUM,
7820         record the use of BASE.
7821
7822 2009-07-06  Jan Hubicka  <jh@suse.cz>
7823
7824         * params.def: Revert my accidental commit at 2009-06-30.
7825
7826 2009-07-04  Ian Lance Taylor  <iant@google.com>
7827
7828         PR target/40636
7829         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
7830         EXPORTED_CONST.
7831         (mingw_format_attribute_overrides): Likewise.
7832
7833 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
7834
7835         PR debug/40596
7836         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
7837         don't check cfa.reg.  Instead of cfa.indirect use
7838         fde && fde->drap_reg != INVALID_REGNUM test.
7839
7840 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
7841
7842         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
7843
7844 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
7845
7846         PR target/40587
7847         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
7848
7849 2009-07-03  Richard Guenther  <rguenther@suse.de>
7850
7851         PR tree-optimization/40640
7852         * tree-switch-conversion.c (build_arrays): Perform arithmetic
7853         in original type.
7854
7855 2009-07-03  Jan Hubicka  <jh@suse.cz>
7856
7857         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
7858         for size, reduce amount of inlining.
7859
7860 2009-07-03  Richard Guenther  <rguenther@suse.de>
7861
7862         PR middle-end/34163
7863         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
7864         if t +- x is known to not overflow and the conversion widens the
7865         operation.
7866         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
7867
7868 2009-07-03  Jan Hubicka  <jh@suse.cz>
7869
7870         * ipa-pure-const.c (analyze): Update loop optimizer init.
7871         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
7872         try_remove_empty_loop, remove_empty_loops): Remove.
7873         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
7874         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
7875         to mark regular loops as neccesary.
7876         (degenerate_phi_p): New function.
7877         (propagate_necessity, remove_dead_phis): Use it.
7878         (forward_edge_to_pdom): Likewise.
7879         (eliminate_unnecessary_stmts): Take care to remove uses of results of
7880         virtual PHI nodes that became unreachable.
7881         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
7882         * tree-flow.h (remove_empty_loops): Remove.
7883         * passes.c (init_optimization_passes): Remove.
7884
7885 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
7886
7887         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
7888         can_create_pseudo_p.
7889         (*fix_trunc<mode>_i387_1): Ditto.
7890         (*floathi<mode>2_1): Ditto.
7891         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
7892         (*fistdi2_1): Ditto.
7893         (*fist<mode>2_1): Ditto.
7894         (frndintxf2_floor): Ditto.
7895         (*fist<mode>2_floor_1): Ditto.
7896         (frndintxf2_ceil): Ditto.
7897         (*fist<mode>2_ceil_1): Ditto.
7898         (frndintxf2_trunc): Ditto.
7899         (frndintxf2_mask_pm): Ditto.
7900         (fxam<mode>2_i387_with_temp): Ditto.
7901         * config/i386/sse.md (mulv16qi3): Ditto.
7902         (*sse2_mulv4si3): Ditto.
7903         (mulv2di3): Ditto.
7904         (sse4_2_pcmpestr): Ditto.
7905         (sse4_2_pcmpistr): Ditto.
7906
7907 2009-07-03  Jan Hubicka  <jh@suse.cz>
7908
7909         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
7910         (mark_stmt_necessary): Set it.
7911         (mark_operand_necessary): Set it.
7912         (mark_control_dependent_edges_necessary): Set it.
7913         (mark_virtual_phi_result_for_renaming): New function.
7914         (get_live_post_dom): New function.
7915         (forward_edge_to_pdom): New function.
7916         (remove_dead_stmt): Fix handling of control dependences.
7917         (tree_dce_init): Init new bitmap.
7918         (tree_dce_done): Free it.
7919
7920 2009-07-02  Richard Guenther  <rguenther@suse.de>
7921
7922         PR bootstrap/40617
7923         * tree-ssa-structalias.c (new_var_info): Initialize
7924         is_restrict_var.
7925
7926 2009-07-02  Jan Hubicka  <jh@suse.cz>
7927
7928         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
7929         local.
7930
7931 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
7932
7933         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
7934         instead of recomputing it.  Adjust calls.
7935         (emit_store_flag): Adjust recursive calls.
7936
7937 2009-07-02  Richard Guenther  <rguenther@suse.de>
7938
7939         * tree-ssa-live.c (remove_unused_locals): Do not remove
7940         heap variables.
7941         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
7942         of DECL_EXTERNAL for HEAP variables.
7943         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
7944         HEAP variables.  Do not adjust RESTRICT vars.
7945         (find_what_var_points_to): Nobody cares if something
7946         points to READONLY.
7947
7948 2009-07-02  Ben Elliston  <bje@au.ibm.com>
7949
7950         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
7951         pc_low and pc_high declarations to the top of the function.
7952
7953 2009-07-01  DJ Delorie  <dj@redhat.com>
7954
7955         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
7956         registers as fixed.
7957         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
7958         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
7959         unspecified accesses to control registers.
7960         * config/mep/intrinsics.md: Regenerate.
7961         * config/mep/intrinsics.h: Regenerate.
7962         * config/mep/mep-intrin.h: Regenerate.
7963
7964 2009-07-01  Anthony Green  <green@moxielogic.com>
7965
7966         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7967         instruction when possible.
7968         (moxie_expand_prologue): Ditto.  Also, save an instruction and
7969         some complexity by popping off of $r12 instead of $sp.
7970         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
7971         operands.
7972
7973 2009-07-01  Richard Henderson  <rth@redhat.com>
7974
7975         PR bootstrap/40347
7976         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
7977         contained no insns, reposition note before last insn.
7978
7979 2009-07-01  Richard Henderson  <rth@redhat.com>
7980
7981         PR debug/40431
7982         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
7983         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
7984
7985 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
7986
7987         PR bootstrap/40558
7988         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
7989         darwin9 for printing reg addresses with %y.
7990
7991 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
7992
7993         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
7994         truncation from operands in binary operations.
7995
7996 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
7997
7998         Revert:
7999         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
8000         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8001         subreg of op0 to the original op0.
8002
8003         * expmed.c (store_bit_field_1): Use a temporary as the destination
8004         instead of a paradoxical subreg when we need to truncate the result.
8005
8006 2009-07-01  DJ Delorie  <dj@redhat.com>
8007
8008         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8009         names to VLIW variants.
8010         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8011         * config/mep/intrinsics.md: Regenerate.
8012         * config/mep/intrinsics.h: Regenerate.
8013         * config/mep/mep-intrin.h: Regenerate.
8014
8015 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
8016
8017         PR debug/40462
8018         * jump.c (returnjump_p): Revert last patch.
8019         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8020
8021 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8022
8023         PR target/40575
8024         * pa.md (casesi32p): Use jump table label to determine the offset
8025         of the jump table.
8026         (casesi64p): Likewise.
8027
8028         * pa.c (forward_branch_p): Return bool type.  Use instruction
8029         addresses when available.  Assert that INSN has a jump label.
8030         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
8031         have a jump label.
8032
8033 2009-07-01  Richard Guenther  <rguenther@suse.de>
8034
8035         PR tree-optimization/19831
8036         * tree-ssa-dce.c (propagate_necessity): Calls to functions
8037         that only act as barriers do not make any previous stores necessary.
8038         * tree-ssa-structalias.c (handle_lhs_call): Delay making
8039         HEAP variables global, do not add a constraint from nonlocal.
8040         (find_func_aliases): Handle escapes through return statements.
8041         (compute_points_to_sets): Make escaped HEAP variables global.
8042
8043 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8044
8045         PR bootstrap/40597
8046         * expmed.c (emit_store_flag): Perform a conversion if necessary,
8047         after reducing a DImode cstore to SImode.
8048
8049 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8050
8051         * expr.c (expand_expr_real_1): Reinstate fallthrough to
8052         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
8053
8054 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
8055
8056         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
8057         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
8058         to 0.
8059         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
8060         and umod_optab if TARGET_BSD_DIVMOD.
8061         * config/vax/lib1funcs.asm: New file.
8062         * config/vax/t-linux: New file.
8063         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
8064
8065 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
8066
8067         PR c++/40566
8068         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
8069         to type arguments that have void type.
8070
8071         PR debug/40573
8072         * dwarf2out.c (gen_formal_parameter_die): Call
8073         equate_decl_number_to_die if node is different from origin.
8074
8075 2009-06-30  Anthony Green  <green@moxielogic.com>
8076
8077         Clean up moxie port for --enable-build-with-cxx.
8078         * config/moxie/moxie.c (moxie_function_value): First two
8079         parameters are const_tree, not tree.
8080         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
8081         (REG_CLASS_NAMES): Ditto.
8082         (REGNO_REG_CLASS): Ditto.
8083         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8084         (moxie_function_value): Fix constyness of arguments.
8085
8086 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
8087
8088         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8089         finalize_size_functions before further processing.
8090         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8091         (variable_size): Call self_referential_size on size expressions
8092         that contain a PLACEHOLDER_EXPR.
8093         (size_functions): New static variable.
8094         (copy_self_referential_tree_r): New static function.
8095         (self_referential_size): Likewise.
8096         (finalize_size_functions): New global function.
8097         * tree.c: Include tree-inline.h.
8098         (push_without_duplicates): New static function.
8099         (find_placeholder_in_expr): New global function.
8100         (substitute_in_expr) <tcc_declaration>: Return the replacement object
8101         on equality.
8102         <tcc_expression>: Likewise.
8103         <tcc_vl_exp>: If the replacement object is a constant, try to inline
8104         the call in the expression.
8105         * tree.h (finalize_size_functions): Declare.
8106         (find_placeholder_in_expr): Likewise.
8107         (FIND_PLACEHOLDER_IN_EXPR): New macro.
8108         (substitute_placeholder_in_expr): Update comment.
8109         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8110         is true.
8111         (copy_tree_body_r): Likewise.
8112         (copy_tree_body): New static function.
8113         (maybe_inline_call_in_expr): New global function.
8114         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8115         (maybe_inline_call_in_expr): Declare.
8116         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8117         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8118         GIMPLE_H.
8119
8120 2009-06-30  Richard Guenther  <rguenther@suse.de>
8121
8122         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8123         continue walking.
8124         (propagate_necessity): Do not mark reaching defs of stores
8125         as necessary.
8126
8127 2009-06-30  Jan Hubicka  <jh@suse.cz>
8128
8129         * cfgloopanal.c (check_irred): Move into ...
8130         (mark_irreducible_loops): ... here; return true if ireducible
8131         loops was found.
8132         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8133         (analyze_function): Try to prove loop finiteness.
8134         * cfgloop.h (mark_irreducible_loops): Update prototype.
8135         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8136
8137 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
8138
8139         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8140
8141 2009-06-30  Ira Rosen  <irar@il.ibm.com>
8142
8143         PR tree-optimization/40542
8144         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8145         types.
8146
8147 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8148
8149         PR tree-optimization/40582
8150         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8151         than useless_type_conversion_p.
8152         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8153         proper place.
8154
8155 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8156
8157         PR middle-end/40554
8158         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8159
8160 2009-06-30  Richard Guenther  <rguenther@suse.de>
8161
8162         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8163         use ao_ref references.
8164         (walk_aliased_vdefs): Likewise.
8165         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8166         * tree-ssa-dce.c (struct ref_data): Remove.
8167         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8168         (mark_aliased_reaching_defs_necessary): Adjust.
8169         (mark_all_reaching_defs_necessary_1): Likewise.
8170
8171 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
8172
8173         PR boostrap/40597
8174         * expmed.c (emit_cstore): New name of emit_store_flag_1.
8175         (emit_store_flag_1): Extract from emit_store_flag, adjust
8176         calls to (what now is) emit_cstore.
8177         (emit_store_flag): Call emit_store_flag_1 and also use it
8178         for what used to be recursive calls.
8179
8180 2009-06-30  Wei Guozhi  <carrot@google.com>
8181
8182         PR/40416
8183         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8184         if the target bb post dominates from bb.
8185         * config/i386/i386.c (memory_address_length): Check existence of base
8186         register before using it.
8187
8188 2009-06-30  Nick Clifton  <nickc@redhat.com>
8189             DJ Delorie  <dj@redhat.com>
8190
8191         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8192         __FMOVD_ENABLED__ is defined.
8193         * config/sh/sh.h
8194         (TARGET_FMOVD): Provide a default definition.
8195         (MASK_FMOVD): Likewise.
8196         (TARGET_CPU_CPP_BUILTINS): Define
8197         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8198         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8199         two fmov instructions depending upon whether TARGET_FMOVD is
8200         enabled.
8201         (split for DF load from memory into register): Also handle
8202         MEMs which consist of REG+DISP addressing.
8203         (split for DF store from register to memory): Likewise.
8204         * config/sh/sh.opt (mfmovd): Remove this switch.
8205         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8206         * config/sh/sh.c (sh_override_options): Do not automatically
8207         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8208         that to the -mfmovd command line switch.
8209
8210         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8211         the SH4 and SH4A.
8212         (fldi_ok): Always allow.
8213         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8214
8215 2009-06-29  DJ Delorie  <dj@redhat.com>
8216
8217         * doc/install.texi (mep-x-elf): Correct chip's full name.
8218
8219 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
8220
8221         * doc/extend.texi: Fix typo.
8222
8223 2009-06-29  Tom Tromey  <tromey@redhat.com>
8224
8225         * dwarf2.h: Remove.
8226         * Makefile.in (DWARF2_H): New variable.
8227         (except.o): Use it.
8228         (dwarf2out.o): Likewise.
8229         (dwarf2asm.o): Likewise.
8230         * config/i386/t-i386: Use DWARF2_H.
8231         * except.c: Include elf/dwarf2.h.
8232         * unwind-dw2.c: Include elf/dwarf2.h.
8233         * dwarf2out.c: Include elf/dwarf2.h.
8234         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8235         <dtprel>: New field.
8236         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8237         (size_of_loc_descr): Likewise.
8238         (output_loc_operands_raw): Likewise.
8239         (output_loc_operands): Handle new dtprel field.
8240         (loc_checksum): Update.
8241         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8242         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8243         * unwind-dw2-fde.c: Include elf/dwarf2.h.
8244         * dwarf2asm.c: Include elf/dwarf2.h.
8245         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
8246         * config/mmix/mmix.c: Include elf/dwarf2.h.
8247         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
8248         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
8249         * config/sh/sh.c: Include elf/dwarf2.h.
8250         * config/i386/i386.c: Include elf/dwarf2.h.
8251
8252 2009-06-29  DJ Delorie  <dj@redhat.com>
8253
8254         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
8255
8256         * doc/extend.texi: Add MeP attributes and pragmas.
8257         * doc/invoke.text: Add MeP Options.
8258         * doc/contrib.texi: Add MeP contribution.
8259         * doc/md.texi: Add MeP constraints.
8260         * doc/install.texi: Add MeP target.
8261
8262 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
8263
8264         * target.h (struct gcc_target): Add frame_pointer_required field.
8265         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
8266         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
8267         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
8268         hook.
8269         * reload1.c (update_eliminables): (Ditto.).
8270         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
8271         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8272         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
8273
8274         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
8275
8276         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
8277         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8278         (arm_frame_pointer_required): New function.
8279
8280         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
8281         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8282         (avr_frame_pointer_required_p): Declare as static.
8283         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
8284
8285         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
8286         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8287         (bfin_frame_pointer_required): Make as static, change return type
8288         to bool.
8289         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
8290
8291         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
8292         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8293         (cris_frame_pointer_required): New function.
8294
8295         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
8296
8297         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
8298         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8299         (fr30_frame_pointer_required): New function.
8300
8301         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
8302         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8303         (frv_frame_pointer_required): Make as static, change return type
8304         to bool.
8305         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
8306
8307         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
8308         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8309         (ix86_frame_pointer_required): Make as static, change return type to
8310         bool.
8311         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
8312
8313         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
8314         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8315
8316         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
8317
8318         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
8319
8320         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
8321
8322         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
8323         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8324         (mips_frame_pointer_required): Make as static.
8325         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
8326
8327         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
8328         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8329         (mmix_frame_pointer_required): Mew function.
8330
8331         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
8332         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8333
8334         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
8335
8336         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
8337
8338         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
8339
8340         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
8341         (CAN_ELIMINATE): Redefine.
8342         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8343         (sparc_frame_pointer_required): New function.
8344         (sparc_can_eliminate): New function.
8345         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
8346
8347         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
8348         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8349
8350         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
8351         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8352         (xtensa_frame_pointer_required): Make as static, change return type
8353         to bool.
8354         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
8355         Remove.
8356
8357 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
8358
8359         * doc/plugins.texi: Document PLUGIN_START_UNIT.
8360         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
8361         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
8362         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
8363         (register_callback): Handle PLUGIN_START_UNIT.
8364         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
8365
8366 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8367
8368         * tree.c (process_call_operands): Propagate TREE_READONLY from the
8369         operands.
8370         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
8371         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
8372
8373 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
8374
8375         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
8376         move cost.
8377
8378 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
8379
8380         * doc/extend.texi (Additional Floating Types): __float128 is also
8381         supported on i386 targets.
8382
8383 2009-06-29  Richard Guenther  <rguenther@suse.de>
8384
8385         PR middle-end/14187
8386         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
8387         flag.
8388         (pt_solutions_same_restrict_base): Declare.
8389         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
8390         flag.
8391         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
8392         (make_constraint_from, make_copy_constraint): Move earlier.
8393         (make_constraint_from_heapvar): New function.
8394         (make_constraint_from_restrict): Likewise.
8395         (handle_lhs_call): Use it.
8396         (find_func_aliases): Use it to track conversions to restrict
8397         qualified pointers.
8398         (struct fieldoff): Add only_restrict_pointers flag.
8399         (push_fields_onto_fieldstack): Initialize it.
8400         (create_variable_info_for): Track global restrict qualified pointers.
8401         (intra_create_variable_infos): Use make_constraint_from_heapvar.
8402         Track restrict qualified pointer arguments.
8403         (set_uids_in_ptset): Use varinfo is_global_var flag.
8404         (find_what_var_points_to): Set the vars_contains_restrict flag.
8405         Always create the points-to solution for sets including restrict tags.
8406         (pt_solutions_same_restrict_base): New function.
8407         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
8408         qualified pointers use pt_solutions_same_restrict_base as
8409         additional source for disambiguation.
8410
8411 2009-06-29  Richard Guenther  <rguenther@suse.de>
8412
8413         PR middle-end/38212
8414         * alias.c (find_base_decl): Remove.
8415         (get_deref_alias_set_1): Remove restrict handling.
8416         * c-common.c (c_apply_type_quals_to_decl): Do not set
8417         DECL_POINTER_ALIAS_SET.
8418         * gimplify.c (find_single_pointer_decl_1): Remove.
8419         (find_single_pointer_decl): Likewise.
8420         (internal_get_tmp_var): Remove restrict handling.
8421         (gimple_regimplify_operands): Likewise.
8422         * omp-low.c (expand_omp_atomic_pipeline): Do not set
8423         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
8424         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
8425         * tree.c (restrict_base_for_decl): Remove.
8426         (init_ttree): Do not allocate it.
8427         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
8428         LABEL_DECL_UID for label decls.
8429         (copy_node_stat): Do not copy restrict information.
8430         (decl_restrict_base_lookup): Remove.
8431         (decl_restrict_base_insert): Likewise.
8432         (print_restrict_base_statistics): Likewise.
8433         (dump_tree_statistics): Do not call print_restrict_base_statistics.
8434         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
8435         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
8436         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
8437         (LABEL_DECL_UID): Adjust.
8438         (DECL_BASED_ON_RESTRICT_P): Remove.
8439         (DECL_GET_RESTRICT_BASE): Likewise.
8440         (SET_DECL_RESTRICT_BASE): Likewise.
8441         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
8442
8443         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
8444         instead of DECL_POINTER_ALIAS_SET.
8445         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
8446         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
8447         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
8448
8449 2009-06-29  Richard Guenther  <rguenther@suse.de>
8450
8451         PR tree-optimization/40579
8452         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
8453         the IL to simplify has constants that overflowed.
8454
8455 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
8456
8457         PR tree-optimization/40550
8458         * tree-vect-generic.c (expand_vector_operations_1): Compute in
8459         vector_compute_type only when the size of vector_compute_type is
8460         less than the size of type.
8461
8462 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
8463
8464         * fold-const.c (contains_label_1): Fix comments.
8465         (contains_label_p): Do not walk trees multiple time.
8466
8467 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8468
8469         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
8470         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
8471         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
8472         ix86_fp_comparison_operator.
8473         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
8474         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
8475         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
8476         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
8477         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
8478         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
8479         (related splits): Change predicate to ix86_fp_comparison_operator.
8480         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
8481         instead of ix86_fp_comparison_codes.
8482         (ix86_trivial_fp_comparison_operator,
8483         ix86_fp_comparison_operator): New.
8484         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
8485         (ix86_expand_compare): Eliminate last two parameters.
8486         (ix86_fp_jump_nontrivial_p): Kill.
8487         * config/i386/i386.c (put_condition_code): Eliminate call to
8488         ix86_fp_comparison_codes and subsequent assertion.
8489         (ix86_fp_comparison_codes): Eliminate.
8490         (ix86_fp_swap_condition): New.
8491         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
8492         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
8493         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
8494         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
8495         and ix86_fp_swap_condition.
8496         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
8497         Use ix86_fp_comparison_strategy.
8498         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
8499         (ix86_fp_jump_nontrivial_p): Eliminate.
8500         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
8501         call to ix86_expand_compare.
8502         (ix86_split_fp_branch, ix86_expand_setcc,
8503         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
8504         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
8505
8506 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8507
8508         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
8509         related to jump_clobbers.
8510         * config/arm/arm.md (conds): Remove jump_clob case.
8511         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
8512         splits): Change comparison_operator to arm_comparison_operator.
8513         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
8514         Eliminate.
8515
8516 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8517
8518         * dojump.c (do_compare_rtx_and_jump): Try swapping the
8519         condition for floating point modes.
8520         * expmed.c (emit_store_flag_1): Move here a bigger part
8521         of emit_store_flag.
8522         (emit_store_flag): Try swapping the condition for floating point
8523         modes.
8524         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
8525
8526 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8527
8528         * expr.c (expand_expr_real_1): Just use do_store_flag.
8529         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
8530         emit_store_flag_force.
8531         * expmed.c (emit_store_flag_force): Copy here trick
8532         previously in expand_expr_real_1.  Try reversing the comparison.
8533         (emit_store_flag_1): Work if target is NULL.
8534         (emit_store_flag): Work if target is NULL, using the result mode
8535         from the comparison.  Use split_comparison, restructure final part
8536         to simplify conditionals.
8537
8538 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8539
8540         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
8541         * dojump.c (do_jump): Change handling of floating-point
8542         ops to use just do_compare_and_jump.
8543         (split_comparison): New.
8544         (do_compare_rtx_and_jump): Add here logic coming previously
8545         in do_jump, using split_comparison.
8546
8547 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
8548
8549         PR target/40489
8550         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
8551
8552 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8553
8554         * tree-ssa-alias.c: Fix unintentional commit.
8555
8556 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8557
8558         * passes.c (execute_one_pass): Fix unintentional commit.
8559
8560 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8561
8562         * df-problems.c (df_set_seen, df_unset_seen): Delete.
8563         (df_rd_local_compute, df_md_local_compute): Inline them.
8564
8565         (df_md_scratch): New.
8566         (df_md_alloc, df_md_free): Allocate/free it.
8567         (df_md_local_compute): Only include live registers in init.
8568         (df_md_transfer_function): Prune the in-set computed by
8569         the confluence function, and the gen-set too.
8570
8571 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8572
8573         PR rtl-optimization/26854
8574         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
8575         * df-problems.c (df_rd_add_problem): Fix comment.
8576         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
8577         df_md_simulate_artificial_defs_at_top,
8578         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
8579         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
8580         df_md_transfer_function, df_md_init, df_md_confluence_0,
8581         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
8582         problem_MD, df_md_add_problem): New.
8583         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
8584         df_md_get_bb_info): New.
8585         (DF_LAST_PROBLEM_PLUS1): Adjust.
8586
8587         * Makefile.in (fwprop.o): Include domwalk.h.
8588         * fwprop.c: Include domwalk.h.
8589         (reg_defs, reg_defs_stack): New.
8590         (bitmap_only_bit_between): Remove.
8591         (process_defs): New.
8592         (process_uses): Use reg_defs and local_md instead of
8593         bitmap_only_bit_between and local_rd.
8594         (single_def_use_enter_block): New, from build_single_def_use_links.
8595         (single_def_use_leave_block): New.
8596         (build_single_def_use_links): Remove code moved to
8597         single_def_use_enter_block, invoke domwalk.
8598         (use_killed_between): Adjust comment.
8599
8600 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8601
8602         * bitmap.h (bitmap_ior_and_into): New.
8603         * bitmap.c (bitmap_ior_and_into): New.
8604
8605 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8606
8607         * domwalk.h (struct dom_walk_data): Remove all callbacks except
8608         before_dom_children_before_stmts and after_dom_children_after_stmts.
8609         Rename the two remaining callbacks to just before_dom_children and
8610         after_dom_children. Remove other GIMPLE statement walking bits.
8611         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
8612         * graphite.c: Do not include domwalk.h.
8613         * tree-into-ssa.c (interesting_blocks): New global.
8614         (struct mark_def_sites_global_data): Remove it and names_to_rename.
8615         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
8616         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
8617         now that they're not domwalk callbacks.
8618         (rewrite_initialize_block): Rename to...
8619         (rewrite_enter_block): ... this, place after called functions.  Test
8620         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
8621         (rewrite_finalize_block): Rename to...
8622         (rewrite_leave_block): ... this, place after called functions.
8623         (rewrite_update_init_block): Rename to...
8624         (rewrite_update_enter_block): ... this, place after called functions.
8625         Test interesting_blocks, call rewrite_update_stmt and
8626         rewrite_update_phi_arguments.
8627         (rewrite_update_fini_block): Rename to...
8628         (rewrite_leave_block): ... this, place after called functions.
8629         (rewrite_blocks): Remove last argument, simplify initialization of
8630         walk_data.
8631         (mark_def_sites_initialize_block): Rename to...
8632         (mark_def_sites_block): ... this, call mark_def_sites.
8633         (mark_def_sites_blocks): Remove argument, simplify initialization of
8634         walk_data.
8635         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
8636         (update_ssa): Likewise.
8637         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
8638         callback.
8639         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
8640         (dom_opt_initialize_block): Rename to...
8641         (dom_opt_enter_block): ... this, place after called functions.  Walk
8642         statements here, inline propagate_to_outgoing_edges.
8643         (dom_opt_finalize_block): Rename to...
8644         (dom_opt_leave_block): ... this, place after called functions.
8645         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
8646         domwalk callback.
8647         (dse_enter_block, dse_record_phi): New.
8648         (dse_record_phis): Delete.
8649         (dse_finalize_block): Rename to...
8650         (dse_leave_block): ... this.
8651         (tree_ssa_dse): Simplify initialization of walk_data.
8652         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
8653         Adjust initialization of walk_data.
8654         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
8655         * tree-ssa-loop-phiopt.c (get_non_trapping):
8656         Adjust initialization of walk_data.
8657         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
8658         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
8659         it's not a domwalk callback.
8660         (uncprop_initialize_block): Rename to...
8661         (dse_enter_block): ... this, call uncprop_into_successor_phis.
8662         (dse_finalize_block): Rename to...
8663         (dse_leave_block): ... this.
8664         (tree_ssa_uncprop): Simplify initialization of walk_data.
8665         * Makefile.in: Adjust dependencies.
8666
8667 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
8668
8669         * arm.md (casesi): Fix test for Thumb1.
8670         (thumb1_casesi_internal_pic): Likewise.
8671         (thumb1_casesi_dispatch): Likewise.
8672
8673 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
8674
8675         * config/arm/arm-cores.def: Added core cortex-m0.
8676         * config/arm/arm-tune.md: Regenerated.
8677         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
8678
8679 2009-06-26  DJ Delorie  <dj@redhat.com>
8680
8681         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
8682
8683         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
8684         the scheduler doesn't tag jump insns.
8685
8686 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
8687
8688         * c-decl.c (merge_decls): Re-indent.
8689
8690 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
8691
8692         PR c/39902
8693         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
8694         Special-case decimal float constants.
8695
8696 2009-06-26  Richard Henderson  <rth@redhat.com>
8697
8698         * function.h (struct function): Add cannot_be_copied_reason,
8699         and cannot_be_copied_set.
8700         * tree-inline.c (has_label_address_in_static_1): Rename from
8701         inline_forbidden_p_2; don't set inline_forbidden_reason here.
8702         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
8703         don't set inline_forbidden_reason.
8704         (copy_forbidden): New function, split out of inline_forbidden_p.
8705         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
8706         (inline_forbidden_p): Use copy_forbidden.
8707         (tree_versionable_function_p): Likewise.
8708         (inlinable_function_p): Merge into tree_inlinable_function_p.
8709         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
8710         * ipa-cp.c (ipcp_versionable_function_p): New function.
8711         (ipcp_cloning_candidate_p): Use it.
8712         (ipcp_node_modifiable_p): Likewise.
8713
8714 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
8715
8716         * builtins.c (expand_builtin_alloca): Handle builtin alloca
8717         that is marked not to be inlined. Remove flag_mudflap use.
8718         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
8719         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
8720
8721 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
8722
8723         PR bootstrap/40338
8724         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
8725         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
8726
8727 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
8728
8729         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
8730         shared libgcc.
8731         (__mingwthr_remove_key_dtor): Likewise.
8732
8733 2009-06-26  Richard Guenther  <rguenther@suse.de>
8734
8735         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
8736
8737 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8738
8739         PR middle-end/40525
8740         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
8741         try the non-cond_exec path also.
8742
8743 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8744
8745         PR target/40468
8746         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
8747         (output_cbranch): Use new functions.
8748         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
8749         Likewise.
8750
8751 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
8752             Pat Haugen  <pthaugen@us.ibm.com>
8753             Revital Eres <ERES@il.ibm.com>
8754
8755         * config/rs6000/rs6000.c (print_operand): Correct lossage message
8756         for %c error.  Add %x support to print VSX registers as a unified
8757         register set, instead of separate float and altivec registers.
8758         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
8759         %y case, and add support for VSX pre-modify addresses.
8760         (output_toc): Add assert for CONST containing an integer constant
8761         in the PLUS case.
8762         (rs6000_adjust_cost): Add POWER7 support.
8763         (insn_must_be_first_in_group): Ditto.
8764         (insn_must_be_last_in_group): Ditto.
8765         (rs6000_emit_popcount): Ditto.
8766         (rs6000_vector_mode_supported_p): Ditto.
8767
8768         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
8769         Change some of the functions called by macros to being called
8770         through a pointer, so debug functions can be inserted if
8771         -mdebug=addr or -mdebug=cost.
8772         (rs6000_preferred_reload_class_ptr): Ditto.
8773         (rs6000_secondary_reload_class_ptr): Ditto.
8774         (rs6000_secondary_memory_needed_ptr): Ditto.
8775         (rs6000_cannot_change_mode_class_ptr): Ditto.
8776         (rs6000_secondary_reload_inner): Ditto.
8777         (rs6000_legitimize_reload_address): Ditto.
8778         (rs6000_legitimize_reload_address_ptr): Ditto.
8779         (rs6000_mode_dependent_address): Ditto.
8780         (rs6000_mode_dependent_address_ptr): Ditto.
8781
8782         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
8783         function to return true if the mode allows reg + integer
8784         addresses.
8785         (virtual_stack_registers_memory_p): New function to return true if
8786         the address refers to a virtual stack register.
8787         (rs6000_legitimate_offset_address_p): Move code to say whether a
8788         mode supports reg+int addressing to reg_offset_addressing_ok_p and
8789         call it.
8790         (rs6000_legitimate_address_p): Add checks for modes that only can
8791         do reg+reg addressing.  Start adding VSX support.
8792         (rs6000_legitimize_reload_address): Ditto.
8793         (rs6000_legitimize_address): Ditto.
8794         (rs6000_debug_legitimate_address_p): New debug functions for
8795         -mdebug=addr and -mdebug=cost.
8796         (rs6000_debug_rtx_costs): Ditto.
8797         (rs6000_debug_address_costs): Ditto.
8798         (rs6000_debug_adjust_cost): Ditto.
8799         (rs6000_debug_legitimize_address): Ditto.
8800         (rs6000_legitimize_reload_address_ptr): Point to call normal
8801         function or debug function.  Make functions called via pointer
8802         static.
8803         (rs6000_mode_dependent_address_ptr): Ditto.
8804         (rs6000_secondary_reload_class_ptr): Ditto.
8805         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
8806         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
8807         into a friendlier error.
8808         (rs6000_init_builtins): Add initial VSX support.
8809         (rs6000_adjust_cost): Fix some spacing issues.
8810
8811         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
8812         (REG_CLASS_NAMES): Ditto.
8813         (REG_CLASS_CONTENTS): Ditto.
8814         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
8815         pointer, to add -mdebug=addr support.
8816         (CANNOT_CHANGE_MODE_CLASS): Ditto.
8817         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
8818         -mdebug=addr support.
8819         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
8820         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
8821         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
8822
8823         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
8824         16-bit values.
8825         (bswapsi*): Set attribute types for load/store.  Add combiner
8826         patterns to eliminate zero extend on 64-bit.
8827         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
8828         stdbrx if the hardware supports those instructions.
8829
8830 2009-06-25  Ian Lance Taylor  <iant@google.com>
8831
8832         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
8833         (Link Options): Document -static-libstdc++.
8834
8835 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8836
8837         PR target/38731
8838         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
8839         DATA_ALIGNMENT instead.
8840
8841 2009-06-25  Richard Guenther  <rguenther@suse.de>
8842
8843         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
8844         indirect references against the callused/escaped solutions.
8845         (call_may_clobber_ref_p_1): Likewise.
8846
8847 2009-06-25  Martin Jambor  <mjambor@suse.cz>
8848
8849         PR tree-optimization/40493
8850         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
8851         (enum unscalarized_data_handling): New type.
8852         (handle_unscalarized_data_in_subtree): Return what has been done.
8853         (load_assign_lhs_subreplacements): Handle left flushes differently.
8854         (sra_modify_assign): Use unscalarized_data_handling, simplified
8855         condition determining whether to remove the statement.
8856
8857 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
8858
8859         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
8860         excerpt - @ should be doubled for texinfo.
8861
8862 2009-06-24  Ian Lance Taylor  <iant@google.com>
8863
8864         * config/arc/arc.c: Include "df.h".
8865         (arc_attribute_table): Make static.  Move higher in file.
8866         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
8867         (output_shift): Initialize n later to avoid warning.
8868         * config/arm/arm.c (arm_attribute_table): Make static.  Move
8869         higher in file.
8870         * config/avr/avr.c (avr_attribute_table): Make static.  Move
8871         higher in file.
8872         (reg_class_tab): Change array type from int to enum reg_class.
8873         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
8874         LABEL_REF.
8875         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
8876         (lshrhi3_out): Likewise.
8877         (class_likely_spilled_p): Change return type to bool.
8878         (avr_rtx_costs): Use local code variable with enum type.
8879         * config/avr/avr.md (movmemhi): Use add_reg_note.
8880         (andhi3, andsi3): Don't use AS2 with "and".
8881         (iorhi3, iorsi3): Don't use AS2 with "or".
8882         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
8883         * config/crx/crx.c: Include "df.h".
8884         (crx_attribute_table): Make static.
8885         * config/m32r/m32r.c: Include "df.h".
8886         (m32r_attribute_table): Make static.  Move higher in file.
8887         (pop): Use add_reg_note.
8888         (block_move_call): Change 0 to LCT_NORMAL in function call.
8889         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
8890         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
8891         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
8892         declare, not just when TREE_CODE is defined.
8893         * config/m68hc11/m68hc11.c: Include "expr.h".
8894         (m68hc11_attribute_table): Make static.  Move higher in file.
8895         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
8896         function call.
8897         (m68hc11_register_indirect_p): Likewise.
8898         (m68hc11_function_arg_padding): Change return type to enum
8899         direction.
8900         (emit_move_after_reload): Use add_reg_note.
8901         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
8902         (m68hc11_split_logical): Likewise.
8903         (m68hc11_rtx_costs): Add local code_and outer_code variables with
8904         enum type.
8905         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
8906         to VOIDmode in function call.
8907         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
8908         tree is defined.
8909         (m68hc11_split_logical): Update declaration.
8910         (m68hc11_function_arg_padding): Update declaration.
8911         * config/mcore/mcore.c (regno_reg_class): Change form array of int
8912         to array of enum reg_class.
8913         (mcore_attribute_table): Make static.  Move higher in file.
8914         (mcore_rtx_costs): Add cast to enum type.
8915         * config/mcore/mcore.h (regno_reg_class): Update declaration.
8916         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
8917         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
8918         in file.
8919         * config/sh/predicates.md (trapping_target_operand): Rename and to
8920         and_expr.
8921         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
8922         higher in file.
8923         * config/spu/spu.c (spu_attribute_table): Make static.  Move
8924         higher in file.
8925         * config/v850/v850.c (v850_attribute_table): Make static.  Move
8926         higher in file.
8927         (v850_rtx_costs): Use local code with enum type.
8928         (expand_epilogue): Add cast.
8929         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
8930
8931 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
8932
8933         PR target/40515
8934         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
8935         -m2a-single-only and -m2a-nofpu.
8936         * config/sh/sh.opt: Document m2a generates FPU code.
8937
8938 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
8939
8940         * defaults.h (CAN_ELIMINATE): Provide default.
8941         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
8942         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
8943         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
8944         * config/spu/spu.h (CAN_ELIMINATE): Delete.
8945         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
8946         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
8947         * config/cris/cris.h (CAN_ELIMINATE): Delete.
8948         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
8949         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
8950         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
8951
8952 2009-06-24  DJ Delorie  <dj@redhat.com>
8953
8954         * mep-ext-cop.cpu: Fix copyright notice.
8955         * mep-default: Fix copyright notice.
8956         * mep-core: Fix copyright notice.
8957         * mep: Fix copyright notice.
8958         * mep-ivc2: Fix copyright notice.
8959         * mep-c5: Fix copyright notice.
8960
8961 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
8962
8963         * doc/contrib.texi (Contributors):
8964
8965 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8966
8967         PR middle-end/40501
8968         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
8969         src and dst operands if necessary.
8970
8971 2009-06-23  DJ Delorie  <dj@redhat.com>
8972
8973         Add MeP port.
8974         * config.gcc: Add mep support.
8975         * recog.c: Resurrect validate_replace_rtx_subexp().
8976         * recog.h: Likewise.
8977         * config/mep/: Add new port:
8978         * config/mep/constraints.md: New file.
8979         * config/mep/default.h: New file.
8980         * config/mep/intrinsics.h: New file.
8981         * config/mep/intrinsics.md: New file.
8982         * config/mep/ivc2-template.h: New file.
8983         * config/mep/mep-c5.cpu: New file.
8984         * config/mep/mep-core.cpu: New file.
8985         * config/mep/mep-default.cpu: New file.
8986         * config/mep/mep-ext-cop.cpu: New file.
8987         * config/mep/mep-intrin.h: New file.
8988         * config/mep/mep-ivc2.cpu: New file.
8989         * config/mep/mep-lib1.asm: New file.
8990         * config/mep/mep-lib2.c: New file.
8991         * config/mep/mep-pragma.c: New file.
8992         * config/mep/mep-protos.h: New file.
8993         * config/mep/mep-tramp.c: New file.
8994         * config/mep/mep.c: New file.
8995         * config/mep/mep.cpu: New file.
8996         * config/mep/mep.h: New file.
8997         * config/mep/mep.md: New file.
8998         * config/mep/mep.opt: New file.
8999         * config/mep/predicates.md: New file.
9000         * config/mep/t-mep: New file.
9001
9002 2009-06-23  Ian Lance Taylor  <iant@google.com>
9003
9004         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
9005         from loose_warn into c_loose_warn and from strict_warn into
9006         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
9007         --enable-build-with-cxx.  Set and substitute
9008         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
9009         * Makefile.in (CXXFLAGS): New variable.
9010         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9011         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
9012         the default is the same as $(STRICT_WARN).
9013         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9014         (CXX): New variable.
9015         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9016         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9017         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9018         (HOST_LIBS): New variable.
9019         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9020         (ALL_CXXFLAGS): New variable.
9021         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
9022         * doc/install.texi (Configuration): Document
9023         --enable-build-with-cxx, --with-stage1-ldflags,
9024         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
9025         * configure: Rebuild.
9026
9027 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9028
9029         * config/arm/arm.c (arm_override_options): Fix braces and formatting
9030         from previous commit.
9031
9032 2009-06-23  Ian Lance Taylor  <iant@google.com>
9033
9034         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
9035
9036 2009-06-23  Ian Lance Taylor  <iant@google.com>
9037
9038         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
9039         with ATTRIBUTE_UNUSED.
9040
9041 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
9042             Pat Haugen  <pthaugen@us.ibm.com>
9043             Revital Eres  <eres@il.ibm.com>
9044
9045         * config.in (HAVE_AS_POPCNTD): Add default definition.
9046         (HAVE_AS_LWSYNC): Ditto.
9047
9048         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
9049         release number.
9050         (gcc_cv_as_powerpc_cmpb): Ditto.
9051         (gcc_cv_as_powerpc_dfp): Ditto.
9052         (gcc_cv_as_powerpc_vsx): Ditto.
9053         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
9054         supporting the popcntd/lwsync instructions.
9055         (gcc_cv_as_powerpc_lwsync): Ditto.
9056         * configure: Regenerate.
9057
9058         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
9059         -mcpu=native and -mcpu=power7.
9060         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
9061
9062         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
9063         a variable instead of a mask to reduce the number of mask bits.
9064         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
9065         (-mbit-word): Ditto.
9066         (-mregnames): Ditto.
9067         * config/rs6000/rs6000.opt (-mupdate): Ditto.
9068         (-mfused-madd): Ditto.
9069
9070         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
9071         2.06 instructions.
9072         (-mvsx): New switch for VSX instructions.
9073         (-misel): Move from a variable to a mask to allow it to be set by
9074         -mcpu=.
9075
9076         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
9077         function declaration to an array declaration.
9078         (rs6000_hard_regno_nregs): New external array declaration.
9079
9080         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
9081         files included by rs6000.md.
9082
9083         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9084         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9085
9086         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9087         a target mask.
9088         (rs6000_debug_reg): New -mdebug= variables.
9089         (rs6000_debug_addr): Ditto.
9090         (rs6000_debug_cost): Ditto.
9091         (rs6000_pmode): New variable to hold Pmode.
9092         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9093         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9094         calculated at compiler start.
9095         (rs6000_hard_regno_nregs): Change function to an array which holds
9096         HARD_REGNO_NREGS calculated at compiler start.
9097         (rs6000_explicit_options): Delete isel field.
9098         (rs6000_vector_unit): New array to hold which vector unit
9099         supports arithmetic options for a given type.
9100         (rs6000_vector_mem): New array to hold which vector unit supports
9101         memory reference operations for a given type.
9102         (rs6000_vector_align): New array to given the alignment of each
9103         vector type.
9104         (power7_cost): New basic costs for power7.
9105         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9106         (rs6000_hard_regno_nregs_internal): New function, moved from
9107         HARD_REGNO_NREGS, to calculate the number of registers each hard
9108         register takes for each type.
9109         (rs6000_debug_reg_print): New function for -mdebug=reg support.
9110         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9111         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9112         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9113         unit information here so it is calculated once at compiler startup
9114         time.
9115         (rs6000_override_options): Make -misel a target mask.  Add more
9116         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
9117         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
9118         -mdebug=cost.
9119         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9120         (rs6000_handle_option): Move -misel from variable to target mask.
9121         (rs6000_builtin_mask_for_load): Add VSX support.
9122         (rs6000_conditional_register_usage): Ditto.
9123         (USE_ALTIVEC_FOR_ARG_P): Ditto.
9124         (function_arg_boundary): Ditto.
9125         (rs6000_expand_builtin): Ditto.
9126         (def_builtin): Make abort message a little friendlier.
9127         (rs6000_emit_int_cmove): Add support for 64-bit isel.
9128
9129         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9130         assembler support the popcntd instruction instead of a vsx
9131         instruction to enable power7 support.
9132         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9133         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9134         option to the assembler if -mcpu=native.
9135         (ASM_CPU_NATIVE_SPEC): Ditto.
9136         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9137         ISA 2.06 features.
9138         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9139         the lwsync instruction.
9140         (enum processor_type): Add PROCESSOR_POWER7.
9141         (rs6000_debug_reg): New -mdebug= options.
9142         (rs6000_debug_addr): Ditto.
9143         (rs6000_debug_cost): Ditto.
9144         (rs6000_isel): Delete.
9145         (enum rs6000_vector): New enum to say what vector unit we have.
9146         (VECTOR_UNIT_*): New macros to say which vector unit has
9147         arithmetic operations for a given type.
9148         (VECTOR_MEM_*): New macros to say which vector unit has memory
9149         operations for a given type.
9150         (TARGET_LDBRX): Whether the machine supports the ldbrx
9151         instruction.
9152         (TARGET_ISEL): Delete, -misel moved to be a mask.
9153         (TARGET_ISEL64): New macro for 64-bit isel support.
9154         (UNITS_PER_VSX_WORD): New macro.
9155         (POINTER_SIZE): Move to be an external variable, rather than
9156         calculating whether we are generating 32 ot 64-bit code.
9157         (Pmode): Ditto.
9158         (STACK_BOUNDARY): Add VSX support.
9159         (LOCAL_ALIGNMENT): Ditto.
9160         (SLOW_UNALIGNED_ACCESS): Ditto.
9161         (VSX_REGNO_P): New macro for VSX support.
9162         (VFLOAT_REGNO_P): Ditto.
9163         (VINT_REGNO_P): Ditto.
9164         (VLOGICAL_REGNO_P): Ditto.
9165         (VSX_VECTOR_MODE): Ditto.
9166         (VSX_SCALAR_MODE): Ditto.
9167         (VSX_MODE): Ditto.
9168         (VSX_MOVE_MODE): Ditto.
9169         (VSX_REG_CLASS_P): Ditto.
9170         (HARD_REGNO_NREGS): Instead of calling a function, use an array
9171         lookup.
9172         (UNITS_PER_SIMD_WORD): Add VSX support.
9173         (MODES_TIEABLE_P): Ditto.
9174         (STARTING_FRAME_OFFSET): Ditto.
9175         (STACK_DYNAMIC_OFFSET): Ditto.
9176         (EPILOGUE_USES): Ditto.
9177         (REGNO_REG_CLASS): Move to array lookup.
9178         (CLASS_MAX_NREGS): Ditto.
9179         (rs6000_vector_reg_class): Add declaration.
9180         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9181         overlap with the floating point and Altivec registers.
9182
9183         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9184
9185         * config/rs6000/driver-rs6000.c (asm_names): New static array to
9186         give the appropriate asm switches if -mcpu=native.
9187         (host_detect_local_cpu): Add support for "asm".
9188         (host_detect_local_cpu): Follow GNU code guidelines for name.
9189
9190         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9191         -mbit-word to a variable instead of being a target mask.
9192
9193         * config/rs6000/sync.md (lwsync): If the assembler supports it,
9194         emit the lwsync instruction instead of emitting the instruction as
9195         an integer constant.
9196
9197         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9198         fixuns_trundfsi2, move expander into rs6000.md.
9199
9200         * config/rs6000/rs6000.md (cpu): Add power7.
9201         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9202         (logical predicate patterns): Change the single instruction
9203         primitives that set CR0 to be fast_compare instead of compare.
9204         (norsi*): Ditto.
9205         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9206         (popcntddi2): Ditto.
9207         (popcount<mode>): Ditto.
9208         (floating multiply/add insns): Name the floating point
9209         multiply/add insns.
9210         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9211         (isel_unsigned_<mode>): Ditto.
9212         (fixuns_trundfsi2): Move expander here from spe.md.
9213         (smindi3): Define if we have -misel on 64-bit systems.
9214         (smaxdi3): Ditto.
9215         (umindi3): Ditto.
9216         (umaxdi3): Ditto.
9217
9218 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
9219
9220         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9221         extra_objs.
9222         * config/avr/avr.c (avr_current_device): New variable.
9223         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9224         (avr_arch, mcu_type_s): Move to avr.h.
9225         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9226         default_data_section_start fields.
9227         (avr_arch): Moved from avr.c.
9228         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9229         library_name fields.
9230         (avr_current_device, avr_mcu_types, avr_arch_types,
9231         avr_device_to_arch, avr_device_to_data_start,
9232         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9233         (EXTRA_SPEC_FUNCTIONS): Define.
9234         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9235         options mapping. Use device_to_arch and device_to_data_start insted.
9236         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9237         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9238         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9239         * config/avr/driver-avr.c: New file.
9240         * config/avr/avr-devices.c: New file.
9241
9242 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
9243
9244         * var-tracking.c (unshare_variable): Force initialized to
9245         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
9246         (set_variable_part): Likewise.
9247         (struct variable_union_info): Remove pos_src field.
9248         (vui_vec, vui_allocated): New variables.
9249         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
9250         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
9251         == 1 use a simpler sorting algorithm.  Compute pos field right
9252         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
9253         Avoid quadratic comparison if !flag_var_tracking_uninit.
9254         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
9255         unshare_variable unconditionally.
9256         (dataflow_set_different_2): Removed.
9257         (dataflow_set_different): Don't traverse second hash table.
9258         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
9259         unconditionally to var_reg_set or var_mem_set.
9260         (emit_notes_in_bb): Likewise.
9261         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
9262         unshare_variable.
9263         (emit_note_insn_var_location): Don't set initialized to
9264         VAR_INIT_STATUS_INITIALIZED early.
9265         (vt_finalize): Free vui_vec if needed, clear vui_vec and
9266         vui_allocated.
9267         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
9268
9269         * tree-object-size.c (addr_object_size): Instead of checking
9270         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
9271         are no FIELD_DECLs following it.
9272
9273 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
9274
9275         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
9276         order to match bswaps with signed source operands.
9277
9278 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9279
9280         * sdbout.c (sdbout_one_type): Fix braces in switch.
9281
9282 2009-06-23  Richard Guenther  <rguenther@suse.de>
9283
9284         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
9285         member.
9286         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
9287         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
9288         var_callused, callused_tree, var_storedanything, storedanything_tree,
9289         var_integer, integer_tree): Remove global variables.
9290         (new_var_info): Do not pass new id, append the new var to the
9291         global variable vector.
9292         (do_ds_constraint): Use is_global_var member of the variable-info.
9293         (new_scalar_tmp_constraint_exp): Adjust.
9294         (create_function_info_for): Likewise.
9295         (create_variable_info_for): Likewise.
9296         (find_what_var_points_to): Remove dead code.
9297         (init_base_vars): Simplify.
9298         (compute_points_to_sets): Adjust.
9299
9300 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9301
9302         * combine.c (try_combine): Dump information about the insns we're
9303         combining.
9304
9305 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9306
9307         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
9308         check when calling force_to_mode on TRUNCATE's operand.
9309
9310 2009-06-22  Ian Lance Taylor  <iant@google.com>
9311
9312         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
9313
9314 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9315
9316         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
9317
9318 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9319
9320         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
9321         override library linkage flags such as -static-libgcc or
9322         -shared-libgcc.
9323
9324 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
9325
9326         * config/m68k/m68k-devices.def: Add line for MCF5221x.
9327
9328 2009-06-22  Ian Lance Taylor  <iant@google.com>
9329
9330         * config/linux.opt: Put mglibc ahead of muclibc.
9331
9332         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
9333         for duplicate decls.
9334
9335 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9336
9337         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
9338
9339 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9340
9341         PR objc/28050
9342         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
9343         instead of NULL if a parser error occurs.
9344
9345 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9346
9347         * dwarf2out.c (dwarf2_debug_hooks): Initialize
9348         non-DWARF2_DEBUGGING_INFO version.
9349
9350 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
9351
9352         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
9353         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
9354
9355         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
9356         (LIBGCC2_TF_CEXT): Define.
9357         (TF_SIZE): Define.
9358
9359 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9360
9361         PR target/40463
9362         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
9363
9364 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9365
9366         * config/arm/arm.c (arm_override_options): Disable
9367         -mcaller-super-interworking and -mcallee-super-interworking.
9368         * doc/invoke.texi (ARM Options): Document this.
9369
9370 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
9371
9372         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
9373         * config/arm/constraints.md (j): New constraint for movw operands.
9374         (N): Remove thumb2 meaning.
9375         * config/arm/arm.md (*arm_movw): Delete.
9376         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
9377         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
9378         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
9379
9380 2009-06-22  Martin Jambor  <mjambor@suse.cz>
9381
9382         PR tree-optimization/40492
9383         * tree-sra.c (sra_modify_assign): Pass zero offsets to
9384         build_ref_for_offset.
9385
9386 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
9387
9388         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
9389         JUMP_TABLE_DATA_P predicates where applicable.
9390         * auto-inc-dec.c: Ditto.
9391         * builtins.c: Ditto.
9392         * caller-save.c: Ditto.
9393         * calls.c: Ditto.
9394         * cfgcleanup.c: Ditto.
9395         * cfglayout.c: Ditto.
9396         * cfgrtl.c: Ditto.
9397         * combine.c: Ditto.
9398         * combine-stack-adj.c: Ditto.
9399         * cse.c: Ditto.
9400         * cselib.c: Ditto.
9401         * dbxout.c: Ditto.
9402         * df-scan.c: Ditto.
9403         * dse.c: Ditto.
9404         * dwarf2asm.c: Ditto.
9405         * dwarf2out.c: Ditto.
9406         * emit-rtl.c: Ditto.
9407         * except.c: Ditto.
9408         * explow.c: Ditto.
9409         * expmed.c: Ditto.
9410         * expr.c: Ditto.
9411         * final.c: Ditto.
9412         * function.c: Ditto.
9413         * fwprop.c: Ditto.
9414         * gcse.c: Ditto.
9415         * genpreds.c: Ditto.
9416         * genrecog.c: Ditto.
9417         * ifcvt.c: Ditto.
9418         * ira-costs.c: Ditto.
9419         * ira-lives.c: Ditto.
9420         * jump.c: Ditto.
9421         * loop-iv.c: Ditto.
9422         * lower-subreg.c: Ditto.
9423         * modulo-sched.c: Ditto.
9424         * optabs.c: Ditto.
9425         * postreload.c: Ditto.
9426         * print-rtl.c: Ditto.
9427         * recog.c: Ditto.
9428         * reginfo.c: Ditto.
9429         * regmove.c: Ditto.
9430         * reload1.c: Ditto.
9431         * reload.c: Ditto.
9432         * reorg.c: Ditto.
9433         * rtlanal.c: Ditto.
9434         * rtl.c: Ditto.
9435         * sched-vis.c: Ditto.
9436         * sdbout.c: Ditto.
9437         * sel-sched-ir.c: Ditto.
9438         * simplify-rtx.c: Ditto.
9439         * targhooks.c: Ditto.
9440         * var-tracking.c: Ditto.
9441         * vmsdbgout.c: Ditto.
9442
9443 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9444
9445         * Makefile.in (install-plugin): Always use DESTDIR.
9446
9447 2009-06-22  Olivier Hainque  <hainque@adacore.com>
9448
9449         * config/pa/pa.c (output_call): Don't optimize post call jumps
9450         into return address adjustments if the call may throw.
9451
9452 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
9453
9454         * arm.c (thumb1_output_casesi): New function.
9455         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
9456         optimizing for size or PIC.
9457         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
9458         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
9459         (casesi): Handle Thumb-1 when optimizing for size or PIC.
9460         (thumb1_casesi_internal_pic): New expand rule.
9461         (thumb1_casesi_dispatch): New pattern.
9462         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
9463         thumb-1 mode.
9464         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
9465         in the text seciton when PIC or optimizing for size.
9466         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
9467         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
9468         preservation properties of code.
9469         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
9470         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
9471         (__gnu_thumb1_case_si): New function.
9472         * t-arm (LIB1ASMSRC): Define here.
9473         (LIB1ASMFUNCS): Add some common functions.
9474         * t-arm-elf (LIB1ASMSRC): Delete.
9475         (LIB1ASMFUNCS): Append to existing set.
9476         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9477         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9478         * t-symbian (LIB1ASMFUNCS): Likewise.
9479         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9480         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9481
9482 2009-06-21  Richard Guenther  <rguenther@suse.de>
9483
9484         PR tree-optimization/38729
9485         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
9486         to loops with a single exit if -fno-expensive-optimizations.
9487
9488 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
9489
9490         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
9491         (dataflow_set): Change vars type from htab_t to shared_hash.
9492         (shared_hash_pool, empty_shared_hash): New variables.
9493         (vars_clear): Removed.
9494         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
9495         shared_hash_find_slot_unshare, shared_hash_find_slot,
9496         shared_hash_find_slot_noinsert, shared_hash_find): New
9497         static inlines.
9498         (shared_hash_unshare, shared_hash_destroy): New functions.
9499         (unshare_variable): Unshare set->vars if shared, use
9500         shared_hash_htab.
9501         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
9502         (get_init_value, find_src_set_src, dump_dataflow_set,
9503         clobber_variable_part, emit_notes_for_differences): Use
9504         shared_hash_htab.
9505         (dataflow_set_init): Remove second argument, set vars to
9506         empty_shared_hash instead of creating a new htab.
9507         (dataflow_set_clear): Call shared_hash_destroy and set vars
9508         to empty_shared_hash instead of calling vars_clear.
9509         (dataflow_set_copy): Don't call vars_copy, instead just share
9510         the src htab with dst.
9511         (variable_union): Use shared_hash_*, use initially NO_INSERT
9512         lookup if set->vars is shared.  Don't keep slot cleared before
9513         calling unshare_variable.  Unshare set->vars if needed.
9514         Even ->refcount == 1 vars must be unshared if set->vars is shared
9515         and var needs to be modified.
9516         (variable_canonicalize): New function.
9517         (dataflow_set_union): If dst->vars is empty, just share src->vars
9518         with dst->vars and traverse with variable_canonicalize to canonicalize
9519         and unshare what is needed.
9520         (dataflow_set_different): If old_set and new_set use the same shared
9521         htab, they aren't different.  If number of htab elements is different,
9522         htabs are different.  Use shared_hash_*.
9523         (dataflow_set_destroy): Call shared_hash_destroy instead of
9524         htab_delete.
9525         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
9526         second argument to dataflow_set_init.
9527         (vt_initialize): Likewise.  Initialize shared_hash_pool and
9528         empty_shared_hash, move bb in/out initialization afterwards.
9529         Use variable_htab_free instead of NULL as changed_variables del hook.
9530         (variable_was_changed): Change type of second argument to pointer to
9531         dataflow_set.  When inserting var into changed_variables, bump
9532         refcount.  Unshare set->vars if set is shared htab and slot needs to
9533         be cleared.
9534         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
9535         lookup if set->vars is shared.  Unshare set->vars if needed.
9536         Even ->refcount == 1 vars must be unshared if set->vars is shared
9537         and var needs to be modified.  Adjust variable_was_changed caller.
9538         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
9539         vars must be unshared if set->vars is shared and var needs to be
9540         modified.  Adjust variable_was_changed caller.
9541         (emit_note_insn_var_location): Don't pool_free var.
9542         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
9543         instead of 1.
9544         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
9545         free_alloc_pool on shared_hash_pool.
9546
9547 2009-06-20  Anthony Green  <green@moxielogic.com>
9548
9549         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
9550         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
9551
9552 2009-06-20  Richard Guenther  <rguenther@suse.de>
9553
9554         * tree-ssa-structalias.c (find_func_aliases): For memset use
9555         a constraint from NULL if we memset to zero.
9556         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
9557         we explicitly handle that do not read from memory.
9558         (call_may_clobber_ref_p_1): Properly handle builtins that may
9559         set errno.
9560
9561 2009-06-20  Richard Guenther  <rguenther@suse.de>
9562
9563         PR tree-optimization/40495
9564         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
9565         (new_scalar_tmp_constraint_exp): New function.
9566         (process_constraint): Do not create temporary decls.
9567         (process_all_all_constraints): Likewise.
9568         (handle_const_call): Likewise.
9569         (create_function_info_for): Do not set decl.
9570
9571 2009-06-19  Ian Lance Taylor  <iant@google.com>
9572
9573         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
9574         (rs6000_attribute_table): Make static; move before use.
9575
9576 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
9577
9578         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
9579         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
9580         Propagate the TREE_READONLY flag without overwriting it.
9581         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
9582         Propagate the TREE_READONLY flag onto the result.
9583         (process_call_operands): Move around.  Use correct constant value.
9584
9585 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9586
9587         PR target/40482
9588         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
9589         * config/arm/arm.md: Likewise.
9590
9591 2009-06-19  Ian Lance Taylor  <iant@google.com>
9592
9593         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
9594         to GIMPLE_ERROR_MARK.
9595
9596         * c-typeck.c (build_conditional_expr): Add op1_original_type and
9597         op2_original_type parameters.  Warn about using different enum types.
9598         * c-parser.c (c_parser_conditional_expression): Pass original
9599         types to build_conditional_expr.
9600         * c-tree.h (build_conditional_expr): Update declaration.
9601
9602 2009-06-19  Ian Lance Taylor  <iant@google.com>
9603
9604         * config/i386/i386.c (ix86_function_specific_save): Test that
9605         fields match values, rather than testing the values are in a
9606         certain range.
9607
9608 2009-06-19  Richard Guenther  <rguenther@suse.de>
9609
9610         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
9611         ADDR_EXPR pointers.
9612         (ptr_derefs_may_alias_p): Likewise.
9613         (ptr_deref_may_alias_ref_p_1): New function.
9614         (ptr_deref_may_alias_ref_p): Likewise.
9615         (ref_maybe_used_by_call_p_1): Handle builtins that are not
9616         covered by looking at the ESCAPED solution.
9617         (call_may_clobber_ref_p_1): Likewise.
9618         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
9619         Handle NULL_TREE offset.  Do not produce redundant constraints.
9620         (process_all_all_constraints): New helper function.
9621         (do_structure_copy): Use it.
9622         (handle_lhs_call): Likewise.
9623         (find_func_aliases): Handle some builtins with pointer arguments
9624         and/or return values explicitly.
9625
9626 2009-06-19  Ian Lance Taylor  <iant@google.com>
9627
9628         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
9629
9630 2009-06-19  Ian Lance Taylor  <iant@google.com>
9631
9632         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
9633
9634 2009-06-19  Ian Lance Taylor  <iant@google.com>
9635
9636         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
9637         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
9638         version.
9639
9640         * c-decl.c (finish_decl): If -Wc++-compat, warn about
9641         uninitialized const.
9642
9643 2009-06-19  Ian Lance Taylor  <iant@google.com>
9644
9645         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
9646         all uses.
9647
9648         * c-decl.c (in_struct, struct_types): Remove.
9649         (struct c_binding): Add in_struct field.
9650         (c_binding_ptr): Define type, along with VEC.
9651         (struct c_struct_parse_info): Define.
9652         (struct_parse_info): New static variable.
9653         (bind): Initialize in_struct field.
9654         (start_struct): Remove enclosing_in_struct and
9655         enclosing_struct_types parameters.  Add
9656         enclosing_struct_parse_info parameter.  Change all callers.  Set
9657         struct_parse_info rather than in_struct and struct_types.
9658         (grokfield): If -Wc++-compat and there is a symbol binding for the
9659         field name, set the in_struct flag and push it on the
9660         struct_parse_info->fields vector.
9661         (warn_cxx_compat_finish_struct): New static function.
9662         (finish_struct): Remove enclosing_in_struct and
9663         enclosing_struct_types parameters.  Add
9664         enclosing_struct_parse_info parameter.  Change all callers.  Don't
9665         set C_TYPE_DEFINED_IN_STRUCT here.  Call
9666         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
9667         parameter.  Only push on struct_types if warn_cxx_compat.
9668         (finish_enum): Only push on struct_types if warn_cxx_compat.
9669         (declspecs_add_type): Add loc parameter.  Change all callers.
9670         Change all error calls to error_at.  Pass loc, not input_location,
9671         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
9672         defined in a struct.  If -Wc++-compat and parsing a struct, record
9673         that a typedef name was used.
9674         * c-parser.c (c_parser_declspecs): Get location to pass to
9675         declspecs_add_type.
9676         (c_parser_struct_or_union_specifier): Update calls to start_struct
9677         and finish_struct.
9678         * c-tree.h (struct c_struct_parse_info): Declare.
9679         (finish_struct, start_struct): Update declarations.
9680         (declspecs_add_type): Update declaration.
9681
9682 2009-06-19  Ian Lance Taylor  <iant@google.com>
9683
9684         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
9685         variable with an anonymous type.
9686
9687 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9688
9689         * see.c: Remove for real.
9690
9691 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9692
9693         * optabs.h (enum optab_index): Add new OTI_significand.
9694         (significand_optab): Define corresponding macro.
9695         * optabs.c (init_optabs): Initialize significand_optab.
9696         * genopinit.c (optabs): Implement significand_optab using
9697         significand?f2 patterns.
9698         * builtins.c (expand_builtin_mathfn): Handle
9699         BUILT_IN_SIGNIFICAND{,F,L}.
9700         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
9701         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
9702
9703         * config/i386/i386.md (significandxf2, significand<mode>2): New
9704         expanders to implement significandf, significand and significandl
9705         built-ins as inline x87 intrinsics.
9706
9707 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
9708
9709         * config/avr/avr.c (avr_override_options): Remove setting value of
9710         PARAM_INLINE_CALL_COST.
9711
9712 2009-06-18  Richard Henderson  <rth@redhat.com>
9713
9714         PR 40488
9715         * tree-pass.h (TDF_ASMNAME): New.
9716         * tree-dump.c (dump_options): Add asmname.
9717         * doc/invoke.texi: Document it.
9718
9719         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
9720         (dump_decl_name): ...here.
9721         (dump_function_name): New flags arg; mind TDF_ASMNAME.
9722         (dump_generic_node): Update dump_function_name calls.
9723         (print_call_name): New flags arg; update all dump calls.
9724         * diagnostic.h (print_call_name): Update.
9725         * gimple-pretty-print.c (dump_gimple_call): Update.
9726
9727 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
9728
9729         PR target/40470
9730         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
9731
9732 2009-06-18  Diego Novillo  <dnovillo@google.com>
9733
9734         * doc/plugins.texi: Document plugin_is_GPL_compatible.
9735         * plugin.c (str_license): Declare.
9736         (try_init_one_plugin): Assert that the symbol
9737         'plugin_is_GPL_compatible' exists.
9738
9739 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
9740
9741         * see.c: Remove.
9742         * Makefile.in (OBJS-common): Remove see.o.
9743         (see.o): Remove.
9744         * common.opt (fsee): Mark as preserved for backward compatibility.
9745         * opts.c (common_handle_option): Add OPT_fsee to the backward
9746         compatibility section.
9747         * passes.c (init_optimization_passes, pass_see): Remove pass.
9748         * timevar.def (TV_SEE): Remove.
9749         * tree-pass.h (pass_see): Remove declaration.
9750         * doc/invoke.texi (-fsee): Remove documentation.
9751
9752 2009-06-18  Martin Jambor  <mjambor@suse.cz>
9753
9754         * tree-sra.c: Include statistics.h
9755         (sra_stats): New variable.
9756         (sra_initialize): Clear sra_stats.
9757         (create_access_replacement): Increment sra_stats.replacements.
9758         (get_access_replacement): Do not return twice.
9759         (analyze_all_variable_accesses): Increment statistics counter by the
9760         number of scalarized aggregates.
9761         (generate_subtree_copies): Increment sra_stats.subtree_copies.
9762         (sra_modify_expr): Increment sra_stats.exprs.
9763         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
9764         (sra_modify_assign): Increment sra_stats.exprs,
9765         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
9766         (perform_intra_sra): Update statistics counters.
9767         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
9768
9769 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
9770
9771         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
9772         (arm_scalar_mode_supported_p): New function.
9773
9774 2009-06-18  Paul Brook  <paul@codesourcery.com>
9775             Sandra Loosemore  <sandra@codesourcery.com>
9776
9777         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
9778         (__extendhfsf2, __truncsfhf2): Define.
9779         * config/arm/fp16.c: New file.
9780         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
9781         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
9782
9783 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
9784
9785         * doc/extend.texi (Half-Precision): New section.
9786         * doc/invoke.texi (Option Summary): List -mfp16-format.
9787         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
9788         * config/arm/arm.opt (mfp16-format=): New.
9789         * config/arm/arm.c: Include intl.h.
9790         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
9791         (TARGET_INVALID_RETURN_TYPE): Redefine.
9792         (TARGET_PROMOTED_TYPE): Redefine.
9793         (TARGET_CONVERT_TO_TYPE): Redefine.
9794         (arm_fp16_format): Define.
9795         (all_fpus): Add entry for neon-fp16.
9796         (fp_model_for_fpu): Likewise.
9797         (struct fp16_format): Declare.
9798         (all_fp16_formats): Define.
9799         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
9800         functions.
9801         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
9802         and no ldrh.
9803         (arm_legitimate_index_p): Treat HFmode like HImode.
9804         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
9805         (coproc_secondary_reload_class): Special-case HFmode.
9806         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
9807         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
9808         (arm_init_fp16_builtins): New.
9809         (arm_init_builtins): Call it.
9810         (arm_invalid_parameter_type): New.
9811         (arm_invalid_return_type): New.
9812         (arm_promoted_type): New.
9813         (arm_convert_to_type).
9814         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
9815         format.
9816         (arm_emit_fp16_const): New function.
9817         (arm_mangle_type): Mangle __fp16 as "Dh".
9818         * config/arm/arm.h (TARGET_VFPD32): Make it know about
9819         FPUTYPE_NEON_FP16.
9820         (TARGET_NEON_FP16): New.
9821         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
9822         (enum fputype): Add FPUTYPE_NEON_FP16.
9823         (enum arm_fp16_format_type): Declare.
9824         (arm_fp16_format): Declare.
9825         (LARGEST_EXPONENT_IS_NORMAL): Define.
9826         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
9827         * config/arm/arm-modes.def (HFmode): Define.
9828         * config/arm/vfp.md: (*movhf_vfp): New.
9829         (extendhfsf2): New.
9830         (truncsfhf2): New.
9831         * config/arm/arm.md: (fpu): Add neon_fp16.
9832         (floatsihf2, floatdihf2): New.
9833         (fix_trunchfsi2, fix_trunchfdi2): New.
9834         (truncdfhf2): New.
9835         (extendhfdf2): New.
9836         (movhf): New.
9837         (*arm32_movhf): New.
9838         (*thumb1_movhf): New.
9839         (consttable_2): Add check for HFmode constants.
9840         (consttable_4): Handle HFmode constants.
9841
9842 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
9843
9844         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
9845
9846 2009-06-17  Olivier Hainque  <hainque@adacore.com>
9847
9848         * collect2.c (main): Use CONST_CAST2 to perform char ** to
9849         const char ** conversion in AIX specific section.
9850
9851 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
9852
9853         * config/i386/i386.c (ix86_special_builtin_type): Remove
9854         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
9855         (bdesc_special_args): Updated.
9856         (ix86_init_mmx_sse_builtins): Likewise.
9857         (ix86_expand_special_args_builtin): Likewise.
9858
9859 2009-06-17  Richard Henderson  <rth@redhat.com>
9860
9861         * tree-pretty-print.c (maybe_dump_asm_name): New.
9862         (dump_decl_name): Use it.
9863         (PRINT_FUNCTION_NAME): Merge into...
9864         (dump_function_name): ... here.  Use maybe_dump_asm_name.
9865
9866 2009-06-17  Cary Coutant  <ccoutant@google.com>
9867
9868         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
9869         Change caller.
9870         * debug.c (struct gcc_debug_hooks): Change placeholder for
9871         source_line hook.
9872         (debug_nothing_int_charstar_int): Replaced by...
9873         (debug_nothing_int_charstar_int_bool): ...this.
9874         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
9875         source_line prototype.
9876         (debug_nothing_int_charstar_int): Replaced by...
9877         (debug_nothing_int_charstar_int_bool): ...this.
9878         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
9879         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
9880         Output is_stmt operand when necessary.
9881         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
9882         (notice_source_line): Add is_stmt parameter.
9883         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
9884         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
9885         Change callers.
9886         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
9887         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
9888
9889 2009-06-17  Ian Lance Taylor  <iant@google.com>
9890
9891         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
9892         Change all uses.
9893         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
9894         call uses.
9895
9896 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
9897
9898         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
9899         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
9900         tree_strip_sign_nop_conversions and
9901         tree_ssa_strip_useless_type_conversions rather than stripping
9902         the operations here.
9903         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
9904         Declare them.
9905         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
9906         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
9907         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
9908         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
9909         functions.
9910
9911 2009-06-17  Michael Eager  <eager@eagercon.com>
9912
9913         * config/rs6000/constraints.md (register_constraint "d"): New.
9914         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
9915         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
9916         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
9917         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
9918         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
9919         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
9920         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
9921         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
9922         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
9923         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
9924         __fctiwz): Same.
9925         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
9926         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
9927         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
9928         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
9929         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
9930         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
9931         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
9932         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
9933         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
9934         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
9935         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
9936         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
9937         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
9938         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
9939
9940 2009-06-16  Ian Lance Taylor  <iant@google.com>
9941
9942         * profile.c (total_num_never_executed): Don't define.
9943         (compute_branch_probabilities): Don't count or print
9944         num_never_executed.
9945         (init_branch_prob): Don't set total_num_never_executed.
9946         (end_branch_prob): Don't print total_num_never_executed.
9947
9948 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
9949
9950         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
9951
9952 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
9953
9954         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
9955         (nabstd2_fpr): Same.
9956
9957 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
9958
9959         * expr.c (expand_assignment): Change complex type check.
9960
9961 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
9962
9963         * doc/plugins.texi (Building GCC plugins): Added new section.
9964
9965 2009-06-17  Ian Lance Taylor  <iant@google.com>
9966
9967         * c-pch.c (get_ident): Don't set size of templ array.
9968         (pch_init): Don't set size of partial_pch array.
9969
9970         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
9971         string constant to intialize an array whose size is the length of
9972         the string.
9973
9974 2009-06-17  Richard Guenther  <rguenther@suse.de>
9975
9976         PR tree-optimization/40389
9977         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
9978         to addressable types.
9979         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
9980
9981 2009-06-17  Richard Guenther  <rguenther@suse.de>
9982
9983         PR middle-end/40460
9984         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
9985         if there is no evolution of left in the loop bail out.
9986         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
9987         chrec_fold_multiply.
9988
9989 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
9990             Janis Johnson  <janis187@us.ibm.com>
9991
9992         PR target/39254
9993         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
9994         for the symbol ref of a constant that is the source of a move
9995         - nor for any other not-obvious-label-ref constants.
9996
9997 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
9998
9999         * plugin.c (position_pass): Skip newly inserted pass during list
10000         traversal to avoid repeated insertion.
10001
10002 2009-06-16  Ian Lance Taylor  <iant@google.com>
10003
10004         * vec.h (VEC_stack_alloc): Define different version if
10005         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10006         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10007         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10008         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10009
10010 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
10011
10012         * config.gcc (extra_headers): Add ia32intrin.h for x86.
10013
10014         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10015         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10016         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10017         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10018         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10019         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10020         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10021         (bdesc_special_args): Add __builtin_ia32_rdtsc and
10022         __builtin_ia32_rdtscp.
10023         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
10024         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
10025         and __builtin_ia32_rorhi.
10026         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
10027         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10028         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10029         (ix86_expand_args_builtin): Likewise.
10030         (ix86_expand_special_args_builtin): Likewise.
10031
10032         * config/i386/i386.md (UNSPECV_RDTSCP): New.
10033         (UNSPECV_RDTSC): Likewise.
10034         (UNSPECV_RDPMC): Likewise.
10035         (*bsr): Renamed to ...
10036         (bsr): This
10037         (*bsr_rex64): Renamed to ...
10038         (bsr_rex64): This.
10039         (rdpmc): New.
10040         (*rdpmc): Likewise.
10041         (*rdpmc_rex64): Likewise.
10042         (rdtsc): Likewise.
10043         (*rdtsc): Likewise.
10044         (*rdtsc_rex64): Likewise.
10045         (rdtscp): Likewise.
10046         (*rdtscp): Likewise.
10047         (*rdtscp_rex64): Likewise.
10048
10049         * config/i386/ia32intrin.h: New.
10050
10051         * config/i386/x86intrin.h: Include <ia32intrin.h>.
10052
10053 2009-06-16  Ian Lance Taylor  <iant@google.com>
10054
10055         * ira-build.c (copy_info_to_removed_store_destinations):
10056         Initialize parent_a.
10057
10058 2009-06-16  Ian Lance Taylor  <iant@google.com>
10059
10060         * c-decl.c (grokdeclarator): Change size_varies to bool.
10061
10062 2009-06-16  Ian Lance Taylor  <iant@google.com>
10063
10064         * sel-sched.c: Make forward declarations of move_op_hooks and
10065         fur_hooks explicitly extern.
10066
10067 2009-06-16  Ian Lance Taylor  <iant@google.com>
10068
10069         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
10070         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
10071
10072 2009-06-16  Ian Lance Taylor  <iant@google.com>
10073
10074         * resource.c (mark_referenced_resources): Change
10075         include_delayed_effects parameter to bool.  Change all callers.
10076         (mark_end_of_function_resources): Likewise.
10077         * reorg.c (insn_references_resource_p): Likewise.
10078         (insn_sets_resource_p): Likewise.
10079         * resource.h (mark_referenced_resources): Update declaration.
10080         (mark_end_of_function_resources): Update declaration.
10081
10082 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10083
10084         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10085
10086 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10087
10088         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10089         GCC can bootstrap on AIX with GNU Binutils 2.20.
10090
10091 2009-06-16  Ian Lance Taylor  <iant@google.com>
10092
10093         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10094
10095 2009-06-16  Ian Lance Taylor  <iant@google.com>
10096
10097         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10098         inline, not extern inline.
10099         (exact_log2): Likewise.
10100         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10101         test CLZ_HWI.
10102         (exact_log2): Likewise, but don't test CTZ_HWI.
10103
10104 2009-06-16  Ian Lance Taylor  <iant@google.com>
10105
10106         * bitmap.c (bitmap_clear): Don't declare as inline.
10107         * gimple.c (gimplify_assign): Likewise.
10108         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10109         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10110         (sched_scan_info): Remove duplicate definition.
10111
10112 2009-06-16  Ian Lance Taylor  <iant@google.com>
10113
10114         * c-common.c (skip_evaluation): Don't define.
10115         (c_inhibit_evaluation_warnings): Define global variable.
10116         (overflow_warning): Check c_inhibit_evaluation_warnings rather
10117         than skip_evaluation.
10118         (convert_and_check, warn_for_div_by_zero): Likewise.
10119         * c-common.h (skip_evaluation): Don't declare.
10120         (c_inhibit_evaluation_warnings): Declare.
10121         * c-parser.c (c_parser_typeof_specifier): Set
10122         c_inhibit_evaluation_warnings rather than skip_evaluation.
10123         (c_parser_conditional_expression): Likewise.
10124         (c_parser_binary_expression): Likewise.
10125         (c_parser_sizeof_expression): Likewise.
10126         (c_parser_alignof_expression): Likewise.
10127         * c-typeck.c (build_indirect_ref): Check
10128         c_inhibit_evaluation_warnings rather than skip_evaluation.
10129         (build_conditional_expr, build_binary_op): Likewise.
10130
10131 2009-06-16  Richard Guenther  <rguenther@suse.de>
10132
10133         * tree-ssa-alias.c (is_escape_site): Remove.
10134         * tree-ssa-alias.h (enum escape_type): Remove.
10135         (is_escape_site): Likewise.
10136         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10137         via casts and asms without deferring to is_escape_site.
10138
10139 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
10140
10141         PR middle-end/40446
10142         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10143         use gen_lowpart if op0 has complex mode.
10144
10145 2009-06-16  Richard Guenther  <rguenther@suse.de>
10146
10147         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10148         variables add them to ESCAPED.
10149         (find_func_aliases): Do not make all indirectly stored values escaped.
10150
10151 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
10152
10153         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10154         make_decl_one_only.
10155
10156 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10157
10158         PR tree-optimization/40432
10159         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10160         check whether we need to force gimple register operand.
10161
10162 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10163
10164         PR tree-optimization/40413
10165         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10166         build_ref_for_offset.
10167         (propagate_subacesses_accross_link): Fix a typo in a comment.
10168
10169 2009-06-16  Ira Rosen  <irar@il.ibm.com>
10170
10171         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10172         with additional parameter.
10173         * tree-vectorizer.h (enum vect_def_type): Add new value
10174         vect_nested_cycle.
10175         (enum vect_relevant): Add comments.
10176         (vect_is_simple_reduction): Add new argument.
10177         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10178         Detect nested cycles.
10179         (vect_is_simple_reduction): Update documentation, add an argument to
10180         distinguish inner-loop reduction from nested cycle, detect nested
10181         cycles, fix printings and indentation, don't swap operands in case
10182         of nested cycle.
10183         (get_initial_def_for_reduction): Handle subtraction.
10184         (vect_create_epilog_for_reduction): Add new argument to specify
10185         reduction variable.
10186         (vect_finalize_reduction): Handle subtraction, fix comments.
10187         (vectorizable_reduction): Handle nested cycles. In case of nested
10188         cycle keep track of the reduction variable position. Call
10189         vect_is_simple_reduction with additional parameter. Use original
10190         statement code in reduction epilogue for nested cycle. Call
10191         vect_create_epilog_for_reduction with additional parameter.
10192         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10193         inner-loop vectorization.
10194         (vect_recog_widen_sum_pattern): Likewise.
10195         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10196         and reductions.
10197         (vect_mark_stmts_to_be_vectorized): Likewise.
10198         (vect_get_vec_def_for_operand): Handle nested cycles.
10199
10200 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10201
10202         * doc/invoke.texi (Debugging Options): Fix option index entries
10203         for -fdump-statistics, -frandom-seed add entries for
10204         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10205         (FRV Options): Fix entries for -mTLS, -mtls.
10206         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10207         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10208         (M68hc1x Options): Fix @itemx for -mnominmax.
10209         (MCore Options): Fix entry for -mno-lsim.
10210         (MMIX Options): Fix entry for -mabi=mmixware.
10211         (PDP-11 Options): Fix entry for -mbcopy-builtin.
10212
10213 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
10214
10215         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10216         Mention the plugin mode of gengtype.
10217         * doc/gty.texi (Source Files Containing Type Information): Likewise.
10218         * gengtype.c: Updated copyright.
10219         (plugin_files, nb_plugin_files) Added new static variables.
10220         (measure_input_list) Care about plugin_files.
10221         (write_rtx_next): Added early return in plugin mode.
10222         (create_file): Updated copyright year in generated file. Added
10223         asserts.
10224         (oprintf): Added early return if NULL outf.
10225         (get_output_file_with_visibility): Care of plugin_files.
10226         (get_output_file_name): May return null.
10227         (write_local): Added early return.
10228         (put_mangled_filename): Ditto.
10229         (finish_root_table): Added check for base_files.
10230         (write_roots): Care about null when plugins.
10231         (main): Added plugin mode.
10232
10233 2009-06-15  Ian Lance Taylor  <iant@google.com>
10234
10235         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10236         * gcov.c (read_count_file): Add braces around variables declared
10237         before label.
10238
10239         * c.opt (Wjump-misses-init): New warning.
10240         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10241         -Wall and -Wc++-compat if not already set.
10242         (c_common_post_options): Clear warn_jump_misses_init if it was not
10243         set.
10244         * c-decl.c (struct c_binding): Change type field to a union with
10245         new label field.  Make it the first field in the struct.  Update
10246         references to type to use u.type instead.
10247         (struct c_spot_bindings): Define.
10248         (struct c_goto_bindings): Define.
10249         (c_goto_bindings_p): Define, along with VECs.
10250         (struct c_label_vars): Define.
10251         (struct c_scope): Add has_label_bindings field.
10252         (bind_label, set_spot_bindings): New static functions.
10253         (decl_jump_unsafe, update_spot_bindings): New static functions.
10254         (update_label_decls): New static function.
10255         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
10256         Update binding u.label field to shadowed field.
10257         (c_binding_start_stmt_expr): New function.
10258         (c_binding_end_stmt_expr): New function.
10259         (pushdecl): Don't call c_begin_vm_scope.
10260         (make_label): Add defining and p_label_vars parameters.  Change
10261         all callers.
10262         (lookup_label): Correct test for whether a label has not yet been
10263         defined.  Call bind_label rather than bind.
10264         (warn_about_goto): New static function.
10265         (lookup_label_for_goto): New function.
10266         (declare_label): Call bind_label rather than bind.
10267         (check_earlier_gotos): New static function.
10268         (define_label): Don't give errors about jumping into statement
10269         expressions or scopes of variably modified types.  Call
10270         set_spot_bindings and check_earlier_gotos.  Call bind_label
10271         instead of bind.  Don't set label_context_stack_se or
10272         label_context_stack_vm.
10273         (c_get_switch_bindings): New function.
10274         (c_release_switch_bindings): New function.
10275         (c_check_switch_jump_warnings): New function.
10276         (start_function): Don't set label_context_stack_se or
10277         label_context_stack_vm.
10278         (finish_function): Likewise.
10279         * c-typeck.c (label_context_stack_se): Don't define.
10280         (label_context_stack_vm): Don't define.
10281         (c_finish_goto_label): Call lookup_label_for_goto rather than
10282         lookup_label.  Don't give errors about jumping into a statement
10283         expression or the scope of a variably modified type.  Don't set
10284         label_context_stack_se or label_context_stack_vm.
10285         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
10286         fields.  Add bindings field.
10287         (c_start_case): Don't set deleted fields.  Set bindings field.
10288         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
10289         or blocked_vm.  Call c_check_switch_jump_warnings.
10290         (c_finish_case): Don't test blocked_stmt_expr field.  Call
10291         c_release_switch_bindings.
10292         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
10293         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10294         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
10295         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
10296         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10297         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
10298         (c_begin_vm_scope, c_end_vm_scope): Don't define.
10299         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
10300         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
10301         (C_DECL_UNJUMPABLE_VM): Don't define.
10302         (C_DECL_UNDEFINABLE_VM): Don't define.
10303         (struct c_label_list): Don't define.
10304         (struct c_label_context_se): Don't define.
10305         (struct c_label_context_vm): Don't define.
10306         (struct c_spot_bindings): Declare.
10307         (c_bindings_start_stmt_expr): Declare.
10308         (c_bindings_end_stmt_expr): Declare.
10309         (lookup_label_for_goto): Declare.
10310         (c_get_switch_bindings, c_release_switch_bindings): Declare.
10311         (c_check_switch_jump_warnings): Declare.
10312         (label_context_stack_se, label_context_stack_vm): Don't declare.
10313         (c_finish_goto_label): Update declaration.
10314         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
10315         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
10316         (Warning Options): Document -Wjump-misses-init.
10317
10318 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
10319
10320         * tree-object-size.c (addr_object_size): Fix a pasto in the last
10321         change.
10322
10323 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10324
10325         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
10326
10327 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10328
10329         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
10330
10331 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10332
10333         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
10334
10335 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10336
10337         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
10338         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
10339         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
10340         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
10341         * dwarf2asm.c (dw2_force_const_mem): Update call to
10342         make_decl_one_only.
10343         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
10344         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
10345         * langhooks.c (lhd_comdat_group): Remove.
10346         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
10347         * tree.h (DECL_COMDAT_GROUP): New.
10348         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
10349         (tree_decl_with_vis): Add comdat_group. Remove one_only.
10350         (make_decl_one_only): Change signature.
10351         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
10352         make_decl_one_only.
10353         (make_decl_one_only): Change signature.
10354         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
10355
10356 2009-06-15  Richard Guenther  <rguenther@suse.de>
10357
10358         PR middle-end/40439
10359         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
10360
10361 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10362
10363         * tree-ssa-math-opts.c: Remove extra divide.
10364
10365 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10366
10367         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
10368
10369 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10370
10371         * passes.c: Add bswap pass.
10372         * tree-pass.h: Add pass_optimize_bswap declaration.
10373         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
10374         Include rtl.h, expr.h and optabs.h for optab_handler check.
10375         (struct symbolic_number, pass_optimize_bswap): New definition.
10376         (do_shift_rotate, verify_symbolic_number_p): New functions.
10377         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
10378         (gate_optimize_bswap): New function.
10379         * tree.c (widest_int_cst_value): New function.
10380         * tree.h (widest_int_cst_value): Prototype added.
10381
10382 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
10383
10384         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
10385         REG_EQUAL/REG_EQUIV notes.
10386
10387 2009-06-14  Richard Guenther  <rguenther@suse.de>
10388
10389         PR middle-end/40389
10390         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10391         has its address taken if NRV was applied and it is addressable.
10392         * tree-ssa-structalias.c (get_constraint_for_address_of): New
10393         function split out from ...
10394         (get_constraint_for_1): ... here.
10395         (handle_rhs_call): Use it to mark the return slot escaped if
10396         it is addressable and NRV was applied.
10397
10398 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10399
10400         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
10401         Change first argument type to location_t.
10402         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
10403         Do not set input_location.
10404         Use loc instead of input_location throughout.
10405
10406 2009-06-13  Richard Guenther  <rguenther@suse.de>
10407
10408         PR tree-optimization/40421
10409         * tree-predcom.c (should_unroll_loop_p): Remove.
10410         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
10411
10412 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
10413
10414         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10415         Add location argument.
10416
10417 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10418
10419         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
10420         build_decl.
10421         * config/s390/s390.c (s390_build_builtin_va_list): Same.
10422         (s390_gimplify_va_arg): Pass location to create_artificial_label.
10423         * config/spu/spu-protos.h: Add location to
10424         spu_resolve_overloaded_builtin.
10425         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
10426         spu_build_builtin_va_list.
10427         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
10428         argument.  Pass location to build_function_call_vec.
10429         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
10430         build_decl.
10431         (emit_fpu_switch): Same.
10432         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
10433         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
10434         to build_decl and create_artificial_label.
10435         (xtensa_gimplify_va_arg_expr): Same.
10436         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
10437         (xstormy16_gimplify_va_arg_expr): Same.
10438         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
10439         * config/arm/arm.c (arm_build_builtin_va_list): Same.
10440         * config/mips/mips.c (mips_build_builtin_va_list): Same.
10441         (mips16_build_function_stub): Same.
10442         (mips16_build_call_stub): Same.
10443
10444 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
10445
10446         PR target/40327
10447         * arm/constraints.md (Pa, Pb): New constraints.
10448         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
10449         split pattern to deal with them.
10450
10451 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
10452
10453         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
10454         fix index entry for -Xpreprocessor.
10455
10456 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10457
10458         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10459         Add location argument to build_decl call.
10460         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
10461         (rs6000_init_builtins): Same.
10462         (spe_init_builtins): Same.
10463         (rs6000_gimplify_va_arg): Add location argument to
10464         create_artificial_label call.
10465
10466 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
10467
10468         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
10469         * combine-stack-adj.c (pass_stack_adjustments): Use it.
10470         * Makefile.in: Fix GGC dependency for gcse.o.
10471
10472 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10473
10474         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
10475         * gimple-pretty-print.c (dump_gimple_stmt): Same.
10476         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
10477         created.
10478         * c-parser.c (c_parser_binary_expression): Use current column while
10479         building binary operations.
10480         * common.opt (fshow-column): Enable by default.
10481         * tree-vrp.c (check_array_ref): Use warning_at.
10482         (check_array_bounds): Use location from call back if expr has no
10483         location.
10484         * tree.h: Add location argument to maybe_fold_*.
10485         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
10486         (maybe_fold_offset_to_array_ref): Add location argument and use it.
10487         (maybe_fold_offset_to_component_ref): Same.
10488         (maybe_fold_offset_to_reference): Same.
10489         (maybe_fold_offset_to_address): Same.
10490         (maybe_fold_stmt_indirect): Same.
10491         (maybe_fold_stmt_addition): Same.
10492         (fold_stmt_r): Pass location to maybe_fold_*.
10493         (fold_gimple_assign): Same.
10494         * c-tree.h: Add location argument to finish_decl,
10495         default_function_array_conversion, store_init_value.
10496         * c-decl.c (define_label): Use error_at.
10497         (c_make_fname_decl): Pass location to finish_decl.
10498         (finish_decl): New location argument.
10499         (build_compound_literal): Pass location to store_init_value.
10500         (grokdeclarator): Pass location to finish_decl.
10501         (grokfield): Same.
10502         * c-typeck.c (array_to_pointer_conversion): New location argument.
10503         (function_to_pointer_conversion): Same.
10504         (default_function_array_conversion): Same.
10505         (parser_build_unary_op): Pass location to overflow_warning.
10506         (parser_build_binary_op): Same.  Use warning_at.
10507         (build_unary_op): Pass location to array_to_pointer_conversion.
10508         (build_c_cast): Pass location to digest_init.
10509         (build_modify_expr): New location argument.
10510         (convert_for_assignment): Same.
10511         (store_init_value): Same.
10512         (digest_init): Same.
10513         (output_init_element): Pass location to digest_init and
10514         array_to_pointer_conversion.
10515         (c_finish_return): Pass location to convert_for_assignment.
10516         * gimplify.c (gimplify_conversion): Pass location to
10517         maybe_fold_offset_to_address.
10518         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
10519         to maybe_fold_stmt_addition.
10520         * c-omp.c (c_finish_omp_atomic): Pass new location to
10521         build_modify_expr.
10522         (c_finish_omp_for): Same.
10523         * c-common.c (overflow_warning): New argument.
10524         * c-common.h: New argument to build_modify_expr, overflow_warning.
10525         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
10526         finish_decl.
10527         (c_parser_initializer): Pass location to
10528         default_function_array_conversion.
10529         (c_parser_initelt): Same.
10530         (c_parser_initval): Same.
10531         (c_parser_asm_operands): Same.
10532         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
10533         (c_parser_conditional_expression): Same.
10534         (c_parser_binary_expression): Add location info to stack.  Use it.
10535         (c_parser_unary_expression): Pass location to
10536         default_function_array_conversion, parser_build_unary_op,
10537         build_indirect_ref, c_parser_postfix_expression_after_primary.
10538         (c_parser_postfix_expression_after_primary): New location argument.
10539         Use it.
10540         (c_parser_expression_conv): Pass location to
10541         default_function_array_conversion.
10542         (c_parser_expr_list): Same.
10543         (c_parser_omp_atomic): Same.
10544         (c_parser_omp_for_loop): Same.
10545         * c-tree.h: (struct c_declarator): Add comment to id_loc.
10546         (build_array_declarator): New argument.
10547         * c-decl.c (build_array_declarator): Add location argument.
10548         (grokdeclarator): Set id_loc for cdk_array.
10549         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
10550         build_array_declarator.
10551         * tree.c (build_omp_clause): Add location argument.
10552         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
10553         (OMP_CLAUSE_LOCATION): New macro.
10554         (struct tree_omp_clause): Add location field.
10555         (build_omp_clause): Add argument.
10556         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
10557         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
10558         build_omp_clause.
10559         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
10560         (cp_parser_omp_clause_collapse): Same.
10561         (cp_parser_omp_clause_default): Same.
10562         (cp_parser_omp_clause_if): Same.
10563         (cp_parser_omp_clause_nowait): Same.
10564         (cp_parser_omp_clause_num_threads): Same.
10565         (cp_parser_omp_clause_ordered): Same.
10566         (cp_parser_omp_clause_schedule): Same.
10567         (cp_parser_omp_clause_untied): Same.
10568         (cp_parser_omp_for_loop): Same.
10569         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10570         * c-tree.h (c_start_case): Add location argument.
10571         (c_process_expr_stmt): Same.
10572         (c_finish_goto_*): Same.
10573         * tree-parloops.c (initialize_reductions): Pass location to
10574         build_omp_clause.
10575         (create_parallel_loop): Same.
10576         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
10577         (gfc_trans_omp_reduction_list): Same.
10578         (gfc_trans_omp_clauses): Same.
10579         (gfc_trans_omp_do): Same.
10580         * c-typeck.c (c_finish_goto_label): Same.
10581         (c_finish_goto_ptr): New location argument.
10582         (c_start_case): Same.
10583         (emit_side_effect_warnings): Same.
10584         (c_process_expr_stmt): Same.
10585         (c_finish_stmt_expr): Same.
10586         (c_finish_omp_clauses): Use error_at instead of error.
10587         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
10588         build_omp_clause.
10589         * c-omp.c (c_split_parallel_clauses): New location argument.
10590         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
10591         to build_omp_clause.
10592         (convert_local_reference_stmt): Same.
10593         (convert_gimple_call): Same.
10594         * c-common.h (c_split_parallel_clauses): New argument.
10595         * c-parser.c (c_parser_statement_after_labels): Pass location to
10596         c_finish_goto_label.
10597         (c_parser_switch_statement): Pass location to c_start_case.
10598         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
10599         and c_process_expr_stmt.
10600         (c_parser_omp_variable_list): Add location argument.
10601         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
10602         (c_parser_omp_clause_default): Same.
10603         (c_parser_omp_clause_if): Same.
10604         (c_parser_omp_clause_num_threads): Same.
10605         (-c_parser_omp_clause_ordered): Same.
10606         (c_parser_omp_clause_reduction): Pass location to
10607         c_parser_omp_variable_list.
10608         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
10609         (c_parser_omp_clause_untied): Same.
10610         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
10611         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10612
10613         * c-tree.h (check_for_loop_decls, undeclared_variable,
10614         build_component_ref, build_array_ref, build_external_ref,
10615         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
10616         build_conditional_expr, build_compound_expr, c_cast_expr,
10617         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
10618         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
10619         argument.
10620         * c-semantics.c (build_stmt): Same.
10621         (build_case_label): Same.
10622         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
10623         (undeclared_variable): New argument.
10624         (make_label): Same.
10625         (lookup_label): Pass location on down.
10626         (define_label): Same.
10627         (finish_decl): Same.
10628         (build_compound_literal): Same.
10629         (finish_struct): Same.
10630         (finish_function): Do not set location here.
10631         (check_for_loop_decls): New argument.
10632         * tree.c (save_expr): Set location.
10633         (build_empty_stmt): New argument.
10634         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
10635         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
10636         * builtins.c (gimplify_va_arg_expr): Use locations.
10637         (expand_builtin_sync_operation): Same.
10638         * c-typeck.c (build_component_ref): New argument.
10639         (build_array_ref): Same.
10640         (build_external_ref): Same.
10641         (c_expr_sizeof_expr): Same.
10642         (c_expr_sizeof_type): Same.
10643         (parser_build_unary_op): Same.
10644         (build_conditional_expr): Same.
10645         (build_compound_expr): Pass location on down.
10646         (build_compound_expr): New argument.
10647         (build_c_cast): Same.
10648         (c_cast_expr): Same.
10649         (build_asm_expr): Same.
10650         (c_finish_return): Same.
10651         (c_process_expr_stmt): Pass location on down.
10652         (c_finish_stmt_expr): New argument.
10653         (push_clenaup): Same.
10654         (c_finish_omp_parallel): Same.
10655         (c_finish_omp_task): Same.
10656         * gimplify.c (gimplify_call_expr): Pass location on down.
10657         * c-omp.c (c_finish_omp_master): New argument.
10658         (c_finish_omp_critical): Same.
10659         (c_finish_omp_ordered): Same.
10660         (c_finish_omp_barrier): Same.
10661         (-c_finish_omp_taskwait): Same.
10662         (c_finish_omp_atomic): Same.
10663         (c_finish_omp_flush): Same.
10664         * tree-inline.c (copy_tree_body_r): Pass location on down.
10665         (inline_forbidden_p): Remove use of input_location.
10666         * c-gimplify.c (c_build_bind_expr): New argument.
10667         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
10668         (c_sizeof_or_alignof_type): New argument.
10669         (c_alignof_expr): Same.
10670         (build_va_arg): Same.
10671         (c_add_case_label): Same.
10672         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
10673         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
10674         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
10675         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
10676         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
10677         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
10678         New argument.
10679         * stub-objc.c (objc_build_selector_expr): Same.
10680         (objc_build_throw_stmt): Same.
10681         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
10682         (c_parser_initelt): Same.
10683         (c_parser_compound_statement): Same.
10684         (c_parser_compound_statement_nostart): Same.
10685         (c_parser_label): Same.
10686         (c_parser_statement_after_labels): Same.
10687         (c_parser_if_body): Same.
10688         (c_parser_else_body): Same.
10689         (c_parser_if_statement): Same.
10690         (c_parser_switch_statement): Same.
10691         (c_parser_while_statement): Same.
10692         (c_parser_do_statement): Same.
10693         (c_parser_for_statement): Same.
10694         (c_parser_asm_statement): Same.
10695         (c_parser_conditional_expression): Same.
10696         (c_parser_binary_expression): Same.
10697         (c_parser_cast_expression): Same.
10698         (c_parser_unary_expression): Same.
10699         (c_parser_sizeof_expression): Same.
10700         (c_parser_alignof_expression): Same.
10701         (c_parser_postfix_expression): Same.
10702         (c_parser_expression): Same.
10703         (c_parser_objc_receiver): Same.
10704         (c_parser_omp_variable_list): Same.
10705         (c_parser_omp_structured_block): Same.
10706         (c_parser_omp_atomic): New argument.
10707         (c_parser_omp_barrier): Same.
10708         (c_parser_omp_critical): Same.
10709         (c_parser_omp_flush): Pass location on down.
10710         (c_parser_omp_for_loop): New argument.
10711         (c_parser_omp_for): Same.
10712         (c_parser_omp_master): Same.
10713         (c_parser_omp_ordered): Same.
10714         (c_parser_omp_sections_scope): Same.
10715         (c_parser_omp_sections): Same.
10716         (c_parser_omp_parallel): Same.
10717         (c_parser_omp_single): Same.
10718         (c_parser_omp_task): Same.
10719         (c_parser_omp_taskwait): Pass location on down.
10720         (c_parser_omp_construct): Same.
10721         (c_parser_omp_threadprivate): Same.
10722         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
10723         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
10724         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
10725         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
10726         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
10727         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
10728         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
10729         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
10730         config/i386/i386.c, stmt.c:
10731         Add location argument to the following function definitions and/or
10732         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
10733         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
10734         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
10735         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
10736         do_case, c_finish_bc_stmt, build_compound_literal,
10737         build_function_call.
10738         * c-decl.c (build_compound_literal): Add location argument.
10739         Make all diagnostic calls use location.
10740         (start_struct): Same.
10741         (finish_struct): Same.
10742         (start_enum): Same.
10743         (build_enumerator): Same.
10744         (start_function): Same.
10745         (grokdeclarator): Make all diagnostic calls use location.
10746         (store_parm_decls_oldstyle): Same.
10747         * c-typeck.c (build_function_call): Add location argument.
10748         Make all diagnostic calls use location.
10749         (do_case): Same.
10750         (c_finish_bc_stmt): Same.
10751         * tree-nested.c (get_trampoline_type): Add argument.
10752         Pass location to build_decl.
10753         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
10754         * rtl.h (RTL_LOCATION): New.
10755         * c-common.c (c_add_case_label): Add location argument.
10756         Make all diagnostic calls use location.
10757         * c-common.h: Add location argument to make_fname_decl, do_case,
10758         c_add_case_label, build_function_call, resolve_overloaded_builtin.
10759         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
10760         Set it appropriately for every case.  Pass enum_loc to start_enum
10761         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
10762         parser_xref_tag.
10763         (c_parser_struct_or_union_specifier): Save location.  Use it for
10764         start_struct, finish_struct, and parser_xref_tag.
10765
10766 2009-06-12  Ian Lance Taylor  <iant@google.com>
10767
10768         * fold-const.c (fold_unary): Rename local variable and to and_expr.
10769
10770         * c-opts.c (c_common_handle_option): For -Wc++-compat set
10771         cpp_opts->warn_cxx_operator_names.
10772
10773 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10774
10775         PR tree-opt/38865
10776         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
10777         is returns NULL and OP is a VCE, look through the VCE.
10778
10779 2009-06-12  Ian Lance Taylor  <iant@google.com>
10780
10781         PR bootstrap/40430
10782         * collect2.c (main): Use CONST_CAST2 in code inside #if
10783         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
10784
10785 2009-06-12  Joey Ye  <joey.ye@intel.com>
10786
10787         PR middle-end/39146
10788         * cfgexpand.c (get_decl_align_unit): Update
10789         max_used_stack_slot_alignment with align instead of
10790         stack_alignment_needed.
10791
10792         * function.c (assign_stack_local_1): Update
10793         max_used_stack_slot_alignment with alignment_in_bits instead
10794         of stack_alignment_needed.
10795         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
10796         here.
10797
10798 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
10799
10800         * dwarf2out.c (last_var_location_insn): New variable.
10801         (dwarf2out_end_epilogue): Clear last_var_location_insn.
10802         (dwarf2out_var_location): Don't record anything after last real
10803         insn.  Only change labels if there were any real instructions
10804         in between last note and this one, or if changed sections.
10805
10806 2009-06-11  Richard Henderson  <rth@redhat.com>
10807
10808         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
10809         note when storing the frame pointer in a register.
10810         (FRP): Don't redefine to nothing for epilogue.
10811         (alpha_expand_epilogue): Mark register and sp restores.
10812         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
10813
10814         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
10815         when gen_lowpart is needed.
10816
10817 2009-06-11  Richard Henderson  <rth@redhat.com>
10818
10819         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
10820
10821         * dwarf2out.c (need_data_align_sf_opcode): New.
10822         (div_data_align): Move earlier.
10823         (def_cfa_1, reg_save): Use it.
10824
10825 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
10826
10827         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
10828         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
10829         (ix86_handle_option): Handle OPT_mcrc32.
10830         (ix86_target_string): Add -mcrc32.
10831         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
10832
10833         * config/i386/i386.h (TARGET_CRC32): New.
10834
10835         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
10836         (sse4_2_crc32di): Likewise.
10837
10838         * config/i386/i386.opt (mcrc32): New.
10839
10840         * doc/invoke.texi: Document -mcrc32.
10841
10842 2009-06-11  Richard Henderson  <rth@redhat.com>
10843
10844         * common.opt (gdwarf-): Accept a version number.
10845         * doc/invoke.texi (gdwarf-): Update docs.
10846         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
10847         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
10848         version level, and record it.
10849
10850         * dwarf2.h (DW_CIE_VERSION): Remove.
10851         * dwarf2out.c (DWARF_VERSION): Remove.
10852         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
10853         (output_call_frame_info): Use CIE version 3 for dwarf3,
10854         or if the return register column is out of range for version 1.
10855         (dwarf_stack_op_name): Add all dwarf3 values.
10856         (DEBUG_PUBTYPES_SECTION): New.
10857         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
10858         encoding change for dwarf3.
10859         (output_die) [dw_val_class_die_ref]: Likewise.
10860         (output_compilation_unit_header): Emit correct version for dwarf3.
10861         (output_line_info): Likewise.
10862         (output_pubnames): Update for DWARF_VERSION removal.
10863         (output_aranges): Likewise.
10864         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
10865         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
10866         (dwarf2out_finish): Likewise.
10867
10868 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
10869
10870         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
10871         in r148403.
10872
10873 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
10874
10875         PR c/39252
10876         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
10877         * builtins.c (expand_builtin_unreachable): New function.
10878         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
10879         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
10880         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
10881         successors.
10882         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
10883         searching for missing barriers.
10884
10885 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10886
10887         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
10888         when -fprofile-generate* was passed.
10889         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
10890
10891 2009-06-11  Anthony Green  <green@moxielogic.com>
10892
10893         * config/moxie/moxie.md: Define length attribute for all instructions.
10894         (rCC): Define.
10895         (*b<cond:code>): Support limited branch ranges for new PC-relative
10896         branch instructions.
10897         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
10898
10899 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
10900
10901         * config/i386/i386.c (min_insn_size): Use get_attr_length
10902         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
10903         For __asm return 0.
10904
10905         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
10906         instead of emit_insn_before.
10907
10908 2009-06-10  Ian Lance Taylor  <iant@google.com>
10909
10910         PR bootstrap/40408
10911         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
10912         GIMPLE_SWITCH.
10913
10914 2009-06-10  Revital Eres  <eres@il.ibm.com>
10915
10916         * passes.c (init_optimization_passes): Reschedule
10917         predictive-commoning pass before complete unroll pass.
10918
10919 2009-06-10  Martin Jambor  <mjambor@suse.cz>
10920
10921         * cgraph.c (cgraph_node_can_be_local_p): New function.
10922         (cgraph_make_node_local): New function.
10923         * cgraph.h (cgraph_node_can_be_local_p): Declare.
10924         (cgraph_make_node_local): Declare.
10925
10926 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
10927
10928         * tree.h (tree_base): Add packed_flag and user_align fields.
10929         Decrease size of spare field.
10930         (TYPE_USER_ALIGN): Use user_align from tree_base.
10931         (DECL_USER_ALIGN): Likewise.
10932         (TYPE_PACKED): Use packed_flag from tree_base.
10933         (DECL_PACKED): Likewise.
10934         (tree_type): Delete packed_flag and user_align fields.  Widen
10935         precision field.  Widen mode field and shuffle fields to align
10936         mode on an 8-bit boundary.
10937         (tree_decl_common): Delete decl_flag_1 and user_align fields.
10938         Renumber decl_flag_* fields.  Fix comments.  Widen
10939         decl_common_unused field.
10940         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
10941         (DECL_EXTERNAL): Likewise.
10942         (DECL_BIT_FIELD): Likewise.
10943         (DECL_NONADDRESSABLE_P): Likewise.
10944         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
10945         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
10946
10947 2009-06-10  Ian Lance Taylor  <iant@google.com>
10948
10949         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
10950         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
10951         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
10952         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
10953         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
10954         DEF_VEC_ALLOC_FUNC_P.
10955         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
10956         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
10957         DEF_VEC_ALLOC_FUNC_O.
10958         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
10959         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
10960         DEF_VEC_ALLOC_FUNC_I.
10961         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
10962         (vec_stack_p_reserve_exact_1): Declare.
10963         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
10964         (vec_stack_free): Declare.
10965         (VEC_stack_alloc): Define.
10966         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
10967         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
10968         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
10969         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
10970         for void_p.
10971         (stack_vecs): New static variable.
10972         (vec_stack_p_reserve_exact_1): New function.
10973         (vec_stack_o_reserve_1): New static function.
10974         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
10975         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
10976         (vec_stack_free): New function.
10977         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
10978         (VEC_df_ref_stack_alloc): Define.
10979         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
10980         DEF_VEC_ALLOC_P_STACK.
10981         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
10982         (struct df_collection_rec): Change _vec fields to VEC.  Remove
10983         _use fields.
10984         (df_free_collection_rec): Adjust for new fields.
10985         (df_insn_rescan): Use new df_collection_rec fields.
10986         (df_notes_rescan, df_canonize_collection_rec): Likewise.
10987         (df_ref_create_structure, df_ref_record): Likewise.
10988         (df_get_conditional_uses, df_get_call_refs): Likewise.
10989         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
10990         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
10991         (df_record_exit_block_uses, df_bb_verify): Likewise.
10992         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
10993         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
10994         Remove count parameter.  Change return type to void.  Change all
10995         callers.
10996         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
10997         Remove count parameter.  Change return type to void.  Change all
10998         callers.
10999         (df_install_refs): Change old_vec parameter to VEC.  Remove count
11000         parameter.  Change all callers.
11001         (df_install_mws): Change old_vec parameter to VEC.  Remove count
11002         parameter.  Change all callers.
11003         (df_refs_verify): Change new_rec parameter to VEC.  Change call
11004         callers.
11005         (df_mws_verify): Likewise.
11006
11007 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
11008
11009         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11010
11011 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
11012
11013         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11014
11015 2009-06-10  Anthony Green  <green@moxielogic.com>
11016
11017         * config/moxie/crti.asm: New file.
11018         * config/moxie/crtn.asm: New file.
11019         * config/moxie/moxie.c: New file.
11020         * config/moxie/moxie.h: New file.
11021         * config/moxie/sfp-machine.h: New file.
11022         * config/moxie/moxie-protos.h: New file.
11023         * config/moxie/t-moxie: Created.
11024         * config/moxie/t-moxie-softfp: Created.
11025         * config/moxie/moxie.md: Created.
11026         * config/moxie/constraints.md: Created.
11027         * config.gcc: Add moxie support.
11028         * doc/md.texi (Machine Constraints): Add moxie constraints.
11029         * doc/contrib.texi (Contributors): Mention moxie port.
11030         * doc/install.texi (Specific): Mention the moxie port.
11031
11032 2009-06-09  Ian Lance Taylor  <iant@google.com>
11033
11034         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
11035         compiling with C++.
11036         * optabs.c (optab_table): Only use designated initializers if
11037         HAVE_DESIGNATED_INITIALIZERS is defined.
11038         (convert_optab_table): Likewise.
11039         (init_optabs): Always call init_insn_codes if
11040         HAVE_DESIGNATED_INITIALIZERS is not defined.
11041
11042 2009-06-09  Ian Lance Taylor  <iant@google.com>
11043
11044         * targhooks.c (default_builtin_vectorized_function): Change fn
11045         parameter to unsigned int.
11046         (default_builtin_vectorized_conversion): Change code parameter to
11047         unsigned int.
11048         (default_builtin_reciprocal): Change fn parameter to unsigned int.
11049         * targhooks.h: Update declarations.
11050         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
11051         parameter to unsigned int.
11052
11053         * c-typeck.c (comptypes_check_enum_int): New static function.
11054         (comptypes_internal): Add enum_and_int_p parameter.  Change all
11055         callers.
11056         (comp_target_types): Add location parameter.  Change all callers.
11057         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
11058         Change all callers.
11059         (function_types_compatible_p, type_lists_compatible_p): Likewise.
11060         (build_conditional_expr): Add colon_loc parameter.  Change all
11061         callers.
11062         (convert_for_assignment): Add location parameter.  Change all callers.
11063         * c-parser.c (c_parser_conditional_expression): Pass location of
11064         colon to build_conditional_expr.
11065         * c-tree.h (build_conditional_expr): Update declaration.
11066
11067 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11068
11069         * graphite.c: Revert previous patch.
11070
11071 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11072
11073         PR bootstrap/40103
11074         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11075
11076 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11077
11078         * tree-ssa-loop-prefetch.c
11079         (loop_prefetch_arrays): Fixed a portability problem in printf format
11080         string.
11081
11082 2009-06-09  Martin Jambor  <mjambor@suse.cz>
11083
11084         PR tree-optimization/40351
11085         * tree-sra.c (propagate_subacesses_accross_link): Check that a
11086         refrence to a potential artifical subaccess can be constructed.
11087
11088 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11089
11090         * config/sh/sh-protos.h (sh_optimization_options): Declare.
11091         (sh_override_options): Likewise.
11092         * config/sh/sh.c: Include params.h.
11093         (sh_optimization_options): New.
11094         (sh_override_options): Likewise.
11095         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11096         (OVERRIDE_OPTIONS): Use sh_override_options.
11097
11098 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11099
11100         * dwarf2out.c (emit_cfa_remember): New variable.
11101         (add_fde_cfi): If emit_cfa_remember, recurse to add
11102         DW_CFA_remember_state first.
11103         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11104         instead just set emit_cfa_remember.
11105
11106 2009-06-08  Jan Hubicka  <jh@suse.cz>
11107
11108         PR debug/40126
11109         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11110
11111 2009-06-08  Jan Hubicka  <jh@suse.cz>
11112
11113         PR middle-end/39834
11114         * cgraphunit.c (save_inline_function_body): Do not copy transform
11115         hooks for saved inline bodies.
11116         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11117         for given function.
11118
11119 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
11120
11121         * jump.c (returnjump_p): Handle delayed branches.  Add missing
11122         function comment.
11123
11124 2009-06-08  Jan Hubicka  <jh@suse.cz>
11125
11126         PR middle-end/40102
11127         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11128         original node might've been modified.
11129         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11130
11131 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11132
11133         * tree-object-size.c (addr_object_size): Add OSI argument.
11134         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11135         (compute_builtin_object_size, expr_object_size): Adjust callers.
11136         (plus_stmt_object_size): Call addr_object_size instead of
11137         compute_builtin_object_size.
11138
11139 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11140             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11141
11142         * tree-ssa-loop-prefetch.c
11143         (gather_memory_references): Introduced a counter for the number of
11144         memory references.
11145         (anything_to_prefetch_p): Introduced a counter for the number of
11146         prefetches.
11147         (is_loop_prefetching_profitable): New function with a cost model
11148         for prefetching.
11149         (loop_prefetch_arrays): Use the new cost model to determine if
11150         prefetching is profitable.
11151         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11152         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11153         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11154         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11155         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11156         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11157
11158 2009-06-08  Michael Matz  <matz@suse.de>
11159
11160         PR debug/40012
11161         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11162         partitions use the same.
11163         (expand_one_var): Deal with DECL_RTL sometimes begin set also
11164         for basevars of SSA_NAMEs.
11165         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11166         to not expand them twice.
11167         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11168         multiple places.
11169
11170 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
11171
11172         * common.opt (fcompare-debug=, fcompare-debug-second): New.
11173         (fdump-final-insns=, gtoggle): New.
11174         * doc/invoke.texi: Document them.
11175         * final.c (rest_of_clean_state): Dump final insn stream.
11176         * gcc.c (invoke_as): Hook in -fcompare-debug.
11177         (static_spec_functions): Add compare-debug-dump-opt,
11178         compare-debug-self-opt and compare-debug-auxbase-opt.
11179         (compare_debug, compare_debug_second, compare_debug_opt): New.
11180         (switches_debug_check, n_switches_debug_check): New.
11181         (debug_auxbase_opt, debug_check_temp_file): New.
11182         (process_command): Handle -fno-compare-debug, -fcompare-debug and
11183         -fcompare-debug=*.
11184         (do_self_spec): Handle arguments after switches.
11185         (do_spec_1): Add .gk extension to temp file basenames for compare.
11186         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11187         (cc1_options): Use it instead of normal auxbase computation for
11188         the second compare-debug compilation.
11189         (compare_files): New.
11190         (main): Set up and implement compare debug mode.
11191         (compare_debug_dump_opt_spec_function): New.
11192         (compare_debug_self_opt_spec_function): New.
11193         (compare_debug_auxbase_opt_spec_function): New.
11194         * toplev.c (process_options): Handle flag_gtoggle,
11195         flag_dump_final_insns.
11196         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11197         during -fcompare-debug-second compilation.
11198
11199 2009-06-07  Ian Lance Taylor  <iant@google.com>
11200
11201         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11202         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11203
11204         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11205         with no default node.  Change warning with %H to warning_at.
11206         Don't clear warn_switch around case checking.
11207         * doc/invoke.texi (Warning Options): Clarify distinction between
11208         -Wswitch and -Wswitch-enum.
11209
11210 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11211
11212         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11213
11214 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11215
11216         * gbl-ctors.h: Add header guard.
11217
11218 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11219
11220         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11221         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11222         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11223         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11224         prototypes for removed functions.
11225         (expressions_equal_p): Move to ...
11226         * tree-ssa-sccvn.h: ... here and ...
11227         * matrix-reorg.c: ... adjust includes.
11228
11229 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11230
11231         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11232
11233 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11234
11235         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11236         (finish_function): Remove erroneous whitespace.
11237
11238 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11239
11240         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11241         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11242
11243 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11244
11245         * errors.c (internal_error): Commentary typo fix.
11246         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
11247         * tree-ssa-pre.c: Ditto.
11248
11249 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11250
11251         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
11252         them is supposed to hold actual statements.
11253
11254 2009-06-06  Ian Lance Taylor  <iant@google.com>
11255
11256         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
11257         empty statements can now have attributes.
11258
11259 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
11260
11261         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
11262         * config/mips/mips.md: Ditto.
11263
11264 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11265
11266         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
11267         _RELOCATABLE.
11268         (__eabi_uconvert): Likewise.
11269
11270 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11271
11272         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
11273         CFI_* definitions with IN_GCC.
11274
11275 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
11276
11277         * xcoffout.h (xcoffout_source_line): Update prototype.
11278
11279 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11280
11281         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
11282         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
11283
11284 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11285
11286         PR middle-end/40340
11287         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
11288         inlined_function_outer_scope_p blocks for artificial inlines
11289         even at -g0/-g1.
11290         * tree.c (tree_nonartificial_location): Rewrite using
11291         block_nonartificial_location.
11292
11293 2009-06-05  Revital Eres  <eres@il.ibm.com>
11294             Leehod Baruch  <leehod@il.ibm.com>
11295
11296         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
11297         (expand_expr_real_1): Remove comment.
11298         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
11299         Vectorize misaligned access when the target supports it.
11300         (vect_supportable_dr_alignment): Check for unaligned access support.
11301         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
11302         and remove asset.
11303
11304 2009-06-05  Julian Brown  <julian@codesourcery.com>
11305
11306         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
11307         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
11308
11309 2009-06-05  Richard Guenther  <rguenther@suse.de>
11310
11311         PR bootstrap/40350
11312         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
11313         as possibly unused.
11314
11315 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11316
11317         * config/s390/s390.c (global_not_special_regno_p): New static inline.
11318         (save_gprs): Don't tell unwinder when a global register is saved.
11319         (s390_emit_epilogue): Emit needed epilogue unwind info.
11320
11321 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11322
11323         * dwarf2out.c (deferred_asm_name): New.
11324         (add_name_and_src_coords_attributes): Defer creation of
11325         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
11326         computed yet.
11327         (move_linkage_attr): New.
11328         (dwarf2out_finish): Revisit deferrals and emit attributes at the
11329         right place.
11330
11331 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11332
11333         * tree-nested.c (finalize_nesting_tree_1): Declare the
11334         frame_decl in the binding tree.
11335
11336 2009-06-04  Cary Coutant  <ccoutant@google.com>
11337
11338         * basic-block.h (struct basic_block_def): Add discriminator field.
11339         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
11340         callers.
11341         * debug.c (do_nothing_debug_hooks): Add additional entry.
11342         (debug_nothing_int_charstar_int): New function.
11343         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
11344         (debug_nothing_int_charstar_int): New declaration.
11345         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
11346         discriminator value in .loc directive.
11347         * final.c (last_discriminator): New variable.
11348         (discriminator): New variable.
11349         (final_start_function): Initialize above variables, pass current
11350         discriminator to debug hook.
11351         (notice_source_line): Check for discriminator change.
11352         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
11353         * sdbout.c (sdbout_source_line): New parameter.
11354         * tree-cfg.c (struct locus_discrim_map): New structure type.
11355         (discriminator_per_locus): New hash table.
11356         (build_gimple_cfg): Allocate and free discriminator hash table.
11357         (make_edges): Call assign_discriminator.
11358         (locus_map_hash): New function.
11359         (locus_map_eq): New function.
11360         (next_discriminator_for_locus): New function.
11361         (same_line_p): New function.
11362         (assign_discriminator): New function.
11363         (make_cond_expr_edges): Call assign_discriminator.
11364         (make_gimple_switch_edges): Likewise.
11365         (first_non_label_stmt): New function.
11366         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
11367         all callers.
11368         * xcoffout.c (xcoffout_source_line): Add new parameter.
11369
11370         * configure.ac (gcc_cv_as_discriminator): New configury check for
11371         gas support for discriminator.
11372         * configure: Regenerate.
11373         * config.in: Regenerate.
11374
11375 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11376
11377         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
11378         val after checking for integers.
11379
11380 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
11381
11382         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
11383         X64_REGPARM_MAX.
11384         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11385         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
11386         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
11387         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
11388         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
11389         X64_SSE_REGPARM_MAX.
11390         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
11391         X64_SSE_REGPARM_MAX.
11392
11393 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11394
11395         * gcc.c (report_times_to_file): New.
11396         (execute): Implement it.
11397         (process_command): Support -time=.
11398         * doc/invoke.texi: Document it.
11399
11400 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11401
11402         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
11403         that have value exprs.
11404
11405 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11406
11407         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
11408         declarations for constants until...
11409         (dw2_output_indirect_constant_1): ... this point.
11410
11411 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
11412
11413         PR target/10242
11414         * arm.md (arm_addsi3): Don't try to split an add with an
11415         eliminable register until after reload has completed.
11416
11417 2009-06-03  Ian Lance Taylor  <iant@google.com>
11418
11419         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
11420         * genattrtab.c (write_length_unit_log): Likewise.
11421         * genchecksum.c (dosum): Likewise.
11422         * gengtype.c (write_rtx_next): Likewise.
11423         (finish_root_table, write_roots): Likewise.
11424         * gimple.c (gimple_ops_offset_): Likewise.
11425         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
11426         * config/arc/arc.c (arc_attribute_table): Likewise.
11427         * config/arm/arm.c (arm_attribute_table): Likewise.
11428         * config/avr/avr.c (avr_attribute_table): Likewise.
11429         * config/crx/crx.c (crx_attribute_table): Likewise.
11430         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
11431         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
11432         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
11433         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
11434         * config/sh/sh.c (sh_attribute_table): Likewise.
11435         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
11436         * config/spu/spu.c (spu_attribute_table): Likewise.
11437         * config/v850/v850.c (v850_attribute_table): Likewise.
11438
11439         * config/alpha/alpha.c (vms_attribute_table): Make static.
11440         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
11441         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
11442         * config/mips/mips.c (mips_attribute_table): Likewise.
11443
11444         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
11445         $(SYSTEM_H).
11446         (cc1-checksum.o): Likewise.
11447
11448 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
11449
11450         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
11451
11452 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
11453
11454         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
11455         insn if it is changing sp.  Use gen_add3_insn instead of
11456         conditionally gen_addsi3 and gen_adddi3.
11457         (offset_below_red_zone_p): New static inline function.
11458         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
11459         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
11460         * config/rs6000/ppc-asm.h: Include auto-host.h.
11461         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
11462         CFI_RESTORE): Define.
11463         * config/rs6000/crtresxgpr.asm: Add unwind info.
11464         * config/rs6000/crtresxfpr.asm: Likewise.
11465         * config/rs6000/crtresgpr.asm: Likewise.
11466         * config/rs6000/crtresfpr.asm: Likewise.
11467         * config/rs6000/crtsavgpr.asm: Likewise.
11468         * config/rs6000/crtsavfpr.asm: Likewise.
11469
11470         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
11471         argument of DWARF2_FRAME_REG_OUT macros.
11472
11473 2009-06-03  Julian Brown  <julian@codesourcery.com>
11474
11475         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
11476         words or less (including TImode) in core registers.
11477
11478 2009-06-03  Richard Guenther  <rguenther@suse.de>
11479
11480         PR middle-end/40328
11481         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
11482
11483 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
11484
11485         * statistics.c (statistics_counter_event): Do not record event
11486         in pass dump if its number == -1.
11487         (curr_statistics_hash): Add assert that we never get passes
11488         with static number == -1.
11489
11490 2009-06-03  Richard Guenther  <rguenther@suse.de>
11491             Andrey Belevantsev  <abel@ispras.ru>
11492
11493         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
11494         non-BLKmode arrays addressable.
11495
11496 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
11497
11498         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
11499         * config/m68k/m68k.h: ... here.
11500         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
11501         m68k and fido.
11502
11503 2009-06-03  Martin Jambor  <mjambor@suse.cz>
11504
11505         PR tree-optimization/40323
11506         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
11507         assignment.
11508
11509 2009-06-03  Richard Guenther  <rguenther@suse.de>
11510
11511         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11512         consistently.
11513
11514 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
11515
11516         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
11517         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
11518         JUMP_TABLE_DATA_P where applicable.
11519         * config/sh/sh.c: Ditto.
11520         * config/sh/sh.h: Ditto.
11521         * config/sh/sh.md: Ditto.
11522         * config/sh/symbian.c: Ditto.
11523
11524 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
11525
11526         * config/i386/driver-i386.c (describe_cache): Optimize
11527         concatenation of strings.  Use snprintf instead of sprintf.
11528         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
11529         target when not compiling with GCC.
11530
11531 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
11532
11533         * config/sh/sh.c: Revert last change.
11534         (sh_expand_epilogue): Emit a blockage insn before the frame
11535         pointer adjustment unconditionally.
11536
11537 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11538
11539         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
11540         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
11541         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
11542         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
11543         to COLLECT_GCC_OPTIONS.
11544
11545 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11546
11547         * collect2.c (target_system_root): New variable.
11548         (main): Handle --sysroot=.
11549         (ignore_library): Strip the sysroot from the library path.
11550
11551 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11552
11553         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
11554         (collect2.o): Depend on collect2-aix.h.
11555         (collect2-aix.o): New rule.
11556         * collect2-aix.h: New file.
11557         * collect2-aix.c: Likewise.
11558         * collect2.c: Include collect2-aix.h.  Don't undefine
11559         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
11560         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
11561         Use TARGET_AIX_VERSION instead of _AIX51.
11562         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
11563         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
11564         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
11565         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
11566         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
11567
11568 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11569
11570         * collect2.c (ignore_library): Avoid premature post-increment
11571         and null deference.
11572
11573 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11574
11575         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
11576         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
11577         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
11578         CROSS_DIRECTORY_STRUCTURE too.
11579         (LINK_LIBG_SPEC): Likewise.
11580         (LIB_SPEC): Add %R to sysroot paths.
11581         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
11582         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
11583         * config/rs6000/aix51.h: As for aix43.h.
11584         * config/rs6000/aix52.h: Likewise.
11585         * config/rs6000/aix53.h: Likewise.
11586         * config/rs6000/aix61.h: Likewise.
11587         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
11588         to the beginning of sysroot paths.
11589
11590 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11591
11592         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
11593         INSN_LISTs that are out of the REG_NOTE range.
11594
11595 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11596
11597         * loop-unroll.c (struct iv_to_split): Add pointer to next.
11598         (struct var_to_expand): Likewise.
11599         (struct opt_info): Add head and tail for linked lists of the above.
11600         (analyze_insn_to_expand_var): Initialize next.
11601         (analyze_iv_to_split_insn): Likewise.
11602         (analyze_insns_in_loop): Create linked lists.
11603         (allocate_basic_variable): Simplify for use without hash table.
11604         (insert_var_expansion_initialization): Likewise, make it type-safer.
11605         (combine_var_copies_in_loop_exit): Likewise.
11606         (apply_opt_in_copies): Walk lists rather than hash tables.
11607         (release_var_copies): Simplified and inlined by hand into...
11608         (free_opt_info): ... this function.
11609
11610 2009-06-02  Richard Guenther  <rguenther@suse.de>
11611
11612         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11613         for field decls.
11614
11615 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11616
11617         * cfgexpand.c (gimple_expand_cfg): Discard the source location
11618         only for builtins that are not overridden.
11619
11620 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11621
11622         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
11623         label string.
11624
11625 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11626
11627         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
11628
11629 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11630
11631         * combine.c (move_deaths): Compare LUIDs within the same BB only.
11632
11633 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11634
11635         * common.opt (fdump-unnumbered-links): New.
11636         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
11637         * print-rtl.c (flag_dump_unnumbered_links): New.
11638         (print_rtx): Test it.
11639
11640 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
11641
11642         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
11643         push/pop multiple to 8-byte alignment.
11644
11645 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
11646
11647         * config/i386/i386.c (queued_cfa_restores): New static variable.
11648         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
11649         functions.
11650         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
11651         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
11652         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
11653         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
11654         note unconditionally.
11655         (ix86_emit_restore_regs_using_mov): Likewise.
11656         (ix86_emit_restore_sse_regs_using_mov): Likewise.
11657         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
11658         it through to ix86_emit_restore_reg_using_pop.
11659         (ix86_emit_leave): Add RED_OFFSET argument.  Call
11660         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
11661         instead of adding REG_CFA_OFFSET note unconditionally.
11662         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
11663         the above functions.  Call ix86_add_queued_cfa_restore_notes when
11664         needed.
11665
11666         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
11667         force output of the label even for dwarf2out_do_cfi_asm.
11668         (add_fde_cfi): If -g2 and above and cfi might change CFA,
11669         force creation of CFI label and chain DW_CFA_set_loc jumping to it
11670         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
11671         caller.
11672         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
11673         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
11674         dwarf2out_cfi_label callers.
11675         * tree.h (dwarf2out_cfi_label): Adjust prototype.
11676         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
11677         Adjust dwarf2out_cfi_label callers.
11678         * config/vax/vax.c (vax_output_function_prologue): Likewise.
11679
11680         * config/i386/i386.h (struct machine_cfa_state,
11681         struct machine_function): Guard with ifndef USED_FOR_TARGET
11682         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
11683
11684         PR other/40024
11685         * emutls.c (__emutls_get_address): Change arr->size to mean number
11686         of allocated arr->data entries instead of # of slots + 1.
11687
11688         PR middle-end/40316
11689         * recog.c (peep2_reinit_state): New function.
11690         (peephole2_init_state): Use it at the end of a basic block and also
11691         when seeing a RTX_FRAME_RELATED_P insn.
11692
11693 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
11694
11695         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
11696         fixuns_truncrfdi2): New.
11697         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
11698         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
11699         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
11700         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
11701         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
11702         *recip_approx): Remove.
11703         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
11704         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
11705         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
11706         move to div.md.
11707         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
11708         setf_exp_rf): New.
11709
11710 2009-06-01  Ian Lance Taylor  <iant@google.com>
11711
11712         * attribs.c (register_attribute): Use CONST_CAST.
11713         * collect2.c (main): Use CONST_CAST2.
11714         (scan_prog_file): Likewise.
11715         * gcc.c (process_command, main): Likewise.
11716         * toplev.c (toplev_main): Likewise.
11717
11718         * c-typeck.c (handle_warn_cast_qual): New static function,
11719         partially broken out of build_c_cast.
11720         (build_c_cast): Call handle_warn_cast_qual.
11721         * doc/invoke.texi (Warning Options): Document new effect of
11722         -Wcast-qual.
11723
11724 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
11725
11726         * diagnostic.c (diagnostic_build_prefix): Always print columns.
11727         (diagnostic_report_current_module): Print columns.
11728         * common.opt (flag_show_column): Enable by default.
11729
11730 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
11731
11732         * alias.c (find_base_term): Check for NULL term before returning.
11733
11734 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11735
11736         Revert due to PR40320:
11737         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11738         * calls.c (emit_library_call_value_1): Don't force_operand for move
11739         and push insns.
11740
11741 2009-06-01  Olivier Hainque  <hainque@adacore.com>
11742             Eric Botcazou  <ebotcazou@adacore.com>
11743
11744         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
11745         to be processed as a bitfield for constructor output purposes.
11746         * output.h (initializer_constant_valid_for_bitfield_p): Declare
11747         new function.
11748         * varasm.c (oc_local_state): New type, output_constructor
11749         local state to support communication with helpers.
11750         (oc_outer_state): New type, output_constructor outer state of
11751         relevance in recursive calls.
11752         (output_constructor_array_range): New output_constructor helper,
11753         extracted code for an array range element.
11754         (output_constructor_regular_field): New output_constructor helper,
11755         extracted code for an element that is not a bitfield.
11756         (output_constructor_bitfield): New output_constructor helper,
11757         extracted code for a bitfield element.  Accept an OUTER state
11758         argument for recursive processing.  Recurse on record or array
11759         CONSTRUCTOR values, possibly past noop conversions.
11760         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
11761         VALUE is a valid constant-valued expression for use in a static
11762         bit-field initializer.
11763         (output_constructor): Rework to use helpers.  Accept and honor an
11764         OUTER state argument for recursive calls.  Return total size.  Be
11765         prepared for nested constructors initializing bitfields.
11766         (output_constant): Feed OUTER in calls to output_constructor.
11767
11768 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11769
11770         * calls.c (emit_library_call_value_1): Don't force_operand for move
11771         and push insns.
11772
11773 2009-06-01  Nick Clifton  <nickc@redhat.com>
11774
11775         * doc/invoke.texi (IA-64 Options): Fix typo.
11776
11777 2009-06-01  Ira Rosen  <irar@il.ibm.com>
11778
11779         PR tree-optimization/39129
11780         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
11781         printed message.
11782         (vect_do_peeling_for_loop_bound): Use
11783         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
11784         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
11785         (vect_loop_versioning): Likewise.
11786         (vect_create_cond_for_alias_checks): Fix indentation.
11787         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
11788         macros.
11789         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
11790         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
11791         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
11792         "control flow in loop".
11793         (vect_estimate_min_profitable_iters): Use
11794         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
11795         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
11796         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
11797         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
11798         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
11799         statement belongs to a group of strided accesses with the exact code
11800         check.
11801         (vectorizable_load): Likewise.
11802         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
11803         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
11804
11805 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
11806
11807         * config/freebsd-stdint.h: New file.
11808         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
11809         Add freebsd-stdint.h to tm_file.
11810
11811 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
11812
11813         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
11814         (thumb2_extendhidi2): Likewise.
11815
11816 2009-05-31  Ian Lance Taylor  <iant@google.com>
11817
11818         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
11819
11820 2009-05-31  Ian Lance Taylor  <iant@google.com>
11821
11822         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
11823         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
11824         (ipa-reference.o): Depend upon gt-ipa-reference.h.
11825
11826 2009-05-31  Jason Merrill  <jason@redhat.com>
11827
11828         * tree-pretty-print.c (print_call_name): Take the callee, not the
11829         call itself.  Make non-static.  Use dump_function_name for functions.
11830         (dump_generic_node): Adjust.
11831         * diagnostic.h: Declare print_call_name.
11832         * gimple-pretty-print.c (dump_gimple_call): Use it.
11833
11834 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11835
11836         * config/sh/sh.md (ashldi3_std): New define_expand.
11837         (ashldi3): Use it.
11838
11839 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11840
11841         PR target/40313
11842         * config/sh/sh.c: Include debug.h.
11843         (sh_expand_epilogue): Emit a blockage insn before the frame
11844         pointer adjustment also when dwarf2out_do_frame returns true.
11845
11846 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
11847
11848         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
11849         (thumb2_extendqidi2): New pattern.
11850
11851 2009-05-31  Ira Rosen  <irar@il.ibm.com>
11852
11853         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
11854         mark phis for renaming.
11855         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
11856         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
11857         Call mark_sym_for_renaming.
11858         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
11859         * tree-vect-loop.c (vect_transform_loop): Remove
11860         vect_memsyms_to_rename initialization and a call to
11861         mark_set_for_renaming.
11862
11863 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
11864
11865         PR middle-end/40304
11866         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
11867         frame related even if !set_cfa && style < 0.
11868
11869 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
11870
11871         * config/i386/mingw-tls.c: New file.
11872         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
11873         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
11874         defining _WIN32 but not __CYGWIN__.
11875
11876 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11877
11878         * configure.ac: Add MPC support.
11879
11880         * config.in, configure: Regenerate.
11881
11882 2009-05-29  Richard Henderson  <rth@redhat.com>
11883
11884         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
11885         NOTE_INSN_BASIC_BLOCK.
11886         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
11887         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
11888         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
11889         to be deleted.
11890         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
11891         add in_use field.
11892         (add_cfi): Disable check redefining cfa away from drap.
11893         (lookup_cfa_1): Add remember argument; handle remember/restore.
11894         (lookup_cfa): Pass remember argument.
11895         (cfa_remember): New.
11896         (compute_barrier_args_size_1): Remove sibcall check.
11897         (dwarf2out_frame_debug_def_cfa): New.
11898         (dwarf2out_frame_debug_adjust_cfa): New.
11899         (dwarf2out_frame_debug_cfa_offset): New.
11900         (dwarf2out_frame_debug_cfa_register): New.
11901         (dwarf2out_frame_debug_cfa_restore): New.
11902         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
11903         (dwarf2out_begin_epilogue): New.
11904         (dwarf2out_frame_debug_restore_state): New.
11905         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
11906         DW_CFA_restore_state.
11907         (output_cfi_directive): Likewise.
11908         (convert_cfa_to_fb_loc_list): Likewise.
11909         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
11910         * dwarf2out.h: Update.
11911         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
11912         (copy_insn_1): Early out for null.
11913         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
11914         and dwarf2out_frame_debug_restore_state.
11915         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
11916         (prologue_insn_hash, epilogue_insn_hash): New.
11917         (free_after_compilation): Adjust freeing accordingly.
11918         (record_insns): Create hash table if needed; push insns into
11919         hash instead of array.
11920         (maybe_copy_epilogue_insn): New.
11921         (contains): Search hash table instead of array.
11922         (sibcall_epilogue_contains): Remove.
11923         (thread_prologue_and_epilogue_insns): Split eh_return insns
11924         and mark them as epilogues.
11925         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
11926         scanning in terms of basic blocks.
11927         * insn-notes.def (CFA_RESTORE_STATE): New.
11928         * jump.c (returnjump_p_1): Accept EH_RETURN.
11929         (eh_returnjump_p_1, eh_returnjump_p): New.
11930         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
11931         CFA_REGISTER, CFA_RESTORE): New.
11932         * rtl.def (EH_RETURN): New.
11933         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
11934
11935         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
11936         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
11937
11938         * config/i386/i386.c (gen_push): Update cfa state.
11939         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
11940         add a CFA_ADJUST_CFA note.
11941         (ix86_dwarf_handle_frame_unspec): Remove.
11942         (ix86_expand_prologue): Update cfa state.
11943         (ix86_emit_restore_reg_using_pop): New.
11944         (ix86_emit_restore_regs_using_pop): New.
11945         (ix86_emit_leave): New.
11946         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
11947         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
11948         * config/i386/i386.h (struct machine_cfa_state): New.
11949         (ix86_cfa_state): New.
11950         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
11951         (eh_return_internal): Merge from eh_return_<mode>,
11952         use eh_return rtx, split w/ epilogue.
11953
11954 2009-05-29  Ian Lance Taylor  <iant@google.com>
11955
11956         * builtins.c (validate_gimple_arglist): Don't use va_arg with
11957         enum type.
11958         * calls.c (emit_library_call_value_1): Likewise.
11959
11960         * c-typeck.c (c_build_va_arg): New function.
11961         * c-tree.h (c_build_va_arg): Declare.
11962         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
11963         instead of build_va_arg.
11964
11965 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
11966
11967         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
11968         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
11969         (ptr_difference_cost): Use affine combinations to compute it.
11970         (difference_cost): Likewise.
11971         (get_computation_cost_at): Compute more accurate cost for addresses
11972         if the ratio is a multiplier allowed in addresses.
11973         For non-addresses, consider that an additional offset or symbol is
11974         added only once.
11975
11976 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
11977
11978         * config/i386/i386.c (ix86_decompose_address): Avoid useless
11979         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
11980
11981         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
11982         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
11983         (prefix_rex): For UNIT_MMX don't imply the prefix by default
11984         if MODE_DI.
11985         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
11986         to 1 for TYPE_SSE{IADD1,CVT1}.
11987         (prefix_vex_imm8): Removed.
11988         (length_vex): Only pass 1 as second argument to
11989         ix86_attr_length_vex_default if prefix_extra is 0.
11990         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
11991         (length): For prefix vex computation use length_immediate
11992         attribute instead of prefix_vex_imm8.
11993         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
11994         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
11995         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
11996         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
11997         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
11998         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
11999         a space in between the operands.
12000         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
12001         if one operand is 0xff and the other one si, di, bp or sp.
12002         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12003         other one si, di, bp or sp.
12004         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12005         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12006         type and mode attributes.
12007         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12008         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12009         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12010         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12011         prefix_data16 attribute iff MODE_DF.
12012         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12013         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12014         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12015         constm128_operand in length_immediate computation.
12016         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
12017         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12018         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12019         length_immediate attribute to 1.
12020         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12021         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12022         for certain alternatives.
12023         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
12024         prefix_data16 attribute if MODE_V1DF.
12025         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
12026         length_immediate to 1.
12027         (set_got_rex64, set_rip_rex64): Remove length attribute, set
12028         length_address to 4, set mode attribute to MODE_DI.
12029         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
12030         (fxam<mode>2_i387): Set length attribute to 4.
12031         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
12032         *prefetch_3dnow_rex): Override length_address attribute.
12033         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
12034         attributes.
12035         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
12036         (constm128_operand): Removed.
12037         * config/i386/i386.c (memory_address_length): For
12038         disp && !index && !base in 64-bit mode account for SIB byte if
12039         print_operand_address can't optimize disp32 into disp32(%rip)
12040         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
12041         for fs: or gs: segment.
12042         (ix86_attr_length_immediate_default): When checking if shortform
12043         is possible, truncate immediate to the length of the non-shortened
12044         immediate.
12045         (ix86_attr_length_address_default): Ignore MEM_P operands
12046         with X constraint.
12047         (ix86_attr_length_vex_default): Only check for DImode on
12048         GENERAL_REG_P operands.
12049         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
12050         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
12051         (sse_cvttps2pi): Clear prefix_rep attribute.
12052         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
12053         attribute.
12054         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
12055         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
12056         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
12057         iff operand 2 is const_int_operand.
12058         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
12059         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
12060         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
12061         instead of vex.
12062         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
12063         prefix_data16.
12064         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
12065         prefix_data16 attribute for movlpd and movhpd instructions.
12066         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
12067         length_immediate for shufpd instruction.
12068         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
12069         (avx_cmpp<avxmodesuffixf2c><mode>3,
12070         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
12071         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
12072         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
12073         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
12074         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
12075         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
12076         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
12077         prefix_data16 attribute for the first alternative to 1.
12078         (*avx_loadlps): Override length_immediate for the first alternative.
12079         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
12080         attributes for second alternative.
12081         (*vec_concatv2sf_sse4_1): Override length_immediate and
12082         prefix_data16 attributes for second alternative.
12083         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12084         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12085         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12086         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12087         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12088         prefix_data16 and length_immediate to 1.
12089         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12090         to 1.
12091         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12092         prefix_extra attribute for variants that don't have 0f prefix alone.
12093         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
12094         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12095         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12096         *sse4_1_pextrd): Set length_immediate to 1.
12097         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
12098         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12099         to 1.
12100         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12101         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12102         length_immediate to 1 for second alternative.
12103         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12104         prefix_extra and length_immediate attributes for the first
12105         alternative.
12106         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12107         first alternative.
12108         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
12109         to 1 for the first and third alternative.
12110         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12111         alternative.
12112         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12113         attribute.
12114         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12115         attribute to 0.
12116         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12117         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12118         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12119         *avx_psign<mode>3): Set prefix_extra attribute to 1.
12120         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12121         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12122         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12123         ssse3_psign<mode>3): Override prefix_rex attribute.
12124         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12125         (ssse3_palignrti): Override length_immediate to 1.
12126         (ssse3_palignrdi): Override length_immediate to 1, override
12127         prefix_rex attribute.
12128         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12129         (sse4a_extrqi): Override length_immediate to 2.
12130         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
12131         (sse4a_insertq): Override prefix_data16 to 0.
12132         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12133         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12134         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12135         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12136         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12137         and length_immediate to 1.
12138         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12139         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12140         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12141         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12142         and length_immediate to 1.
12143         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12144         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12145         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12146         avx_ptest256): Override prefix_extra to 1.
12147         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12148         Override prefix_data16 and length_immediate to 1.
12149         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12150         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12151         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12152         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12153         prefix_data16 to 0 and prefix_extra to 2.
12154         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12155         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12156         attribute.
12157         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12158         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12159         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12160         and prefix_extra to 2.
12161         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12162         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12163         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12164         avx_vpermilvar<mode>3,
12165         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12166         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12167         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12168         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12169         Override prefix_extra to 1.
12170         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12171         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12172         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12173         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12174         prefix_extra and length_immediate to 1.
12175         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12176         modrm to 0.
12177         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12178         to 1 for the first alternative.
12179         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12180         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12181         cases.
12182         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12183         *movv2sf_internal_avx, *movv2sf_internal): Override
12184         prefix_rep attribute for certain alternatives.
12185         (*mov<mode>_internal): Override prefix_rep or prefix_data16
12186         attributes for certain alternatives.
12187         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12188         attributes for certain alternatives.
12189         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12190         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12191         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12192         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12193         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12194         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12195         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12196         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12197         length_immediate to 1 if operand 2 is const_int_operand.
12198         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12199         *vec_extractv2si_1): Set length_immediate attribute to 1.
12200         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12201         using old 3DNOW insn rather than SSE/3DNOW_A.
12202         (mmx_emms, mmx_femms): Clear modrm attribute.
12203
12204 2009-05-29  Martin Jambor  <mjambor@suse.cz>
12205
12206         * tree-sra.c:  New implementation of SRA.
12207
12208         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12209         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12210         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12211         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12212         (SRA_MAX_STRUCTURE_COUNT): Removed.
12213         (SRA_FIELD_STRUCTURE_RATIO): Removed.
12214         * doc/invoke.texi (sra-max-structure-size): Removed.
12215         (sra-field-structure-ratio): Removed.
12216
12217 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12218
12219         PR middle-end/40291
12220         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12221         before expansion.
12222
12223 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
12224
12225         PR rtl-optimization/40101
12226         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12227         seqno.  Adjust comment.
12228         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12229         inserting bookkeeping before a jump, the jump is not scheduled.
12230         When no positive seqno found, provide a value.  Add comment.
12231
12232 2009-05-29  Richard Guenther  <rguenther@suse.de>
12233
12234         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12235         short-cutting on the first component.
12236
12237 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12238
12239         PR middle-end/39958
12240         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12241         for trees other than decls/types.
12242
12243 2009-05-29  Richard Guenther  <rguenther@suse.de>
12244
12245         * tree-ssa-operands.c (get_expr_operands): Do not handle
12246         INDIRECT_REFs in the handled-component case.  Remove
12247         unused get_ref_base_and_extent case.
12248         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
12249         tree_low_cst and host_integerp where possible.
12250         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
12251         codes for equivalence.
12252         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
12253
12254 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
12255
12256         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
12257         to tmake_file for i[34567]86-*-cygwin*.
12258
12259 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12260
12261         PR target/40017
12262         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
12263         (altivec_categorize_keyword, init_vector_keywords,
12264         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
12265         similar to bool.
12266
12267 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
12268
12269         * tree.c (handle_dll_attribute): Check if node is
12270         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
12271
12272 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
12273
12274         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
12275         component.
12276         (thumb2_zero_extendqidi2): Likewise.
12277
12278 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
12279
12280         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
12281         instead of gen_movrt.
12282         * config/sh/sh.md (movrt): Remove.
12283
12284 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
12285
12286         * doc/invoke.texi (IA-64 Options):
12287         Add -msdata, -mfused-madd, -mno-inline-float-divide,
12288         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
12289         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
12290         -msched-prefer-non-control-spec-insns,
12291         -msched-stop-bits-after-every-cycle,
12292         -msched-count-spec-in-critical-path,
12293         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
12294         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
12295         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
12296         and -msched-spec-verbose.
12297
12298 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
12299
12300         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
12301         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
12302         error if used.
12303         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
12304
12305 2009-05-28  Richard Guenther  <rguenther@suse.de>
12306
12307         * tree-ssa-alias.c (ao_ref_init): New function.
12308         (ao_ref_base): Likewise.
12309         (ao_ref_base_alias_set): Likewise.
12310         (ao_ref_alias_set): Likewise.
12311         (refs_may_alias_p_1): Change signature.
12312         (refs_may_alias_p): Adjust.
12313         (refs_anti_dependent_p): Likewise.
12314         (refs_output_dependent_p): Likewise.
12315         (call_may_clobber_ref_p_1): Change signature.
12316         (call_may_clobber_ref_p): Adjust.
12317         (stmt_may_clobber_ref_p_1): New function split out from ...
12318         (stmt_may_clobber_ref_p): ... here.
12319         (maybe_skip_until): Adjust signature.
12320         (get_continuation_for_phi): Likewise.
12321         (walk_non_aliased_vuses): Likewise.
12322         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
12323         (ao_ref_init): Declare.
12324         (ao_ref_base): Likewise.
12325         (ao_ref_alias_set): Likewise.
12326         (stmt_may_clobber_ref_p_1): Likewise.
12327         (walk_non_aliased_vuses): Adjust.
12328         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
12329         (get_ref_from_reference_ops): remove.
12330         (vn_reference_lookup_2): Adjust signature.
12331         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
12332         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
12333         (vn_reference_lookup): Adjust.
12334         (vn_reference_insert): Likewise.
12335         (vn_reference_insert_pieces): Adjust signature.
12336         (visit_reference_op_call): Adjust.
12337         * tree-ssa-pre.c (get_expr_type): Simplify.
12338         (phi_translate_1): Adjust.
12339         (compute_avail): Likewise.
12340         (translate_vuse_through_block): Do not re-build trees.
12341         (value_dies_in_block_x): Likewise.
12342         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
12343         fields.
12344         (vn_reference_lookup_pieces): Adjust declaration.
12345         (vn_reference_insert_pieces): Likewise.
12346
12347 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
12348
12349         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
12350         with checking disabled.
12351
12352 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
12353
12354         PR target/37216
12355
12356         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
12357         macro definition for support of three-operand format aligned
12358         .comm directive in assembler on cygwin/pe/mingw target OS.
12359         * configure:  Regenerate.
12360         * config.h:  Regenerate.
12361
12362         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
12363         aligned form of .comm directive if -mpe-aligned-commons is in effect.
12364         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
12365
12366         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
12367         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
12368
12369 2009-05-28  Ira Rosen  <irar@il.ibm.com>
12370
12371         PR tree-optimization/40254
12372         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
12373         in analysis of basic blocks.
12374
12375 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
12376
12377         PR middle-end/33699
12378         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
12379         * target-def.h (TARGET_CONST_ANCHOR): New macro.
12380         (TARGET_INITIALIZER): Use it.
12381         * cse.c (CHEAPER): Move it up to the other macros.
12382         (insert): Rename this ...
12383         (insert_with_costs): ... to this.  Add cost parameters.  Update
12384         function comment.
12385         (insert): New function.  Call insert_with_costs.
12386         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
12387         find_reg_offset_for_const, try_const_anchors): New functions.
12388         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
12389         when using a const-anchor.  Call insert_const_anchors.
12390         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
12391         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
12392
12393 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12394
12395         * tree-inline.c (remap_decls): Enable nonlocalized variables
12396         when not optimizing.
12397
12398 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12399
12400         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
12401         Simplify other tests involving optimize.
12402
12403 2009-05-27  Tom Tromey  <tromey@redhat.com>
12404
12405         * unwind-dw2.c (_Unwind_DebugHook): New function.
12406         (uw_install_context): Call _Unwind_DebugHook.
12407
12408 2009-05-27  Tom Tromey  <tromey@redhat.com>
12409
12410         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
12411
12412 2009-05-27  Ian Lance Taylor  <iant@google.com>
12413
12414         * Makefile.in (LINKER, LINKER_FLAGS): Define.
12415         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
12416         (ALL_LINKERFLAGS): Define.
12417         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
12418         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12419         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
12420         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12421         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
12422         $(LINKER_FOR_BUILD).
12423         (build/gcov-iov$(build_exeext)): Likewise.
12424
12425 2009-05-27  Julian Brown  <julian@codesourcery.com>
12426
12427         * gcse.c (target.h): Include.
12428         (can_assign_to_reg_without_clobbers_p): Check that the target allows
12429         copy of argument to a pseudo register.
12430
12431 2009-05-27  Diego Novillo  <dnovillo@google.com>
12432
12433         * tree-ssa-live.c (dump_scope_block): Document arguments.
12434         (dump_scope_blocks): Document.
12435         (debug_scope_blocks): New.
12436         * tree-flow.h (debug_scope_blocks): Declare.
12437
12438 2009-05-21  Denis Chertykov  <denisc@overta.ru>
12439
12440         * doc/contrib.texi (Contributors): Add myself to the list.
12441
12442 2009-05-27  Olivier Hainque  <hainque@adacore.com>
12443
12444         * expr.c (target_align): New function.  Alignment the TARGET of an
12445         assignment may be assume to have.
12446         (highest_pow2_factor_for_target): Use it instead of relying on
12447         immediate tree attributes of TARGET, not necessarily honored when
12448         intermediate bitfields are involved.
12449
12450 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
12451
12452         PR target/40266
12453         * config/i386/driver-i386.c (host_detect_local_cpu): Support
12454         AVX, SSE4, AES, PCLMUL and POPCNT.
12455
12456 2009-05-27  Diego Novillo  <dnovillo@google.com>
12457
12458         * tree-pretty-print.c (dump_location): New.
12459         (dump_generic_node): Call it.
12460         Factor code to handle BLOCK nodes ...
12461         (dump_block_node): ... here.
12462
12463 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
12464
12465         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
12466         with it.
12467         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
12468         included.
12469         * gcc-plugin.h: Include config.h and system.h.
12470         (IN_GCC): Define if not defined.
12471
12472 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
12473
12474         PR middle-end/40249
12475         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
12476         with -fno-inline.
12477
12478 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
12479
12480         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
12481         applicable.
12482         * config/m32r/m32r.h: Ditto.
12483         * config/m32r/m32r.md: Ditto.
12484         * config/m32r/predicates.md: Ditto.
12485
12486 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
12487
12488         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
12489
12490 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
12491
12492         * doc/plugins.texi
12493         (Loading plugins): typo.
12494         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
12495         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12496         (Interacting with the GCC Garbage Collector): Added new section.
12497         (Giving information about a plugin): Added new section for
12498         PLUGIN_INFO.
12499         * ggc.h (ggc_register_root_tab): Added declaration.
12500         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
12501         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
12502         (register_callback): Improved comment in declaration.
12503         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
12504         (extra_root_vec) Added static variable for dynamic roots registration.
12505         (ggc_register_root_tab) Added new routine.
12506         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
12507         PLUGIN_GGC_MARKING event.
12508         * ggc-zone.c: Include plugin.h.
12509         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12510         * ggc-page.c: Include plugin.h.
12511         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12512         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
12513         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
12514         (register_callback): check lack of callbacks for
12515         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
12516         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
12517         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
12518         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12519         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
12520         dependency on plugin.h.
12521         (plugin.o): Added dependency on ggc.h...
12522
12523 2009-05-26  Richard Guenther  <rguenther@suse.de>
12524
12525         PR middle-end/40248
12526         Revert
12527         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
12528         with mismatched comparison modes.
12529
12530         * expr.c (expand_expr_real_1): Expand the operand of a
12531         VIEW_CONVERT_EXPR in its natural mode.
12532
12533 2009-05-26  Ian Lance Taylor  <iant@google.com>
12534
12535         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
12536         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
12537         (ALL_COMPILERFLAGS): Define.
12538         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
12539         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12540         (collect2$(exeext), collect2.o): Likewise.
12541         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
12542         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
12543         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
12544         (libbackend.o, intl.o, cppdefault.o): Likewise.
12545         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12546         (build/%.o): Use $(COMPILER_FOR_BUILD).
12547         (build/gen%$(build_exeext)): Likewise.
12548         (build/gcov-iov$(build_exeext)): LIkewise.
12549         * config/t-darwin (darwin.o): Use $(COMPILER).
12550         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
12551         * config/t-sol2 (sol2-c.o): Likewise.
12552         (sol2.o): Likewise.
12553         * config/t-vxworks (vxworks.o): Likewise.
12554         * config/x-darwin (host-darwin.o): Likewise.
12555         * config/x-hpux (host-hpux.o): Likewise.
12556         * config/x-linux (host-linux.o): Likewise.
12557         * config/x-solaris (host-solaris.o): Likewise.
12558         * config/alpha/x-alpha (driver-alpha.o): Likewise.
12559         * config/arm/t-arm (arm-c.o): Likewise.
12560         * config/arm/t-pe (pe.o): Likewise.
12561         * config/arm/t-wince-pe (pe.o): Likewise.
12562         * config/i386/t-cygming (winnt.o): Likewise.
12563         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
12564         * config/i386/t-cygwin (cygwin1.o): Likewise.
12565         (cygwin2.o): Likewise.
12566         * config/i386/t-i386 (i386-c.o): Likewise.
12567         * config/i386/t-interix (winnt.o): Likewise.
12568         * config/i386/t-netware (netware.o): Likewise.
12569         * config/i386/t-nwld (nwld.o): Likewise.
12570         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
12571         * config/i386/x-i386 (driver-i386.o): Likewise.
12572         * config/i386/x-cygwin (host-cygwin.o): Likewise.
12573         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
12574         * config/ia64/t-ia64 (ia64-c.o): Likewise.
12575         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
12576         * config/mips/x-native (driver-native.o): Likewise.
12577         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
12578         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
12579         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
12580         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
12581         * config/score/t-score-elf (score7.o): Likewise.
12582         (score3.o): Likewise.
12583         * config/sh/t-sh (sh-c.o): Likewise.
12584         * config/sh/t-symbian (sh-c.o): Likewise.
12585         (symbian.o): Likewise.
12586         * config/spu/t-spu-elf (spu-c.o): Likewise.
12587         * config/v850/t-v850 (v850-c.o): Likewise.
12588         * config/v850/t-v850e (v850-c.o): Likewise.
12589
12590 2009-05-26  Richard Guenther  <rguenther@suse.de>
12591
12592         PR tree-optimization/40122
12593         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
12594         VECTOR_CSTs if possible.
12595         (fold_gimple_assign): Likewise.
12596
12597 2009-05-26  Richard Guenther  <rguenther@suse.de>
12598
12599         PR middle-end/40252
12600         * fold-const.c (fold_binary): Use the correct types for building
12601         rotates.
12602
12603 2009-05-26  Richard Guenther  <rguenther@suse.de>
12604
12605         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
12606         redundant calls to merge_alias_info.
12607         (bump_vector_ptr): Likewise.
12608         * tree-ssa-copy.c (merge_alias_info): Remove.
12609         (replace_exp_1): Remove call to merge_alias_info.
12610         (propagate_tree_value): Likewise.
12611         (fini_copy_prop): Propagate points-to info.
12612         * tree-flow.h (merge_alias_info): Remove.
12613
12614 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
12615
12616         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
12617
12618 2009-05-25  Jan Hubicka  <jh@suse.cz>
12619
12620         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
12621         * cgraph.h (struct inline_summary): New filed self_wize,
12622         size_inlining_benefit, self_time and time_inlining_benefit.
12623         (struct cgraph_global_info): Replace insns by time ans size fields.
12624         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
12625         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
12626         (ipcp_update_callgraph): Do not touch function bodies.
12627         * ipa-inline.c: Include except.h
12628         (MAX_TIME): New constant.
12629         (overall_insns): Remove.
12630         (leaf_node_p): New.
12631         (overall_size, max_benefit): New static variables.
12632         (cgraph_estimate_time_after_inlining): New function.
12633         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
12634         (cgraph_clone_inlined_nodes): Update size.
12635         (cgraph_mark_inline_edge): Update size.
12636         (cgraph_estimate_growth): Use size info.
12637         (cgraph_check_inline_limits): Check size.
12638         (cgraph_default_inline_p): Likewise.
12639         (cgraph_edge_badness): Compute badness based on benefit and size cost.
12640         (cgraph_decide_recursive_inlining): Check size.
12641         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
12642         and times.
12643         (cgraph_decide_inlining): Likewise.
12644         (cgraph_decide_inlining_incrementally): Likewise; honor
12645         PARAM_EARLY_INLINING_INSNS.
12646         (likely_eliminated_by_inlining_p): New predicate.
12647         (estimate_function_body_sizes): New function.
12648         (compute_inline_parameters): Use it.
12649         * except.c (must_not_throw_labels): New function.
12650         * except.h (must_not_throw_labels): Declare.
12651         * tree-inline.c (init_inline_once): Kill inlining_weigths
12652         * tree-ssa-structalias.c: Avoid uninitialized warning.
12653         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
12654         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
12655         (PARAM_INLINE_CALL_COST): Remove.
12656         (PARAM_EARLY_INLINING_INSNS): New.
12657
12658 2009-05-25  Richard Guenther  <rguenther@suse.de>
12659
12660         PR tree-optimization/36327
12661         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
12662         callback for reference translation or lookup at the point of may-defs.
12663         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
12664         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
12665         for union COMPONENT_REFs.
12666         (vn_reference_lookup_3): New callback.  Lookup from memset
12667         and CONSTRUCTOR assignment, translate through struct copies.
12668         (vn_reference_lookup_pieces): Make sure to not free the
12669         passed operands array.  Adjust walk_non_aliased_vuses call.
12670         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
12671         make sure we do not leak memory.
12672
12673 2009-05-25  Richard Guenther  <rguenther@suse.de>
12674
12675         * tree-ssa-alias.h (dump_points_to_solution): Declare.
12676         * tree-inline.c (expand_call_inline): Reset the escaped and
12677         callused solutions.
12678         * tree-ssa-structalias.c (pass_build_ealias): New.
12679         * tree-pass.h (pass_build_ealias): Declare.
12680         * passes.c (init_optimization_passes): Add PTA during
12681         early optimizations.
12682         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
12683         and CALLUSED solutions.
12684         (dump_points_to_solution): New function, split out from ...
12685         (dump_points_to_info_for): ... here.
12686         * tree-parloops.c (parallelize_loops): Reset the escaped and
12687         callused solutions.
12688
12689 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12690
12691         PR bootstrap/40027
12692         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
12693         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
12694
12695 2009-05-25  Ira Rosen  <irar@il.ibm.com>
12696
12697         PR tree-optimization/40238
12698         * tree-vect-stmts.c (vect_init_vector): Insert initialization
12699         statements after basic block's labels.
12700         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
12701         to free the allocated memory.
12702
12703 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12704
12705         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
12706         return address with a USE.
12707
12708 2009-05-24  Richard Guenther  <rguenther@suse.de>
12709
12710         PR middle-end/40233
12711         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
12712         array type from the main variant of the inner type.
12713
12714 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12715
12716         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
12717         definition to bool (from int) to un-break build.
12718         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
12719
12720 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
12721
12722         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
12723         discard_stmt_changes): Delete.
12724         * tree-ssa-operands.c (scb_stack): Delete.
12725         (init_ssa_operands): Do not initialize it.
12726         (fini_ssa_operands): Do not free it.
12727         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
12728
12729         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
12730         update_stmt, remove the others.  Fix comments.
12731         * tree-dfa.c (optimize_stack_restore): Likewise.
12732         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
12733         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
12734         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
12735         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
12736         Likewise.
12737         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
12738         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
12739         (dom_opt_finalize_block): Likewise, adjusting access to
12740         stmts_to_rescan.
12741         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
12742         (stmts_to_rescan): Change item type to gimple.
12743         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
12744
12745 2009-05-24  Ira Rosen  <irar@il.ibm.com>
12746
12747         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
12748         * tree-pass.h (pass_slp_vectorize): New pass.
12749         * params.h (SLP_MAX_INSNS_IN_BB): Define.
12750         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
12751         * tree-vectorizer.c (timevar.h): Include.
12752         (user_vect_verbosity_level): Declare.
12753         (vect_location): Fix comment.
12754         (vect_set_verbosity_level): Update user_vect_verbosity_level
12755         instead of vect_verbosity_level.
12756         (vect_set_dump_settings): Add an argument. Ignore user defined
12757         verbosity if dump flags require higher level of verbosity. Print to
12758         stderr only for loop vectorization.
12759         (vectorize_loops): Update call to vect_set_dump_settings.
12760         (execute_vect_slp): New function.
12761         (gate_vect_slp): Likewise.
12762         (struct gimple_opt_pass pass_slp_vectorize): New.
12763         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
12764         access its members.
12765         (vec_info_for_bb): New function.
12766         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
12767         (VECTORIZATION_ENABLED): New macro.
12768         (SLP_ENABLED, SLP_DISABLED): Likewise.
12769         (vect_is_simple_use): Add bb_vec_info argument.
12770         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
12771         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
12772         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
12773         vect_schedule_slp, vect_analyze_slp): Likewise.
12774         (vect_analyze_stmt): Add slp_tree argument.
12775         (find_bb_location): Declare.
12776         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12777         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
12778         (vect_analyze_loop_operations, vect_analyze_loop,
12779         get_initial_def_for_induction, vect_create_epilog_for_reduction,
12780         vect_finalize_reduction, vectorizable_reduction,
12781         vectorizable_live_operation, vect_transform_loop): Likewise.
12782         * tree-data-ref.c (dr_analyze_innermost): Update comment,
12783         skip evolution analysis if analyzing a basic block.
12784         (dr_analyze_indices): Likewise.
12785         (initialize_data_dependence_relation): Skip the test whether the
12786         object is invariant for basic blocks.
12787         (compute_all_dependences): Skip dependence analysis for data
12788         references in basic blocks.
12789         (find_data_references_in_stmt): Don't fail in case of invariant
12790         access in basic block.
12791         (find_data_references_in_bb): New function.
12792         (find_data_references_in_loop): Move code to
12793         find_data_references_in_bb and add a call to it.
12794         (compute_data_dependences_for_bb): New function.
12795         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
12796         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
12797         that STEP is 0.
12798         (vect_analyze_data_ref_dependence): Check for interleaving in case of
12799         unknown dependence in basic block and fail in case of dependence in
12800         basic block.
12801         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
12802         dependence instances from either loop or basic block vectorization
12803         info.
12804         (vect_compute_data_ref_alignment): Check if it is loop vectorization
12805         before calling nested_in_vect_loop_p.
12806         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
12807         dependence instances from either loop or basic block vectorization
12808         info.
12809         (vect_verify_datarefs_alignment): Likewise.
12810         (vect_enhance_data_refs_alignment): Adjust function calls.
12811         (vect_analyze_data_refs_alignment): Likewise.
12812         (vect_analyze_group_access): Fix printing. Skip different checks if
12813         DR_STEP is 0. Keep strided stores either in loop or basic block
12814         vectorization data structure. Fix indentation.
12815         (vect_analyze_data_ref_access): Fix comments, allow zero step in
12816         basic blocks.
12817         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
12818         dependence instances from either loop or basic block vectorization
12819         info.
12820         (vect_analyze_data_refs): Update comment. Call
12821         compute_data_dependences_for_bb to analyze basic blocks.
12822         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
12823         case of loop vectorization. In case of basic block vectorization use
12824         data-ref itself as a base.
12825         (vect_create_data_ref_ptr): In case of basic block vectorization:
12826         don't advance the pointer, add new statements before the current
12827         statement.  Adjust function calls.
12828         (vect_supportable_dr_alignment): Support only aligned accesses in
12829         basic block vectorization.
12830         * common.opt (ftree-slp-vectorize): New flag.
12831         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
12832         (vect_pattern_recog_1): Likewise.
12833         * tree-vect-stmts.c (process_use): Likewise.
12834         (vect_init_vector): Add new statements in the beginning of the basic
12835         block in case of basic block SLP.
12836         (vect_get_vec_def_for_operand): Adjust function calls.
12837         (vect_finish_stmt_generation): Likewise.
12838         (vectorizable_call): Add assert that it is loop vectorization, adjust
12839         function calls.
12840         (vectorizable_conversion, vectorizable_assignment): Likewise.
12841         (vectorizable_operation): In case of basic block SLP, take
12842         vectorization factor from statement's type and skip the relevance
12843         check. Adjust function calls.
12844         (vectorizable_type_demotion): Add assert that it is loop
12845         vectorization, adjust function calls.
12846         (vectorizable_type_promotion): Likewise.
12847         (vectorizable_store): Check for outer loop only in case of loop
12848         vectorization. Adjust function calls. For basic blocks, skip the
12849         relevance check and don't advance pointers.
12850         (vectorizable_load): Likewise.
12851         (vectorizable_condition): Add assert that it is loop vectorization,
12852         adjust function calls.
12853         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
12854         that it is not reduction, get vector type, call only supported
12855         functions, skip loop specific parts.
12856         (vect_transform_stmt): Check for outer loop only in case of loop
12857         vectorization.
12858         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
12859         (vect_is_simple_use): Fix comment, add new argument, fix conditions
12860         for external definition.
12861         * passes.c (pass_slp_vectorize): New pass.
12862         * tree-vect-slp.c (find_bb_location): New function.
12863         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
12864         check for patterns only in loops.
12865         (vect_build_slp_tree): Add argument, adjust function calls, fail in
12866         case of multiple types in basic block SLP.
12867         (vect_mark_slp_stmts_relevant): New function.
12868         (vect_supported_load_permutation_p): Fix comment.
12869         (vect_analyze_slp_instance): Add argument. In case of basic block
12870         SLP, take vectorization factor from statement's type, check that
12871         unrolling factor is 1. Adjust function call. Save SLP instance in
12872         either loop or basic block vectorization structure. Return FALSE,
12873         if SLP failed.
12874         (vect_analyze_slp): Add argument. Get strided stores groups from
12875         either loop or basic block vectorization structure. Return FALSE
12876         if basic block SLP failed.
12877         (new_bb_vec_info): New function.
12878         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
12879         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
12880         (vect_schedule_slp): Add argument. Get SLP instances from either
12881         loop or basic block vectorization structure. Set vectorization factor
12882         to be 1 for basic block SLP.
12883         (vect_slp_transform_bb): New function.
12884         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
12885
12886 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
12887
12888         * final.c (shorten_branches): Do not align labels for jump tables.
12889         (final_scan_insn): Use JUMP_TABLE_DATA_P.
12890
12891 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
12892
12893         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
12894         Remove outdated reference to flow.c and fix nits.
12895         * doc/gccint.texi: Tweak RTL description.
12896         * doc/rtl.texi: Likewise.
12897
12898 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
12899
12900         * config/avr/avr.c: Change my email address.
12901         * config/avr/avr.h: Likewise.
12902         * config/avr/avr.md: Likewise.
12903         * config/avr/avr-protos.h: Likewise.
12904         * config/avr/libgcc.S: Likewise.
12905
12906 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
12907
12908         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
12909         (spu_split_load, spu_split_store): Change return type to int.
12910         (spu_split_convert): Declare.
12911         * config/spu/predicates.md (spu_mem_operand): Remove.
12912         (spu_mov_operand): Update.
12913         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
12914         * config/spu/spu.c (regno_aligned_for_load): Remove.
12915         (reg_aligned_for_addr, spu_expand_load): Define.
12916         (spu_expand_extv): Reimplement and handle MEM.
12917         (spu_expand_insv): Handle MEM.
12918         (spu_sched_reorder): Handle insn's with length 0.
12919         (spu_legitimate_address_p): Reimplement.
12920         (store_with_one_insn_p): Return TRUE for any mode with size
12921         larger than 16 bytes.
12922         (address_needs_split): Define.
12923         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
12924         operands.
12925         (spu_convert_move): Define.
12926         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
12927         (spu_split_store): Change all MEM's to TImode.
12928         (spu_init_expanders): Preallocate registers that correspond to
12929         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
12930         mark_reg_pointer.
12931         (spu_split_convert): Define.
12932         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
12933         (_move<mode>, _movdi, _movti): Update predicate and condition.
12934         (load, store): Change to define_split.
12935         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
12936         extend<mode>ti2.
12937         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
12938         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
12939         define_insn_and_split of lshr<mode>3.
12940         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
12941         (<v>ashr<mode>3_imm): Define.
12942         (extv, extzv, insv): Allow MEM operands.
12943         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
12944         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
12945         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
12946         (_spu_convert2): Change to define_insn_and_split and remove the
12947         corresponding define_peephole2.
12948         (stack_protect_set, stack_protect_test, stack_protect_test_si):
12949         Change predicates to memory_operand.
12950
12951 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
12952
12953         * config/arm/thumb2.md: Add 16-bit multiply instructions.
12954
12955 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12956
12957         PR tree-optimization/40219
12958         * tree.c (iterative_hash_expr): Make sure the builtin function is
12959         a normal builtin function and not a front end or back end builtin
12960         before indexing into the built_in_decls array.
12961
12962 2009-05-22  Richard Guenther  <rguenther@suse.de>
12963
12964         PR middle-end/38964
12965         * alias.c (write_dependence_p): Do not use TBAA for answering
12966         anti-dependence or output-dependence.
12967         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
12968         (emit_pointer_definition): Remove.
12969         (emit_alias_warning): Likewise.
12970         (find_what_var_points_to): Remove TBAA pruning code.
12971         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
12972         violations.
12973         (compute_points_to_sets): Remove code computing the set of
12974         dereferenced pointers.
12975         * tree-data-ref.c (dr_may_alias_p): Properly use the split
12976         oracle for querying anti and output dependencies.
12977         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
12978         if TBAA may be applied.
12979         (refs_anti_dependent_p): New function.
12980         (refs_output_dependent_p): Likewise.
12981         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
12982         (refs_output_dependent_p): Likewise.
12983         * doc/tree-ssa.texi (Memory model): New section.
12984         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
12985         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
12986         * cfgexpand.c (expand_gimple_basic_block): Do not handle
12987         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
12988         * expr.c (expand_expr_real_1): Likewise.
12989         * gimple-low.c (lower_stmt): Likewise.
12990         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
12991         (dump_gimple_cdt): Remove.
12992         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
12993         (gimple_size): Likewise.
12994         (walk_gimple_op): Likewise.
12995         (is_gimple_stmt): Likewise.
12996         (walk_stmt_load_store_addr_ops): Likewise.
12997         (gimple_build_cdt): Remove.
12998         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
12999         * gimple.h (gimple_cdt_new_type): Remove.
13000         (gimple_cdt_new_type_ptr): Likewise.
13001         (gimple_cdt_set_new_type): Likewise.
13002         (gimple_cdt_location): Likewise.
13003         (gimple_cdt_location_ptr): Likewise.
13004         (gimple_cdt_set_location): Likewise.
13005         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13006         * tree-cfg.c (remove_useless_stmts_1): Do not handle
13007         GIMPLE_CHANGE_DYNAMIC_TYPE.
13008         (verify_types_in_gimple_stmt): Likewise.
13009         * tree-inline.c (estimate_num_insns): Likewise.
13010         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13011         (copy_decl_to_var): Likewise.
13012         (copy_result_decl_to_var): Likewise.
13013         * tree-pretty-print.c (dump_generic_node): Do not handle
13014         CHANGE_DYNAMIC_TYPE_EXPR.
13015         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13016         * tree-ssa-operands.c (get_expr_operands): Likewise.
13017         * tree-ssa-structalias.c (struct variable_info): Remove
13018         no_tbaa_pruning member.
13019         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13020         (unify_nodes): Do not copy it.
13021         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13022         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13023         (set_uids_in_ptset): Do not check it.
13024         (find_what_var_points_to): Likewise.
13025         (compute_tbaa_pruning): Remove.
13026         (compute_points_to_sets): Do not call it.
13027         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13028         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13029         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
13030         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
13031         (DECL_NO_TBAA_P): Likewise.
13032         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
13033         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
13034         (expand_omp_atomic_pipeline): Do not set it.
13035         * print-tree.c (print_node): Do not dump it.
13036         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13037         redundant check.
13038
13039 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
13040
13041         PR target/39856
13042         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
13043         for clobber.
13044
13045 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13046
13047         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
13048         non-external.
13049
13050 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13051
13052         * Makefile.in (bversion.h, s-bversion): New targets.
13053         (TOPLEV_H): Add bversion.h.
13054         * toplev.h: Include "bversion.h".
13055         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
13056         the __format__ attribute only if compiling with the same version
13057         of GCC as the sources (the "build version").
13058
13059 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13060
13061         * c-format.c (handle_format_attribute): Fix comment typo.
13062
13063 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
13064
13065         PR target/37846
13066         * config/ia64/ia64.opt (mfused-madd): New.
13067         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
13068         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
13069         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
13070         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
13071         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
13072         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
13073         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
13074         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
13075         instruction if !TARGET_FUSED_MADD.
13076         (fpma, fpms): Remove colon from name.
13077
13078 2009-05-22  Richard Guenther  <rguenther@suse.de>
13079
13080         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
13081         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
13082         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13083         TARGET_MEM_REF.
13084         (create_expression_by_pieces): Only convert if necessary.
13085         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13086         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13087
13088 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
13089
13090         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13091         regular pattern from a template and rename it ...
13092         (*extzv_truncsi_exts): ... to this.
13093
13094 2009-05-21  Richard Guenther  <rguenther@suse.de>
13095
13096         * cgraph.h (struct cgraph_node): Remove inline_decl member.
13097         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13098         (cgraph_default_inline_p): Likewise.
13099         (cgraph_decide_inlining_incrementally): Likewise.
13100
13101 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13102             Uros Bizjak  <ubizjak@gmail.com>
13103
13104         * config/i386/cpuid.h (bit_MOVBE): New.
13105
13106         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13107
13108         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13109         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13110         (ix86_handle_option): Handle OPT_mmovbe.
13111         (ix86_target_string): Add -mmovbe.
13112         (pta_flags): Add PTA_MOVBE.
13113         (processor_alias_table): Add PTA_MOVBE to "atom".
13114         (override_options): Handle PTA_MOVBE.
13115
13116         * config/i386/i386.h (TARGET_MOVBE): New.
13117
13118         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13119         (*bswapsi_movbe): New.
13120         (*bswapdi_movbe): Likewise.
13121         (bswapdi2): Renamed to ...
13122         (*bswapdi_1): This.
13123         (bswapdi2): New expander.
13124
13125         * config/i386/i386.opt (mmovbe): New.
13126
13127         * doc/invoke.texi: Document -mmovbe.
13128
13129 2009-05-21  Taras Glek  <tglek@mozilla.com>
13130
13131         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13132         * gcc-plugin.h (plugin_init): Updated signature.
13133         * gcc-plugin.h (plugin_name_args): Moved to this header.
13134         * doc/plugins.texi (plugin_init): Updated documention to reflect
13135         API change.
13136         * doc/plugins.texi (plugin_name_args): Added to documention.
13137
13138 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
13139
13140         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13141         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13142
13143 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
13144
13145         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13146         JUMP_TABLE_DATA_P predicates where applicable.
13147         * config/i386/predicates.md: Ditto.
13148         * config/i386/sse.md: Ditto.
13149
13150 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
13151
13152         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13153         operand2 -128 override length_immediate attribute to 1.
13154         * config/i386/predicates.md (constm128_operand): New predicate.
13155
13156         * config/i386/i386.c (memory_address_length): Handle %r12
13157         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
13158         also check REGNO.
13159         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13160         mode look through optional ZERO_EXTEND and SUBREG.
13161         * config/i386/i386.md (R12_REG): New define_constant.
13162         (prefix_data16): For sse unit set also for MODE_TI insns.
13163         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
13164         insns set if operand 1 is ext_QIreg_operand.
13165         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
13166         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13167         immediate.
13168         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13169         mode from MODE_DI to MODE_SI.
13170         (movdi_1_rex64): Override modrm and length_immediate attributes
13171         only for movabs (TYPE_IMOV, alternative 2).
13172         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13173         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13174         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13175         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13176         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13177         prefix_rex attribute if DImode.
13178         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13179         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13180         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13181         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13182         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13183         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13184         Likewise.  For TYPE_IMOV clear length_immediate attribute.
13185         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13186         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13187         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13188         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13189         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13190         or one operand TYPE_ISHIFT.
13191         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13192         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13193         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13194         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13195         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13196         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13197         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13198         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13199         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13200         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13201         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13202         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13203         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13204         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13205         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13206         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13207         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13208         set mode attribute, don't override length attribute.
13209         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13210         to 1.
13211         (return_internal_long): Set length attribute to 2 instead of 1.
13212         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13213         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13214         prefix_rex attribute.
13215         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13216         New predicates.
13217         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13218
13219 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13220
13221         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13222
13223 2009-05-20  Ian Lance Taylor  <iant@google.com>
13224
13225         * tree.c (build_tree_list_vec_stat): New function.
13226         (ctor_to_vec): New function.
13227         (build_nt_call_vec): New function.
13228         (build_call_array): Change args to be a const pointer.
13229         (build_call_vec): New function.
13230         * tree.h (build_nt_call_vec): Declare.
13231         (build_tree_list_vec_stat): Declare.
13232         (build_tree_list_vec): Define.
13233         (build_call_array): Update declaration.
13234         (build_call_vec): Declare.
13235         (ctor_to_vec): Declare.
13236         * c-common.c (tree_vector_cache): New static variable.
13237         (make_tree_vector): New function.
13238         (release_tree_vector): New function.
13239         (make_tree_vector_single): New function.
13240         (make_tree_vector_copy): New function.
13241         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13242         (make_tree_vector_single, make_tree_vector_copy): Declare.
13243         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13244         (c_parser_expr_list): Don't manage cache here, instead call
13245         make_tree_vector.
13246         (c_parser_release_expr_list): Remove static function.
13247         (c_parser_vec_to_tree_list): Remove static function.
13248         (c_parser_attributes): Call build_tree_list_vec instead of
13249         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
13250         c_parser_release_expr_list.
13251         (c_parser_postfix_expression_after_primary): Likewise.
13252         (c_parser_objc_keywordexpr): Likewise.
13253
13254 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13255
13256         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
13257         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
13258         TARGET_CONVERT_TO_TYPE.
13259         * hooks.c (hook_tree_const_tree_null): Define.
13260         * hooks.h (hook_tree_const_tree_null): Declare.
13261         * target.h (struct gcc_target):  Add invalid_parameter_type,
13262         invalid_return_type, promoted_type, and convert_to_type fields.
13263         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
13264         (TARGET_INVALID_RETURN_TYPE): Define.
13265         (TARGET_PROMOTED_TYPE): Define.
13266         (TARGET_CONVERT_TO_TYPE): Define.
13267         (TARGET_INITIALIZER): Update for new fields.
13268         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
13269         (grokparms): Check targetm.invalid_parameter_type.
13270         * c-typeck.c (default_conversion): Check targetm.promoted_type.
13271         * c-convert.c (convert): Check targetm.convert_to_type.
13272
13273 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
13274
13275         * config/mips/mips.md (*extenddi_truncate<mode>,
13276         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
13277         defintions.
13278         (*extendhi_truncateqi): New define_insn_and_sptit.
13279
13280 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
13281
13282         PR middle-end/40204
13283         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
13284         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
13285
13286 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
13287
13288         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
13289         the operand of VIEW_CONVERT_EXPR.
13290
13291 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13292
13293         * config/i386/driver-i386.c (host_detect_local_cpu): Check
13294         extended family and model for Intel processors.  Support Intel Atom.
13295
13296 2009-05-20  Olivier Hainque  <hainque@adacore.com>
13297
13298         * gstab.h (stab_code_type): Define, to be used instead of the
13299         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
13300         notice.
13301         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
13302         occurrences by stab_code_type.
13303         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
13304
13305 2009-05-20  Martin Jambor  <mjambor@suse.cz>
13306
13307         * tree-flow.h (insert_edge_copies_seq): Undeclare.
13308         (sra_insert_before): Likewise.
13309         (sra_insert_after): Likewise.
13310         (sra_init_cache): Likewise.
13311         (sra_type_can_be_decomposed_p): Likewise.
13312         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
13313         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
13314         (sra_insert_before): Likewise.
13315         (sra_insert_after): Likewise.
13316         (sra_init_cache): Likewise.
13317         (insert_edge_copies_seq): Made static and moved upwards.
13318
13319         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
13320         case.
13321
13322         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
13323
13324         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
13325         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
13326         simple copies.
13327
13328 2009-05-20  Richard Guenther  <rguenther@suse.de>
13329
13330         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13331         with mismatched comparison modes.
13332
13333 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13334
13335         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
13336         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
13337         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
13338         with shifts for Thumb2.
13339         (orsi_notsi): New for orn.
13340         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
13341         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
13342         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
13343         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
13344         Don't invert remainder for IOR.
13345
13346 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
13347
13348         PR tree-optimization/40087
13349         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
13350         number_of_iterations_ne): Rename never_infinite argument.
13351         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
13352         number_of_iterations_le): Handle pointer-type ivs when
13353         exit_must_be_taken is false.
13354         (number_of_iterations_cond):  Do not always assume that
13355         exit_must_be_taken if the control variable is a pointer.
13356
13357 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13358
13359         * c-typeck.c (build_binary_op): Allow % on integal vectors.
13360         * doc/extend.texi (Vector Extension): Document that % is allowed too.
13361
13362 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13363
13364         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
13365         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
13366
13367 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13368
13369         PR c/40172
13370         * c.opt (Wlogical-op): Disabled by default.
13371         * c-opt (c_common_post_options): Do not enable Wlogical-op with
13372         Wextra.
13373         * doc/invoke.texi (Wlogical-op): Likewise.
13374
13375 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
13376
13377         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
13378         into CASE_CONVERT.
13379         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
13380         Propagate the type of the first operand.
13381         <ASSERT_EXPR>: Simplify.
13382         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
13383         Rewrite using the RHS code as discriminant.
13384         <NOP_EXPR>: Turn into CASE_CONVERT.
13385         <PLUS_EXPR>: Propagate the type of the first operand.
13386
13387 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
13388
13389         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
13390         (ia64_dconst_0_375): New.
13391         * config/ia64/ia64.c (ia64_override_options): Remove
13392         -minline-sqrt-min-latency warning.
13393         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
13394         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
13395         * config/ia64/ia64.md (*sqrt_approx): Remove.
13396         (sqrtsf2): Remove #if 0.
13397         (sqrtsf2_internal_thr): Rewrite and move to div.md.
13398         (sqrtdf): Remove assert.
13399         (sqrtdf2_internal_thr): Rewrite and move to div.md.
13400         (sqrtxf2): Remove #if 0.
13401         (sqrtxf2_internal_thr): Rewrite and move to div.md.
13402         * div.md (sqrt_approx_rf): New.
13403         (sqrtsf2_internal_thr): New implementation.
13404         (sqrtsf2_internal_lat): New.
13405         (sqrtdf2_internal_thr: New implementation.
13406         (sqrtxf2_internal): New implementation.
13407
13408 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13409             Hans-Peter Nilsson  <hp@axis.com>
13410
13411         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
13412         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
13413         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
13414         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
13415         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
13416         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
13417         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
13418         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
13419         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
13420         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
13421         * c-common.c: ...from here.
13422
13423 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13424
13425         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
13426
13427 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13428
13429         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
13430
13431 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13432
13433         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
13434         assignments with memcpy calls.
13435         (add_fdes): Likewise.
13436         (binary_search_unencoded_fdes): Likewise.
13437         (linear_search_fdes): Eliminate type puns.
13438
13439 2009-05-19  Richard Guenther  <rguenther@suse.de>
13440
13441         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
13442         not falsely claim to have propagated into all uses.
13443
13444 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13445
13446         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
13447         version to v3.0.
13448
13449 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13450
13451         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
13452         * config/sh/sh.c (sh_legitimate_address_p): Make static.
13453         (TARGET_LEGITIMATE_ADDRESS_P): New.
13454         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13455         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13456
13457 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
13458
13459         PR debug/40109
13460         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
13461         child of the containing namespace's DIE.
13462
13463 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
13464
13465         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
13466         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
13467         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
13468         extend patterns.
13469
13470 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
13471
13472         PR target/39942
13473         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
13474         gen_align with gen_pad.
13475         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
13476         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
13477
13478         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
13479         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
13480
13481         * config/i386/i386.md (align): Renamed to ...
13482         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
13483         ASM_OUTPUT_MAX_SKIP_PAD.
13484
13485 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
13486
13487         * config.gcc: Fix variable syntax.
13488
13489         PR target/39531
13490         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
13491         before calling exact_log2.
13492         (output_iorsi3): Likewise.
13493         (output_xorsi3): Likewise.
13494
13495 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13496
13497         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
13498         for the none zero constant operand except for EQ and NE
13499         comprisons even when the first operand is R0.
13500
13501 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
13502
13503         * config/s390/2064.md: Remove trailing whitespaces.
13504         * config/s390/2084.md: Likewise.
13505         * config/s390/constraints.md: Likewise.
13506         * config/s390/fixdfdi.h: Likewise.
13507         * config/s390/libgcc-glibc.ver: Likewise.
13508         * config/s390/s390-modes.def: Likewise.
13509         * config/s390/s390-protos.h: Likewise.
13510         * config/s390/s390.c: Likewise.
13511         * config/s390/s390.h: Likewise.
13512         * config/s390/s390.md: Likewise.
13513         * config/s390/tpf-unwind.h: Likewise.
13514
13515 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13516
13517         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
13518
13519 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13520
13521         M68K TLS support.
13522         * configure.ac (m68k-*-*): Check if binutils support TLS.
13523         * configure: Regenerate.
13524         * config/m68k/predicates.md (symbolic_operand): Extend comment.
13525         * config/m68k/constraints.md (Cu): New constraint.
13526         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
13527         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
13528         (movsi): Handle TLS symbols.
13529         (addsi3_5200): Handle XTLS symbols, indent.
13530         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
13531         (m68k_tls_reference_p): Declare.
13532         (m68k_legitimize_address): Declare.
13533         (m68k_unwrap_symbol): Declare.
13534         * config/m68k/m68k.opt (mxtls): New option.
13535         * config/m68k/m68k.c (ggc.h): Include.
13536         (m68k_output_dwarf_dtprel): Implement hook.
13537         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
13538         (m68k_expand_prologue): Load GOT pointer when function needs it.
13539         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
13540         (m68k_legitimate_constant_address_p): Same.
13541         (m68k_decompose_address): Handle TLS references.
13542         (m68k_get_gp): New static function.
13543         (enum m68k_reloc): New contants.
13544         (TLS_RELOC_P): New macro.
13545         (m68k_wrap_symbol): New static function.
13546         (m68k_unwrap_symbol): New function.
13547         (m68k_final_prescan_insn_1): New static function.
13548         (m68k_final_prescan_insn): New function.
13549         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
13550         functions.
13551         (legitimize_pic_address): Handle TLS references..
13552         (m68k_tls_get_addr, m68k_get_tls_get_addr)
13553         (m68k_libcall_value_in_a0_p)
13554         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
13555         (m68k_call_m68k_read_tp): Helper variables and functions for ...
13556         (m68k_legitimize_tls_address): Handle TLS references.
13557         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
13558         New functions.
13559         (m68k_legitimize_address): Handle TLS symbols.
13560         (m68k_get_reloc_decoration): New static function.
13561         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
13562         UNSPEC_RELOC32.
13563         (m68k_output_dwarf_dtprel): Implement hook.
13564         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
13565         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
13566         m68k_call_* routines.
13567         (sched_attr_op_type): Handle TLS symbols.
13568         (gt-m68k.h): Include.
13569         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
13570         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
13571
13572 2009-05-18  Martin Jambor  <mjambor@suse.cz>
13573
13574         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
13575         (visit_store_addr_for_mod_analysis): New function.
13576         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
13577         (determine_cst_member_ptr): Use gimple_assign_single_p.
13578         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
13579         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
13580         operands.  Don't check number of operands of a NOP_EXPR.
13581
13582 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
13583
13584         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
13585
13586 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13587
13588         PR c/40172
13589         * c-common.c (warn_logical_operator): Don't warn if one of
13590         expression isn't always true or false.
13591
13592 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
13593
13594         * config/i386/biarch32.h: New file.
13595         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
13596
13597 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
13598
13599         * config/mips/mips.md (*zero_extend<mode>_trunchi,
13600         *zero_extend<mode>_truncqi): Merge these into ...
13601         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
13602         Name the pattern following this as *zero_extendhi_truncqi.
13603
13604 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
13605
13606         PR middle-end/39301
13607         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
13608         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
13609         (output_info): Make field HOST_WIDEST_INT.
13610         (print_statistics): Use HOST_WIDEST_INT_PRINT.
13611         (dump_bitmat_statistics): Same.
13612
13613 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13614
13615         * config.gcc (use_gcc_stdint):  Set to wrap.
13616         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
13617         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
13618         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13619         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13620         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13621         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13622         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13623         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13624
13625 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
13626
13627         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
13628         tune_64.
13629         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
13630         Move definitions earlier.
13631         (OPT_ARCH64, OPT_ARCH32): Define.
13632         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
13633         and tune_64.
13634
13635 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13636
13637         PR target/40153
13638         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
13639         implies.
13640
13641 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13642
13643         * arm.md (movdi2): Copy non-reg values to DImode registers.
13644
13645 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
13646
13647         PR target/39942
13648         * final.c (label_to_max_skip): New function.
13649         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
13650         CODE_LABEL_NUMBER <= max_labelno.
13651         * output.h (label_to_max_skip): New prototype.
13652         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
13653         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
13654         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
13655         Handle CODE_LABELs with >= 16 byte alignment or with
13656         max_skip == (1 << align) - 1.
13657         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
13658         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
13659
13660         PR target/39942
13661         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
13662         .p2align 3 if MAX_SKIP is smaller than 7.
13663         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
13664
13665 2009-05-15  Ian Lance Taylor  <iant@google.com>
13666
13667         * alias.c (struct alias_set_entry_d): Rename from struct
13668         alias_set_entry.  Change all uses.
13669         * except.c (struct call_site_record_d): Rename from struct
13670         call_site_record.  Change all uses.
13671         * except.h (struct eh_region_d): Rename from struct eh_region.
13672         Change all uses.
13673         * gcse.c (struct hash_table_d): Rename from struct hash_table.
13674         Change all uses.
13675         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
13676         ivtype_map_elt.  Change all uses.
13677         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
13678         Change all uses.
13679         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
13680         * graphite.h (struct name_tree_d): Rename from struct name_tree.
13681         Change all uses.
13682         (struct sese_d): Rename from struct sese.  Change all uses.
13683         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
13684         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
13685         * optabs.h (struct optab_d): Rename from struct optab.  Change all
13686         uses.
13687         (struct convert_optab_d): Rename from struct convert_optab.
13688         Change all uses.
13689         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
13690         ipa_opt_pass.  Change all uses.
13691         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
13692         all uses.
13693
13694         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
13695         defined as a typedef.
13696         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
13697         defined as a tag.
13698
13699 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13700
13701         PR 16302
13702         * fold-const.c (make_range,build_range_check,merge_ranges): Move
13703         declaration to...
13704         (merge_ranges): Returns bool.
13705         * tree.h (make_range): .. to here.
13706         (build_range_check): Likewise.
13707         (merge_ranges): Likewise. Renamed from merge_ranges.
13708         * c-typeck.c (parser_build_binary_op): Update calls to
13709         warn_logical_operator.
13710         * c-common.c (warn_logical_operator): Add new warning.
13711         * c-common.h (warn_logical_operator): Update declaration.
13712
13713 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13714
13715         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
13716
13717 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13718
13719         * doc/install.texi: Document MPC requirements, flags etc.
13720
13721         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
13722         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
13723         Evaluate constant arguments.
13724         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
13725         (fold_builtin_1): Likewise, also evaluate constant arguments.
13726         Remove superfluous break.
13727         (do_mpc_ckconv): New.
13728         * real.h: Include mpc.h.
13729         * toplev.c (print_version): Output MPC version info if available.
13730
13731 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13732
13733         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
13734
13735 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
13736
13737         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
13738         only once.
13739
13740 2009-05-15  Jan Hubicka  <jh@suse.cz>
13741
13742         * doc/invoke.texi (max-early-inliner-iterations): New flag.
13743         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
13744         (try_inline): Fix return value.
13745         (cgraph_decide_inlining_incrementally): Honor new value.
13746         (cgraph_early_inlining): Handle indirect inlining.
13747         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
13748
13749 2009-05-15  Jan Hubicka  <jh@suse.cz>
13750
13751         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
13752         * cgraphunit.c (cgraph_finalize_function): Set it.
13753         (cgraph_expand_function): Use it.
13754
13755 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13756
13757         * real.c (encode_ieee_half): Define.
13758         (decode_ieee_half): Define.
13759         (ieee_half_format): Define.
13760         (arm_half_format): Define.
13761         * real.h (ieee_half_format): Declare.
13762         (arm_half_format): Declare.
13763
13764 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13765
13766         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
13767         swapped, and reversed optabs exist before trying to use them.
13768
13769 2009-05-15  Paul Brook  <paul@codesourcery.com>
13770             Sandra Loosemore  <sandra@codesourcery.com>
13771
13772         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
13773         loads.  Allow PRE_DEC.
13774         (output_move_neon): Handle PRE_DEC.
13775         (arm_print_operand): Add 'A' for neon structure loads.
13776         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
13777         * config/arm/neon.md (neon_mov): Update comment.
13778         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
13779         calls.
13780         (Um): New constraint.
13781
13782 2009-05-15  Jan Hubicka  <jh@suse.cz>
13783
13784         Revert the following patch until testsuite fallout is fixed:
13785         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13786         * cgraph.h (struct inline_summary): New filed self_wize,
13787         size_inlining_benefit, self_time and time_inlining_benefit.
13788         (struct cgraph_global_info): Replace insns by time ans size fields.
13789         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13790         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13791         (ipcp_update_callgraph): Do not touch function bodies.
13792         * ipa-inline.c: Include except.h
13793         (MAX_TIME): New constant.
13794         (overall_insns): Remove
13795         (overall_size, max_benefit): New static variables.
13796         (cgraph_estimate_time_after_inlining): New function.
13797         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13798         (cgraph_clone_inlined_nodes): Update size.
13799         (cgraph_mark_inline_edge): Update size.
13800         (cgraph_estimate_growth): Use size info.
13801         (cgraph_check_inline_limits): Check size.
13802         (cgraph_default_inline_p): Likewise.
13803         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13804         (cgraph_decide_recursive_inlining): Check size.
13805         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13806         and times.
13807         (cgraph_decide_inlining): Likewise.
13808         (cgraph_decide_inlining_incrementally): Likewise; honor
13809         PARAM_EARLY_INLINING_INSNS.
13810         (likely_eliminated_by_inlining_p): New predicate.
13811         (estimate_function_body_sizes): New function.
13812         (compute_inline_parameters): Use it.
13813         * except.c (must_not_throw_labels): New function.
13814         * except.h (must_not_throw_labels): Declare.
13815         * tree-inline.c (init_inline_once): Kill inlining_weigths
13816         * tree-ssa-structalias.c: Avoid uninitialized warning.
13817         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13818         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13819         (PARAM_INLINE_CALL_COST): Remove.
13820         (PARAM_EARLY_INLINING_INSNS): New.
13821
13822 2009-05-15  Richard Guenther  <rguenther@suse.de>
13823
13824         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
13825         not TODO_update_ssa.
13826
13827 2009-05-15  Richard Guenther  <rguenther@suse.de>
13828
13829         PR tree-optimization/39999
13830         * gimple.h (gimple_expr_type): Use the expression type looking
13831         through useless conversions.
13832         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
13833         (vn_nary_op_insert_stmt): Likewise.
13834         (simplify_binary_expression): Likewise.
13835
13836 2009-05-15  Richard Guenther  <rguenther@suse.de>
13837
13838         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
13839         New options, enabled by default.
13840         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
13841         Document.
13842         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
13843         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
13844         * tree-ssa-structalias.c (gate_tree_pta): New function.
13845         (pass_build_alias): Use it.
13846
13847 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
13848
13849         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
13850         recurse on an invariant address if a conversion from a pointer
13851         type to a wider integer type is involved.
13852
13853 2009-05-15  Jan Hubicka  <jh@suse.cz>
13854
13855         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13856         * cgraph.h (struct inline_summary): New filed self_wize,
13857         size_inlining_benefit, self_time and time_inlining_benefit.
13858         (struct cgraph_global_info): Replace insns by time ans size fields.
13859         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13860         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13861         (ipcp_update_callgraph): Do not touch function bodies.
13862         * ipa-inline.c: Include except.h
13863         (MAX_TIME): New constant.
13864         (overall_insns): Remove
13865         (overall_size, max_benefit): New static variables.
13866         (cgraph_estimate_time_after_inlining): New function.
13867         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13868         (cgraph_clone_inlined_nodes): Update size.
13869         (cgraph_mark_inline_edge): Update size.
13870         (cgraph_estimate_growth): Use size info.
13871         (cgraph_check_inline_limits): Check size.
13872         (cgraph_default_inline_p): Likewise.
13873         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13874         (cgraph_decide_recursive_inlining): Check size.
13875         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13876         and times.
13877         (cgraph_decide_inlining): Likewise.
13878         (cgraph_decide_inlining_incrementally): Likewise; honor
13879         PARAM_EARLY_INLINING_INSNS.
13880         (likely_eliminated_by_inlining_p): New predicate.
13881         (estimate_function_body_sizes): New function.
13882         (compute_inline_parameters): Use it.
13883         * except.c (must_not_throw_labels): New function.
13884         * except.h (must_not_throw_labels): Declare.
13885         * tree-inline.c (init_inline_once): Kill inlining_weigths
13886         * tree-ssa-structalias.c: Avoid uninitialized warning.
13887         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13888         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13889         (PARAM_INLINE_CALL_COST): Remove.
13890         (PARAM_EARLY_INLINING_INSNS): New.
13891         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
13892         (inline-call-cost): Remove.
13893         (early-inlining-insns): New.
13894
13895 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
13896
13897         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
13898         for bounds.
13899         (print_int_cst_bounds_in_octal_p): Likewise.
13900         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
13901         with subtypes.
13902         * dwarf2out.c (base_type_die): Likewise.
13903         (is_subrange_type): Delete.
13904         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
13905         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
13906         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
13907         if the destination type is boolean.
13908         (build_range_check): Do not special-case subtypes.
13909         (fold_sign_changed_comparison): Likewise.
13910         (fold_unary): Likewise.
13911         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
13912         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
13913         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
13914         * tree.c (subrange_type_for_debug_p): New predicate based on the
13915         former is_subrange_type.
13916         * tree.h (subrange_type_for_debug_p): Declare.
13917         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
13918         (convert_affine_scev): Remove call to above function.
13919         (chrec_convert_aggressive): Likewise.
13920         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
13921         false for conversions involving subtypes.
13922         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
13923         (vrp_val_min): Likewise.
13924         (needs_overflow_infinity): Likewise.
13925         (extract_range_from_unary_expr): Likewise.
13926
13927 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
13928
13929         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13930         * config/frv/frv.c: Likewise.
13931         * config/s390/s390.c: Likewise.
13932         * config/sparc/sparc.h: Likewise.
13933         * config/i386/i386.h: Likewise.
13934         * config/i386/i386.c: Likewise.
13935         * config/crx/crx.c: Likewise.
13936         * config/m68hc11/m68hc11.h: Likewise.
13937         * config/iq2000/iq2000.c: Likewise.
13938         * config/mn10300/mn10300.h: Likewise.
13939         * config/mn10300/mn10300.c: Likewise.
13940         * config/m68k/m68k.c: Likewise.
13941         * config/rs6000/rs6000.c: Likewise.
13942         * config/rs6000/xcoff.h: Likewise.
13943         * config/rs6000/linux64.h: Likewise.
13944         * config/rs6000/sysv4.h: Likewise.
13945         * config/score/score3.c: Likewise.
13946         * config/score/score7.c: Likewise.
13947         * config/score/score.c: Likewise.
13948         * config/arm/arm.md: Likewise.
13949         * config/mips/mips.c: Likewise.
13950         * config/mips/mips.md: Likewise.
13951         * config/bfin/bfin.h: Likewise.
13952         * config/pa/pa.c: Likewise.
13953         * config/pa/constraints.md: Likewise.
13954
13955         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
13956         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
13957         * config/pdp11/pdp11.h: Use memory_address_p instead.
13958
13959 2009-05-14  Ian Lance Taylor  <iant@google.com>
13960
13961         * passes.c (finish_optimization_passes): Change i to int.
13962         * plugin.c (plugins_active_p): Change event to int.
13963         (dump_active_plugins): Likewise.
13964         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
13965         Add cast.
13966         * tree.c (tree_range_check_failed): Change c to unsigned int.
13967         (omp_clause_range_check_failed): Likewise.
13968         (build_common_builtin_nodes): Change mode to int.  Add cast.
13969         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
13970         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
13971
13972         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
13973         ++ or -- with a variable of enum type.
13974
13975 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13976
13977         PR driver/40144
13978         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
13979
13980 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13981
13982         * store-motion.c: Do not include params.h
13983         * Makefile.in: Fix dependencies for various files.
13984
13985 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
13986
13987         * auto-inc-dec.c: Fix pass description, remove apparent
13988         accidental duplication.
13989
13990 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
13991
13992         PR middle-end/40147
13993         * ipa-utils.h (memory_identifier_string): Moved to ...
13994         * tree.h (memory_identifier_string): Here.  Add GTY(()).
13995
13996 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
13997
13998         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
13999         in the former documentation of...
14000         (GO_IF_LEGITIMATE_ADDRESS): ... this.
14001         * ira-conflicts.c (get_dup_num): Use address_operand.
14002         * targhooks.c (default_legitimate_address_p): New.
14003         * targhooks.h (default_legitimate_address_p): New.
14004         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14005         Call hook.
14006         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14007         * target.h (struct target): Add legitimate_address_p.
14008         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14009         (TARGET_INITIALIZER): Include it.
14010
14011         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14012         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14013         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14014         (TARGET_LEGITIMATE_ADDRESS_P): New.
14015
14016         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14017         (REG_OK_STRICT_P): Delete.
14018         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14019         (frv_legitimate_address_p_1): ... this.
14020         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14021         (frv_legitimate_address_p_1): ... the renamed old
14022         frv_legitimate_address_p.
14023         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
14024         (TARGET_LEGITIMATE_ADDRESS_P): New.
14025
14026         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14027         * config/s390/s390-protos.h (legitimate_address_p): Remove.
14028         * config/s390/s390.c (legitimate_address_p): Rename to...
14029         (s390_legitimate_address_p): ... this, make static.
14030         (legitimize_address): Adjust call.
14031         (TARGET_LEGITIMATE_ADDRESS_P): New.
14032         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
14033
14034         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14035         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
14036         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
14037         (TARGET_LEGITIMATE_ADDRESS_P): New.
14038
14039         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14040         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
14041         * config/spu/spu.c (spu_legitimate_address): Rename to...
14042         (spu_legitimate_address_p): ... this, make static.
14043         (TARGET_LEGITIMATE_ADDRESS_P): New.
14044
14045         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14046         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
14047         * config/sparc/sparc.c (legitimate_address_p): Rename to...
14048         (sparc_legitimate_address_p): ... this, make static and return bool.
14049         (legitimize_address): Adjust call.
14050         (TARGET_LEGITIMATE_ADDRESS_P): New.
14051
14052         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14053         * config/i386/i386-protos.h (legitimate_address_p): Remove.
14054         * config/i386/i386.c (legitimate_address_p): Rename to...
14055         (ix86_legitimate_address_p): ... this, make static.
14056         (constant_address_p): Move after it, adjust call.
14057         (TARGET_LEGITIMATE_ADDRESS_P): New.
14058
14059         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14060         * config/avr/avr-protos.h (legitimate_address_p): Remove.
14061         * config/avr/avr.c (legitimate_address_p): Rename to...
14062         (avr_legitimate_address_p): ... this, make static.
14063         (legitimize_address): Adjust call.
14064         (TARGET_LEGITIMATE_ADDRESS_P): New.
14065
14066         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14067         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
14068         * config/crx/crx.c (crx_legitimate_address_p): Make static.
14069         (TARGET_LEGITIMATE_ADDRESS_P): New.
14070
14071         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14072         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
14073         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
14074         (TARGET_LEGITIMATE_ADDRESS_P): New.
14075
14076         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14077         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
14078         Remove.
14079         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
14080         Make static.
14081         (TARGET_LEGITIMATE_ADDRESS_P): New.
14082
14083         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14084         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14085         Remove.
14086         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14087         Rename to...
14088         (m68hc11_legitimate_address_p): ... this, make static.
14089         (go_if_legitimate_address_internal): Rename to...
14090         (m68hc11_legitimate_address_p_1): ... this.
14091         (legitimize_address): Adjust call.
14092         (TARGET_LEGITIMATE_ADDRESS_P): New.
14093
14094         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14095         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14096         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14097         (TARGET_LEGITIMATE_ADDRESS_P): New.
14098
14099         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14100         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14101         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14102         (mn10300_legitimate_address_p): ... this, make static.
14103         (TARGET_LEGITIMATE_ADDRESS_P): New.
14104
14105         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14106         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14107         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14108         (TARGET_LEGITIMATE_ADDRESS_P): New.
14109
14110         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14111         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14112         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14113         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14114         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14115         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14116         (rs6000_legitimate_address_p): ... this, make static.
14117         (TARGET_LEGITIMATE_ADDRESS_P): New.
14118         (REG_MODE_OK_FOR_BASE_P): Delete.
14119         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14120
14121         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14122         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14123         Delete.
14124         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14125         static, adjust types.
14126         (TARGET_LEGITIMATE_ADDRESS_P): New.
14127
14128         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14129         * config/score/score.c (score_address_p): Rename to...
14130         (score_legitimate_address_p): ... this.
14131         (TARGET_LEGITIMATE_ADDRESS_P): New.
14132         * config/score/score3.c (score3_address_p): Rename to...
14133         (score3_legitimate_address_p): ... this.
14134         * config/score/score7.c (score7_address_p): Rename to...
14135         (score7_legitimate_address_p): ... this.
14136
14137         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14138         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14139         GO_IF_LEGITIMATE_ADDRESS): Delete.
14140         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14141         thumb2_legitimate_address_p): Delete.
14142         (arm_legitimate_address_p): Rename to...
14143         (arm_legitimate_address_outer_p): ... this.
14144         * config/arm/constraints.md ("Uq"): Adjust call.
14145         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14146         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14147         to...
14148         (arm_legitimate_address_outer_p): ... this.
14149         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14150         static.
14151         (TARGET_LEGITIMATE_ADDRESS_P): New.
14152
14153         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14154         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14155         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14156         (TARGET_LEGITIMATE_ADDRESS_P): New.
14157
14158         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14159         * config/vax/vax-protos.h (legitimate_address_p): Remove.
14160         * config/vax/vax.c (legitimate_address_p): Rename to...
14161         (vax_legitimate_address_p): ... this, make static.
14162         (TARGET_LEGITIMATE_ADDRESS_P): New.
14163
14164         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14165         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14166         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14167         (TARGET_LEGITIMATE_ADDRESS_P): New.
14168
14169         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14170         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14171         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14172         (mmix_legitimate_address_p): ... this, make static.
14173         (TARGET_LEGITIMATE_ADDRESS_P): New.
14174
14175         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14176         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14177         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14178         (TARGET_LEGITIMATE_ADDRESS_P): New.
14179
14180 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14181
14182         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14183         of MODE_COMPLEX_INT.
14184
14185 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14186
14187         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14188         LCT_NORMAL in function call.
14189         * mips-tdump.c (print_file_desc): Add cast to enum type.
14190         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14191         (mark_stabs): Add casts to enum types.
14192         (parse_stabs_common): Add casts to enum types.
14193
14194 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14195
14196         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14197         Check for invalid values of LETTER.
14198
14199 2009-05-13  Taras Glek  <tglek@mozilla.com>
14200
14201         * attribs.c (register_attribute): moved out attribute registration
14202         into register_attribute.
14203         * doc/plugins.texi: Documented register_attribute and
14204         PLUGIN_ATTRIBUTES.
14205         * gcc-plugin.h: Added forward decl for register_attribute.
14206         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14207         * plugin.c (register_callback, invoke_plugin_callbacks): Added
14208         PLUGIN_ATTRIBUTES boilerplate.
14209
14210 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
14211
14212         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
14213         values even in sentinel and empty entries.
14214         (ms_printf_flag_specs):  Likewise.
14215         (ms_scanf_flag_specs):  Likewise.
14216         (ms_strftime_flag_specs):  Likewise.
14217         (ms_print_char_table):  Likewise.
14218         (ms_scan_char_table):  Likewise.
14219         (ms_time_char_table):  Likewise.
14220
14221 2009-05-13  Doug Kwan  <dougkwan@google.com>
14222
14223         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14224
14225 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14226
14227         * config/mips/mips.md (store): Add attributes for QI and HI.
14228         Update comment.
14229         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14230         (truncdi<mode>2): ... this new pattern.
14231
14232 2009-05-13  Brad Hards  <bradh@kde.org>
14233
14234         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14235
14236 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
14237             Ben Elliston <bje@au.ibm.com>
14238
14239         PR middle-end/40035
14240         * dse.c (check_mem_read_rtx): Guard against width == -1.
14241
14242 2009-05-13  Michael Matz  <matz@suse.de>
14243
14244         PR middle-end/39976
14245         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14246         (trivially_conflicts_p): New function.
14247         (insert_backedge_copies): Use it.
14248
14249 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
14250
14251         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
14252         (handle_stdc_pragma): Use new enum constant names.
14253         (handle_pragma_float_const_decimal64): Ditto.
14254
14255 2009-05-13  Ian Lance Taylor  <iant@google.com>
14256
14257         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
14258         tree.def.
14259
14260 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
14261
14262         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
14263         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
14264         multilibs.
14265         * config/m68k/m68k.h (FL_UCLINUX): Define.
14266
14267 2009-05-13  Jan Hubicka  <jh@suse.cz>
14268
14269         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
14270
14271 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14272
14273         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
14274         unless -fschedule-insns is specified.
14275
14276 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14277
14278         PR target/39561
14279         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
14280         TARGET_EXPAND_CBRANCHDI4.
14281         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
14282         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
14283         (cmpeqdi): Fix comment.
14284
14285 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14286
14287         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
14288         (sh_legitimate_address_p): Likewise.
14289         * config/sh/sh.c (sh_legitimate_index_p): New.
14290         (sh_legitimate_address_p): Likewise.
14291         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
14292         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
14293         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
14294         (MAYBE_BASE_REGISTER_RTX_P): New macro.
14295         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14296         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
14297         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
14298         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
14299         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
14300
14301 2009-05-12  Jan Hubicka  <jh@suse.cz>
14302
14303         * tree-inline.c (estimate_operator_cost): Add operands;
14304         when division happens by constant, it is cheap.
14305         (estimate_num_insns): Loads and stores are not having cost of 0;
14306         EH magic stuff is cheap; when computing runtime cost of switch,
14307         use log2 base of amount of its cases; builtin_expect has cost of 0;
14308         compute cost for moving return value of call.
14309         (init_inline_once): Initialize time_based flags.
14310         * tree-inline.h (eni_weights_d): Add time_based flag.
14311
14312 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14313
14314         * df-core.c: Update head documentation.
14315
14316 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
14317
14318         PR bootstrap/40118
14319         * rs6000.c (rs6000_generate_compare): Use op1b instead of
14320         shadowing exisiting variable op1.
14321
14322 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
14323
14324         PR target/37179
14325         * config/i386/driver-i386.c (processor_signatures): New enum.
14326         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
14327         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
14328         processor signature to detect geode processor.
14329
14330 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14331
14332         Revert:
14333
14334         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14335
14336         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14337         causes spurious differences between trunk and cond-optab branch.
14338
14339 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14340
14341         * dojump.c (compare_from_rtx): Delete.
14342         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
14343         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
14344         if the comparison does not satisfy the predicate; test predicates for
14345         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
14346         further if one existing pattern fails.
14347         * expr.h (compare_from_rtx): Delete.
14348         (prepare_operand): Declare it.
14349         * optabs.c: Change "lib call" to "libcall" throughout.
14350         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
14351         HAVE_conditional_trap, emit_cmp_insn): Delete.
14352         (can_compare_p): Delete cmp_optab case.
14353         (prepare_float_lib_cmp): Return an rtx and a machine mode.
14354         Accept other parameters by value.
14355         (prepare_operand): Make non-static.
14356         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
14357         other parameters by value.  Try to widen operands here based on
14358         an optab_methods argument and looking at cbranch_optab.
14359         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
14360         loop.  Use cbranch_optab directly.
14361         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
14362         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
14363         assertion.
14364         (emit_conditional_move, emit_conditional_add): Inline what's needed
14365         of compare_from_rtx, using new prepare_cmp_insn for the rest.
14366         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
14367         with COMPARE.  Move cmov_optab and cstore_optab above
14368         with cbranch_optab, move cmp_optab down with ucmp_optab,
14369         remove tst_otpab.  Do not initialize trap_rtx.
14370         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
14371         for trap code.  Do not check HAVE_conditional_trap.  Use
14372         prepare_cmp_insn.  Accept no predicate for operand 3.
14373         * optabs.h (OTI_cmp): Mark as used only for libcalls.
14374         (OTI_ctrap, ctrap_optab): New.
14375         (tst_optab): Delete.
14376         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
14377         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
14378         with lookup of ctrap_optab.
14379         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
14380         Delete.
14381         (ctrap_optab): New.
14382
14383         * combine.c (combine_simplify_rtx, simplify_set): Do not
14384         special case comparing against zero for cc0 machines.
14385         * simplify-rtx.c (simplify_binary_operation_1): Never remove
14386         COMPARE on cc0 machines.
14387         (simplify_relational_operation): Return a new expression when
14388         a COMPARE could be removed.
14389         * final.c (final_scan_insn): Compare cc_status values
14390         against LHS of a (compare FOO (const_int 0)) cc0 source.
14391         Also check if cc_status.value is the full compare.
14392
14393         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
14394         (cstoreMM4): Document.
14395         (conditional_trap): Document ctrapMM4 instead.
14396         (sync_compare_and_swapMM): Refer to cbranchcc4.
14397         (Dependent Patterns): Eliminate obsolete information referring to
14398         the old jump optimization phase.
14399         (Canonicalization): Include cbranchcc4 case, omit canonicalization
14400         of compares with 0 on cc0 machines.
14401         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
14402         avoiding references to cc0.  Remove text about storing operands
14403         in cmpMM.
14404         * doc/tm.texi (Condition Codes): Include blurb on different
14405         condition code representations, separate into subsections for
14406         CC0, MODE_CC and conditional execution.
14407
14408         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
14409         alpha_emit_setcc): Accept operands and a machine mode.
14410         * config/alpha/alpha.c (alpha_emit_conditional_branch):
14411         Get code/op0/op1 from operands, use machine mode argument
14412         instead of alpha_compare.fp_p.  Emit the branch here.
14413         (alpha_emit_setcc): Likewise, and return boolean.
14414         (alpha_emit_conditional_move): Likewise.  Assert that
14415         cmp_op_mode == cmp_mode, and simplify accordingly.
14416         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
14417         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
14418         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
14419         Delete.
14420         (stack probe test): Use cbranchdi4.
14421         * config/alpha/predicates.md (alpha_cbranch_operator): New.
14422
14423         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
14424         * config/arc/arc.h (movsicc, movsfcc): Use it.
14425         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
14426         (cbranchsi4, cstoresi4): New.
14427         (cmpsi, bCC and sCC expanders): Remove.
14428
14429         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
14430         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
14431         * config/arm/predicates.md (arm_comparison_operator): Only include
14432         floating-point operators if there is a hardware floating-point unit.
14433         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
14434         deferring to cbranch_cc and cstore_cc respectively.
14435         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
14436         cbranch_cc, cstore_cc): New.
14437         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
14438         arm_compare_op1.
14439         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
14440
14441         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
14442         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
14443         as an argument.
14444         (adjust_insn_length): Adjust calls.
14445         (avr_reorg): Handle (compare (foo) (const_int 0)).
14446         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
14447         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
14448         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
14449         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
14450         (bCC): Remove.
14451         (cbranchqi4, cbranchhi4, cbranchsi4): New.
14452         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
14453
14454         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
14455         (cbranchsi4, cstorebi4, cstoresi4): New.
14456         (movbisi): This insn is duplicate, split it to zero_extend.
14457         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
14458         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
14459         (bfin_optimize_loop): Use cbranch expander.
14460         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
14461         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
14462         (bfin_bimode_comparison_operator): ... this.
14463         (bfin_direct_comparison_operator): New.
14464
14465         * config/cris/cris.c (cris_normal_notice_update_cc): Look
14466         inside (compare FOO (const_int 0)).
14467         (cris_rtx_costs): Handle ZERO_EXTRACT.
14468         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
14469         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
14470         (*tstdi_v32): Delete.
14471         (*cmpdi_non_v32): Add M alternative for operand 1.
14472         (cmpsi, cmp<mode>): Make private.
14473         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
14474         with COMPARE.
14475         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
14476
14477         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
14478         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
14479         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
14480         (cc_reg_operand): New.
14481         (any_cond): Delete.
14482         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
14483         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
14484         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
14485         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
14486         crx_expand_scond): Delete.
14487
14488         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
14489         (cbranchsi4): New.
14490         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
14491         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
14492
14493         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
14494         cstoresi4, cstoresf4, cstoredf4): New.
14495         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
14496         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14497         Receive the entire operands array.
14498         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
14499         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
14500         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14501         Get test/op0/op1 from the operands array.
14502         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
14503
14504         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
14505         (h8300_expand_store): New.
14506         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
14507         (const_int 0)).
14508         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
14509         (h8300_expand_store): New.
14510         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
14511         or do not try to produce (set (cc0) REG).
14512         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
14513         change a compare into a move to a scratch register.  Disable some
14514         peepholes when comparing with zero.
14515         (tstsi, tsthi, tstsi, cmpqi): Make private.
14516         (cmphi): Delete.
14517         (bCC, sCC): Delete.
14518         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
14519         cstoresi4): New.
14520
14521         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
14522         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
14523         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
14524         (ix86_emit_i387_log1p): Use cbranchxf2.
14525         (ix86_expand_setcc): Return void.
14526         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
14527         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
14528         cmp<MODEF>, cmpcc): Remove.
14529         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
14530         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
14531         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
14532         (sCC and bCC expanders): Remove.
14533         (stack_protect_test): Use cbranchcc4.
14534
14535         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
14536         Delete.
14537         (ia64_expand_compare): Accept three rtx by reference and return void.
14538         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
14539         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
14540         from *expr.  Update *expr with the BImode comparison to do.
14541         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
14542         cmptf, bCC, sCC, conditional_trap): Delete.
14543         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
14544         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
14545         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
14546         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
14547         * config/ia64/predicates.md (ia64_cbranch_operator): New.
14548
14549         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
14550         type of last argument.
14551         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
14552         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
14553         use machine mode argument instead of branch_type.  Remove dead
14554         code for floating-point comparisons.
14555         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
14556         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
14557         Remove.
14558         (cbranchsi4, cstoresi4): New.
14559         * config/iq2000/predicates.md (reg_or_const_operand): New.
14560
14561         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
14562         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
14563         (b<code>_op): Rewrite to...
14564         (bcc_op): ... this, using match_operator.
14565         (s<code>_op): Rewrite to...
14566         (scc_op): ... this, using match_operator.
14567         (s<code>_24_op): Rewrite to...
14568         (scc_op_24): ... this, using match_operator.
14569         (s<code>_<mode>): Rewrite to...
14570         (cstore<mode>4): ... this, using match_operator.
14571         (s<code>_<mode>_24): Rewrite to...
14572         (cstore<mode>4_24): ... this, using match_operator.
14573         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
14574         m32c_unpend_compare, m32c_expand_scc): Delete.
14575         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
14576         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
14577         (m32c_expand_movcc): Change NE to EQ if necessary.
14578         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
14579
14580         * config/m32r/m32r-protos.h (gen_cond_store): New.
14581         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
14582         (gen_cond_store): New, from sCC patterns.
14583         (m32r_expand_block_move): Use cbranchsi4.
14584         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
14585         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
14586         (cbranchsi4, cstoresi4): New.
14587
14588         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
14589         Delete.
14590         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
14591         (m68hc11_notice_update_cc): Look into a compare with 0.
14592         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
14593         Delete.
14594         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
14595         cmphi, cmpqi, bCC): Delete.
14596         (cbranchsi4, cbranchhi4, cbranchqi4): New.
14597         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
14598         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
14599         sets with COMPARE.
14600
14601         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
14602         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
14603         * config/m68k/constraints.md (H): New.
14604         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
14605         the define_insn below.
14606         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
14607         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
14608         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
14609         patterns): Wrap RHS with COMPARE.
14610         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
14611         (*cmpdi_internal): Name this pattern.
14612         (cmpdi): Change to define_insn.
14613         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
14614         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
14615         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
14616         predicate.
14617         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
14618         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
14619         (conditional_trap): Change to...
14620         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
14621         (*conditional_trap): Use the ordered_comparison_operator and
14622         const1_operand predicates.
14623         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
14624         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
14625         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
14626         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
14627
14628         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
14629         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
14630         (mcore_gen_compare): New.
14631         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
14632         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
14633         (mcore_gen_compare): ... this.
14634         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
14635         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
14636         (stack probe pattern): Use cbranchsi4.
14637
14638         * config/mips/predicates.md (mips_cstore_operator): New.
14639         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
14640         * config/mips/mips.md (any_cond): Delete.
14641         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
14642         always succeed.
14643         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
14644         fixuns_truncsfdi2): Use cbranch patterns.
14645         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
14646         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
14647         Adjust call to mips_expand_conditional_branch.
14648         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
14649         cstore<GPR:mode>4.
14650         * config/mips/mips-protos.h (mips_expand_conditional_branch,
14651         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
14652         * config/mips/mips.c (cmp_operands): Delete.
14653         (mips_emit_compare): Get comparison operands from *op0/*op1.
14654         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
14655         that it succeeds.  Use op0/op1 instead of cmp_operands.
14656         (mips_expand_conditional_branch, mips_expand_conditional_move,
14657         mips_expand_conditional_trap): Likewise.
14658         (mips_block_move_loop): Use cbranch patterns.
14659         * config/mips/mips.h (cmp_operands): Delete.
14660
14661         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
14662         (mmix_gen_compare_reg): Just return a register in the right CC mode.
14663         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
14664         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
14665         (*cmpcc_folded): Rename to...
14666         (*cmpdi_folded): this.
14667         (*cmpcc): Rename to...
14668         (*cmps): ... this.
14669         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
14670         (bCC): Remove.
14671         (cbranchdi4): New.
14672         (cbranchdf4): New.  Handle invalid comparisons here.
14673         * config/mmix/predicates.md (float_comparison_operator): New.
14674
14675         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
14676         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
14677         * config/mn10300/mn10300.md (tst): Delete.
14678         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
14679         Name these patterns and wrap RHS in a compare.
14680         (*cmpsi): Make this pattern private.  Include tst.
14681         (*cmpsf): Make this pattern private.
14682         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
14683         (compare with zero peepholes): Likewise.
14684         (bCC): Remove.
14685         (cbranchsi4, cbranchsf4): New.
14686         (casesi): Use cbranchsi4.
14687
14688         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
14689         hppa_branch_type): Delete.
14690         (return_addr_rtx): Use cbranchsi4.
14691         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
14692         Emit CCFPmode comparison here.
14693         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
14694         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
14695         hppa_branch_type): Delete.
14696         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
14697         (movsicc, movdicc): Remove references to hppa_compare_op0,
14698         hppa_compare_op1 and compare_from_rtx.
14699         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
14700         (casesi): Use cbranchsi4.
14701
14702         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
14703         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
14704         * config/pdp11/pdp11.md (register_or_const0_operand): New.
14705         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
14706         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
14707         (bCC): Delete.
14708         (cbranchdf4, cbranchhi4, cbranchqi4): New.
14709         (*branch, *branch_inverted): New.
14710
14711         * config/picochip/picochip.md (cbranchhi4): Use
14712         ordered_comparison_operator.
14713         (cmphi, bCC): Remove.
14714
14715         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
14716         (trap_comparison_operator): Delete.
14717         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
14718         rs6000_emit_cbranch): Accept mode and operands.
14719         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
14720         rs6000_compare_fp_p): Delete.
14721         (rs6000_generate_compare): Accept mode and comparison.  Extract code
14722         and op0/op1 from there.  Replace references to rs6000_compare_op0
14723         and rs6000_compare_op1.
14724         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
14725         extract result from passed operands.
14726         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
14727         extract loc from passed operands.
14728         (rs6000_emit_cmove): Likewise.
14729         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
14730         rs6000_compare_fp_p): Delete.
14731         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
14732         (cbranch<GPR>4, cbranch<FP>4): New.
14733         (cstore<mode>4): New.  Consolidate here all choices about when to use
14734         portable or specialized sCC sequences.
14735         (stack_protect_test): Use cbranchsi4.
14736         (conditional_trap): Replace with ctrap<GPR>4.
14737         (conditional trap insn): Replace trap_comparison_operator with
14738         ordered_comparison_operator.
14739
14740         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
14741         (s390_emit_prologue): Use ctrap.
14742         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
14743         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
14744         New predicates replacing...
14745         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
14746         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
14747         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
14748         (add<mode>cc): Do not use s390_compare_op0/op1.
14749         (s<code>): Change to...
14750         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
14751         (seq): Change to...
14752         (cstorecc4): ... this.  Handle EQ or NE equally.
14753         (*sne): Un-privatize for use in cstorecc4.
14754         (b<code>): Change to...
14755         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
14756         (conditional_trap): Replace with...
14757         (ctrap<GPR>4, ctrap<FP>4): ... these.
14758         (stack_protect): Use cbranchcc4.
14759
14760         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
14761         * config/score/score-protos.h (score_gen_cmp): Delete.
14762         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
14763         (score_block_move-loop): Use cbranchsi4.
14764         * config/score/score.md (cbranchsi4): New.
14765         (cmpsi, bCC): Delete.
14766         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
14767         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
14768         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
14769         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
14770         * config/score/score3.h (score3_gen_cmp): Delete.
14771         * config/score/score7.h (score7_gen_cmp): Delete.
14772
14773         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
14774         (sh_emit_scc_to_t): ... this.  Return void.
14775         (from_compare): Rename to...
14776         (sh_emit_compare_and_branch): ... this.
14777         (sh_emit_compare_and_set): New.
14778         (sh_expand_t_scc): Accept operands.
14779         * config/sh/predicates.md (sh_float_comparison_operator): New.
14780         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
14781         (prepare_scc_operands): Rename to...
14782         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
14783         arguments.
14784         (sh_emit_cheap_store_flag): New.
14785         (sh_emit_set_t_insn): New.
14786         (from_compare): Rename to...
14787         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
14788         handling of TARGET_SH2E floating point to avoid recursive call.
14789         Generate branch here.
14790         (sh_emit_compare_and_set): New.
14791         (sh_expand_t_scc): Get op0/op1 from arguments.
14792         (sh_emit_cheap_store_flag): New.
14793         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
14794         cases.
14795         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
14796         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
14797         (movsicc, movdicc): Do nothing when it recreated operands from
14798         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
14799         prepare_scc_operands (now sh_emit_scc_to_t).
14800         (udivdi3): Use cstoresi4.
14801         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
14802         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
14803         (cbranchint4_media, cbranchfp4_media): New.
14804         (casesi): Use cbranchdi4.
14805         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
14806         Delete.
14807         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
14808         (movnegt): Remove second operand.
14809         (cbranchsf4, cbranchdf4): New.
14810         (stack_protect): Use cbranchdi4/cbranchsi4.
14811
14812         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
14813         (gen_compare_reg): Accept comparison, extract part of it to...
14814         (gen_compare_reg_1): ... this.
14815         (gen_compare_operator): Delete.
14816         (gen_v9_scc): Accept separate destination, comparison code and arms.
14817         Do not use sparc_compare_op0/sparc_compare_op1.
14818         (emit_scc_insn, emit_conditional_branch_insn): New.
14819         (emit_v9_brxx): Make static.  Remove useless assertion.
14820         (sparc_emit_float_lib_cmp): Return RTL instead of calling
14821         emit_cmp_insn.
14822         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
14823         * config/sparc/sparc-protos.h (gen_compare_reg,
14824         sparc_emit_float_lib_cmp): Adjust prototype.
14825         (emit_scc_insn, emit_conditional_branch_insn): New.
14826         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
14827         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
14828         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
14829         iterators to the top.
14830         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
14831         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
14832         snedi_special_trunc): Delete.
14833         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
14834         and snedi_special_trunc.
14835         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
14836         cbranchdi4, cbranch<F:mode>4): New.
14837         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
14838         here.  Use gen_compare_reg instead of gen_compare_operator.
14839         (conditional_trap): Replace with...
14840         (ctrapsi4, ctrapdi4): ... this.
14841         (stack_protect_test): Use cbranchcc4.
14842
14843         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
14844         argument to rtx.
14845         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
14846         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
14847         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
14848         from operands[0] or operands[3] depending on is_set.
14849         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
14850         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
14851         cmpdf, bCC), sCC: Remove.
14852         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
14853         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
14854         cstoredf4): New.
14855         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
14856         spu_emit_branch_or_set.
14857
14858         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
14859         Add two arguments.
14860         * config/stormy16/stormy16.h (xstormy16_compare_op0,
14861         xstormy16_compare_op1): Delete.
14862         * config/stormy16/stormy16.c (xstormy16_compare_op0,
14863         xstormy16_compare_op1): Delete.
14864         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
14865         Adjust calls.
14866         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
14867         (cmphi, cmpsi, bCC): Remove.
14868
14869         * config/v850/v850.md (tstsi, cmpsi): Fold into...
14870         (*cmpsi): ... this one.
14871         (cbranchsi4, cstoresi4): New.
14872         (bCC expanders): Delete.
14873         (sCC insns): Fold into...
14874         (*setcc): ... this one.
14875         (casesi): Do not use gen_cmpsi and gen_bgtu.
14876         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
14877         (movsicc): Simplify.
14878         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
14879
14880         * config/vax/vax-protos.h (cond_name): New.
14881         (vax_output_conditional_branch): Remove.
14882         * config/vax/vax.c (cond_name): New.
14883         (vax_output_conditional_branch): Remove.
14884         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
14885         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
14886         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
14887         (bit<VAXint>): Wrap source with (compare).
14888         (b<code> and following unnamed pattern): Rename to *branch and
14889         *branch_reversed.  Change macroization to match_operator.
14890         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
14891
14892         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
14893         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
14894         Change last argument to machine_mode.
14895         (xtensa_expand_scc): Add machine_mode argument.
14896         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
14897         (gen_conditional_move, xtensa_expand_conditional_branch,
14898         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
14899         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
14900         Adjust operand numbers.
14901         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
14902         Delete.
14903         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
14904         (cmpsi, cmpsf, b<code>, s<code>): Delete.
14905         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
14906
14907 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14908
14909         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14910         causes spurious differences between trunk and cond-optab branch.
14911
14912 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
14913
14914         PR target/37137
14915         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
14916
14917 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
14918
14919         * tree.c (iterative_hash_pointer): Delete.
14920         (iterative_hash_expr): Short-circuit handling of NULL pointer.
14921         Hash UIDs and versions of SSA names.  Don't special-case built-in
14922         function declarations.
14923
14924 2009-05-11  Ian Lance Taylor  <iant@google.com>
14925
14926         PR bootstrap/40103
14927         * graphite.c: Force -Wc++-compat to only be a warning before
14928         #including "cloog/cloog.h".
14929
14930 2009-05-11  Martin Jambor  <mjambor@suse.cz>
14931
14932         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
14933
14934 2009-05-11  Jan Hubicka  <jh@suse.cz>
14935
14936         * tree-ssa-loop-ivcanon.c: Include target.h
14937         (struct loop_size): new structure.
14938         (constant_after_peeling): New predicate.
14939         (tree_estimate_loop_size): New function.
14940         (estimated_unrolled_size): Rewrite for new estimates.
14941         (try_unroll_loop_completely): Use new estimates.
14942         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
14943
14944 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14945
14946         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
14947         libcpp interface change.
14948         (spu_macro_to_expand): Likewise.
14949
14950 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
14951
14952         PR tree-optimization/40026
14953         * gimplify.c (gimplify_init_constructor): Change initial conditional
14954         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
14955         optimize_compound_literals_in_ctor.
14956
14957 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
14958
14959         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
14960         New devices.
14961         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
14962
14963 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
14964
14965         * tree-vect-data-refs.c (vect_analyze_group_access): Use
14966         HOST_WIDE_INT for gap.
14967
14968 2009-05-11  Ira Rosen  <irar@il.ibm.com>
14969
14970         PR tree-optimization/40074
14971         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
14972         account in group size and step comparison.
14973
14974 2009-05-11  Richard Guenther  <rguenther@suse.de>
14975
14976         * passes.c (init_optimization_passes): Strip now incorrect comment.
14977         (execute_function_todo): Do not set PROP_alias.
14978         * tree-pass.h (PROP_alias): Remove.
14979         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
14980         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
14981         * tree-nrv.c (pass_return_slot): Likewise.
14982         * tree-object-size.c (pass_object_sizes): Likewise.
14983         * tree-ssa-dom.c (pass_dominator): Likewise.
14984         (pass_phi_only_cprop): Likewise.
14985         * tree-ssa-dse.c (pass_dse): Likewise.
14986         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
14987         (pass_cselim): Likewise.
14988         * tree-ssa-pre.c (pass_pre): Likewise.
14989         (pass_fre): Likewise.
14990         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
14991         * tree-ssa-sink.c (pass_sink_code): Likewise.
14992         * tree-stdarg.c (pass_stdarg): Likewise.
14993         * tree-tailcall.c (pass_tail_calls): Likewise.
14994         * tree-vrp.c (pass_vrp): Likewise.
14995
14996 2009-05-10  Ian Lance Taylor  <iant@google.com>
14997
14998         * basic-block.h (enum profile_status): Break out of struct
14999         control_flow_graph.
15000         * cgraph.h (struct inline_summary): Break out of struct
15001         cgraph_local_info.
15002         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15003         of struct cgraph_order_sort.
15004         * combine.c (enum undo_kind): New enum, broken out of struct undo.
15005         * cse.c (struct branch_path): Break out of struct
15006         cse_basic_block_data.
15007         * except.h (enum eh_region_type): Break out of struct eh_region.
15008         * gcc.c (enum add_del): Break out of struct modify_target.
15009         * genrecog.c (enum decision_type): Break out of struct decision_test.
15010         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15011         ggc_pch_data.
15012         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15013         * regmove.c (enum match_use): New enum, broken out of struct match.
15014         * sched-int.h (enum post_call_group): New enum, broken out of
15015         struct deps.
15016         (struct deps_reg): Break out of struct deps.
15017         * target.h (struct asm_int_op): Break out of struct gcc_target.
15018         * tree-eh.c (struct goto_queue_node): Break out of struct
15019         leh_tf_state.
15020         * tree-inline.h (enum copy_body_cge_which): Break out of
15021         copy_body_data.
15022         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15023
15024         * c-decl.c (in_struct, struct_types): New static variables.
15025         (pushtag): Add loc parameter.  Change all callers.
15026         (lookup_tag): Add ploc parameter.  Change all callers.
15027         (check_compound_literal_type): New function.
15028         (parser_xref_tag): Add loc parameter.  Change all callers.  If
15029         -Wc++-compat, warn about struct/union/enum types defined within a
15030         struct or union.
15031         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
15032         and loc parameters.  Change all callers.  Change error calls to
15033         error_at, using loc.  For a redefinition, if the location of the
15034         original definition is known, report it.  Set in_struct and
15035         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
15036         (finish_struct): Add new parameters enclosing_in_struct and
15037         enclosing_struct_types.  Change all callers.  Set
15038         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
15039         in the struct.  If in a struct, add this struct to struct_types.
15040         (start_enum): Add loc parameter.  Change all callers.  Use
15041         error_at for errors, using loc.  For a redefinition, if the
15042         location of the original definition is known, report it.  If in a
15043         struct, add this enum type to struct_types.  If -Wc++-compat warn
15044         if in sizeof, typeof, or alignof.
15045         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
15046         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
15047         (c_parser_enum_specifier): Get enum location for start_enum.
15048         (c_parser_struct_or_union_specifier): Get struct location for
15049         start_struct.  Save in_struct and struct_types status between
15050         start_struct and finish_struct.
15051         (c_parser_cast_expression): Get location of cast.
15052         (c_parser_alignof_expression): Get location of type.
15053         (c_parser_postfix_expression): Likewise.
15054         (c_parser_postfix_expression_after_paren_type): Add type_loc
15055         parameter.  Change all callers.  Call check_compound_literal_type.
15056         Use type_loc for error about variable size type.
15057         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
15058         of an enum constant from an enum type defined in a struct or union.
15059         (c_cast_expr): Add loc parameter.  Change all callers.  If
15060         -Wc++-compat, warn about defining a type in a cast.
15061         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
15062         (start_enum, start_struct, finish_struct): Update declarations.
15063         (parser_xref_tag, c_cast_expr): Update declarations.
15064         (check_compound_literal_type): Declare.
15065
15066 2009-05-11  Ben Elliston  <bje@au.ibm.com>
15067
15068         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
15069         for recent libcpp interface change.
15070         (rs6000_macro_to_expand): Likewise.
15071
15072 2009-05-10  Michael Matz  <matz@suse.de>
15073
15074         PR target/40031
15075         * config/arm/arm.c (require_pic_register): Emit on entry edge,
15076         not at entry of function.
15077
15078 2009-05-10  Richard Guenther  <rguenther@suse.de>
15079
15080         PR tree-optimization/40081
15081         Revert
15082         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15083         using the main variant of the element type.  Do not fiddle with
15084         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15085
15086         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15087         structs with volatile fields.
15088
15089 2009-05-10  Jan Hubicka  <jh@suse.cz>
15090
15091         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15092         (estimate_move_cost): Assert that it does not get called for
15093         VOID_TYPE_P.
15094         (estimate_num_insns): Skip VOID types in argument handling.
15095         (optimize_inline_calls): Delete unreachable blocks and verify that
15096         callgraph is valid.
15097
15098 2009-05-10  Jan Hubicka  <jh@suse.cz>
15099
15100         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15101         * cgraph.c (cgraph_mark_address_taken_node): New function.
15102         (dump_cgraph_node): Dump new flag.
15103         * cgraph.h (struct cgraph_node): Add address_taken.
15104         (cgraph_mark_address_taken_node): New function.
15105         * ipa.c (cgraph_postorder): Prioritize functions with address taken
15106         since new direct calls can be born.
15107
15108 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15109
15110         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15111         tok->val.node.node.
15112
15113 2009-05-10  Jan Hubicka  <jh@suse.cz>
15114
15115         PR middle-end/40084
15116         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15117         argument; rewrite.
15118         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15119         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15120         * tree-inline.c (copy_bb): Set frequency correctly.
15121         (fold_marked_statements): Update call to
15122         cgraph_update_edges_for_call_stmt.
15123
15124 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15125
15126         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15127         identifiers in diagnostics.
15128         * config/arm/arm.c (arm_handle_fndecl_attribute,
15129         arm_handle_isr_attribute): Likewise.
15130         * config/avr/avr.c (avr_handle_progmem_attribute,
15131         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15132         * config/bfin/bfin.c (handle_int_attribute,
15133         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15134         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15135         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15136         Likewise.
15137         * config/darwin.c (darwin_handle_kext_attribute,
15138         darwin_handle_weak_import_attribute): Likewise.
15139         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15140         h8300_handle_eightbit_data_attribute,
15141         h8300_handle_tiny_data_attribute): Likewise.
15142         * config/i386/i386.c (ix86_handle_cconv_attribute,
15143         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15144         * config/i386/winnt.c (ix86_handle_shared_attribute,
15145         ix86_handle_selectany_attribute): Likewise.
15146         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15147         * config/m32c/m32c.c (function_vector_handler): Likewise.
15148         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15149         m68hc11_handle_fntype_attribute): Likewise.
15150         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15151         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15152         * config/mips/mips.c (mips_insert_attributes,
15153         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15154         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15155         rs6000_handle_struct_attribute): Likewise.
15156         * config/sh/sh.c (sh_insert_attributes,
15157         sh_handle_resbank_handler_attribute,
15158         sh_handle_interrupt_handler_attribute,
15159         sh2a_handle_function_vector_handler_attribute,
15160         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15161         Likewise.
15162         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15163         * config/spu/spu.c (spu_handle_fndecl_attribute,
15164         spu_handle_vector_attribute): Likewise.
15165         * config/stormy16/stormy16.c
15166         (xstormy16_handle_interrupt_attribute): Likewise.
15167         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15168         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15169
15170 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15171
15172         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15173         (pp_translate_identifiers): New.
15174         (pp_identifier): Only conditionally translate identifier to locale
15175         character set.
15176         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15177         (pp_base_tree_identifier): Only conditionally translate identifier
15178         to locale character set.
15179         * c-pretty-print.c (M_): Define.
15180         (pp_c_type_specifier, pp_c_primary_expression): Mark English
15181         fragments for conditional translation with M_.
15182         * tree-pretty-print.c (maybe_init_pretty_print): Disable
15183         identifier translation.
15184
15185 2009-05-10  Richard Guenther  <rguenther@suse.de>
15186
15187         PR tree-optimization/40081
15188         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15189         using the main variant of the element type.  Do not fiddle with
15190         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15191
15192 2009-05-09  Jan Hubicka  <jh@suse.cz>
15193
15194         PR middle-end/40080
15195         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15196         indirect calls; verify cgraph afterwards.
15197
15198 2009-05-09  Jan Hubicka  <jh@suse.cz>
15199
15200         PR bootstrap/40082
15201         * ipa.c (update_inlined_to_pointer): New function.
15202         (cgraph_remove_unreachable_nodes): Use it.
15203
15204 2009-05-09  Jan Hubicka  <jh@suse.cz>
15205
15206         * tree-eh.c (struct leh_state): Remove prev_try.
15207         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15208         not track prev_try.
15209         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15210         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15211         remove_eh_handler_and_replace, foreach_reachable_handler,
15212         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15213         * except.h (struct eh_region): Remove eh_region_u_cleanup.
15214         (gen_eh_region_cleanup): Update prototype.
15215
15216 2009-05-09  Jan Hubicka  <jh@suse.cz>
15217
15218         PR middle-end/40043
15219         * except.c (copy_eh_region): Always set prev_try.
15220         (redirect_eh_edge_to_label): Find outer try.
15221         (foreach_reachable_handler): When looking for prev try
15222         handle case where previous try is not going to be taken.
15223
15224 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15225
15226         PR tree-optimization/40049
15227         * tree-vect-stmts.c (vectorizable_operation): If the machine has
15228         only vector/vector shifts, convert the type of the constant to the
15229         appropriate type to avoid building incorrect trees, which
15230         eventually have problems with garbage collection.
15231
15232 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15233
15234         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15235         -1 for complex floating-point types if honoring signed zeros.
15236
15237 2009-05-08  Jan Hubicka  <jh@suse.cz>
15238
15239         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15240         argument; handle correctly when profile is absent.
15241         (build_cgraph_edges): Update.
15242         (rebuild_cgraph_edges): Update.
15243         * cgraph.c: Do not include varray.h.
15244         (cgraph_set_call_stmt_including_clones): New function.
15245         (cgraph_create_edge_including_clones): Likewise
15246         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
15247         (cgraph_update_edges_for_call_stmt): Handle clones.
15248         (cgraph_remove_node): Handle clone tree.
15249         (cgraph_remove_node_and_inline_clones): New function.
15250         (dump_cgraph_node): Dump clone tree.
15251         (cgraph_clone_node): Handle clone tree.
15252         (clone_function_name): Bring here from tree-inline.c.
15253         (cgraph_create_virtual_clone): New function.
15254         * cgraph.h (ipa_replace_map): Move here from ipa.h.
15255         (cgraph_clone_info): New function.
15256         (strut cgraph_node): Add clone_info and new clone tree pointers.
15257         (cgraph_remove_node_and_inline_clones,
15258         cgraph_set_call_stmt_including_clones,
15259         cgraph_create_edge_including_clones,
15260         cgraph_create_virtual_clone): Declare.
15261         (cgraph_function_versioning): Use VEC argument.
15262         (compute_call_stmt_bb_frequency): Update prototype.
15263         (cgraph_materialize_all_clones): New function.
15264         * ipa-cp.c (ipcp_update_cloned_node): Remove.
15265         (ipcp_create_replace_map): Update to VECtors.
15266         (ipcp_update_callgraph): Use virtual clones.
15267         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
15268         (ipcp_update_profiling): Do not update local profiling.
15269         (ipcp_insert_stage): Use VECtors and virtual clones.
15270         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
15271         (clone_of_p): New function.
15272         (cgraph_preserve_function_body_p): Use clone tree.
15273         (cgraph_optimize): Materialize clones.
15274         (cgraph_function_versioning): Update for VECtors.
15275         (save_inline_function_body): Use clone tree.
15276         (cgraph_materialize_clone): New function.
15277         (cgraph_materialize_all_clones): Likewise.
15278         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
15279         * ipa.c: Include gimple.h.
15280         (cgraph_remove_unreachable_nodes): Use clone tree.
15281         * ipa-prop.c (ipa_note_param_call): Update call to
15282         compute_call_stmt_bb_frequencycall.
15283         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
15284         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
15285         (copy_bb): Handle updating of clone tree; add new edge when new call
15286         appears.
15287         (expand_call_inline): Be strict about every call having edge.
15288         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
15289         (delete_unreachable_blocks_update_callgraph): New function.
15290         (tree_function_versioning): Use VECtors; always remove unreachable
15291         blocks and fold conditionals.
15292         * tree-inline.h: Do not include varray.h.
15293         (tree_function_versioning): Remove.
15294         * Makefile.in (GTFILES): Remove tree-inline.c
15295         * passes.c (do_per_function): Do only functions having body.
15296         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
15297         tree.
15298
15299 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
15300             Andrew Morrow  <acm@google.com>
15301
15302         PR c/36892
15303         * c-common.c (c_common_attribute_table): Permit deprecated
15304         attribute to take an optional argument.
15305         (handle_deprecated_attribute): If the optional argument to
15306         __attribute__((deprecated)) is not a string ignore the attribute
15307         and emit a warning.
15308
15309         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
15310         * c-typeck.c (build_component_ref): Likewise.
15311         (build_external_ref): Likewise.
15312
15313         * toplev.c (warn_deprecated_use): Add an attribute argument.
15314         Emit the message associated with __attribute__((deprecated)).
15315
15316         * toplev.h (warn_deprecated_use): Updated.
15317
15318         * doc/extend.texi: Document new optional parameter to
15319         __attribute__((deprecated))
15320
15321 2009-05-08  Michael Eager <eager@eagercon.com>
15322
15323         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
15324         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
15325
15326 2009-05-08  Richard Guenther  <rguenther@suse.de>
15327
15328         PR tree-optimization/40062
15329         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
15330         Avoid exponential behavior.
15331
15332 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15333
15334         PR rtl-optimization/33928
15335         PR 26854
15336         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
15337         process_uses, build_single_def_use_links): New.
15338         (update_df): Update use_def_ref.
15339         (forward_propagate_into): Use get_def_for_use instead of use-def
15340         chains.
15341         (fwprop_init): Call build_single_def_use_links and let it initialize
15342         dataflow.
15343         (fwprop_done): Free use_def_ref.
15344         (fwprop_addr): Eliminate duplicate call to df_set_flags.
15345         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
15346         df_rd_simulate_one_insn): New.
15347         (df_rd_bb_local_compute_process_def): Update head comment.
15348         (df_chain_create_bb): Use the new RD simulation functions.
15349         * df.h (df_rd_simulate_artificial_defs_at_top,
15350         df_rd_simulate_one_insn): New.
15351         * opts.c (decode_options): Enable fwprop at -O1.
15352         * doc/invoke.texi (-fforward-propagate): Document this.
15353
15354 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15355
15356         PR c/24581
15357         * c-typeck.c (build_binary_op): Handle arithmetic between one real
15358         and one complex operand specially.
15359         * tree-complex.c (some_nonzerop): Do not identify a real value as
15360         zero if flag_signed_zeros.
15361
15362 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15363
15364         PR rtl-optimization/33928
15365         * loop-invariant.c (record_use): Fix && vs. || mishap.
15366
15367 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15368
15369         PR rtl-optimization/33928
15370         * loop-invariant.c (struct use): Add addr_use_p.
15371         (struct def): Add n_addr_uses.
15372         (struct invariant): Add cheap_address.
15373         (create_new_invariant): Set cheap_address.
15374         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
15375         (record_uses): Pass df_ref to record_use.
15376         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
15377         used only as such.
15378
15379 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15380
15381         * config/sh/sh.c: Do not include c-pragma.h.
15382
15383 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15384
15385         * config/spu/spu.c: Remove include of c-common.h.
15386
15387 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
15388
15389         PR c/39037
15390         * c-common.h (mark_valid_location_for_stdc_pragma,
15391         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
15392         clear_float_const_decimal64, float_const_decimal64_p): New.
15393         * c.opt (Wunsuffixed-float-constants): New.
15394         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
15395         unsuffixed float constant, handle new warning.
15396         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
15397         * c-decl.c (c_scope): New flag float_const_decimal64.
15398         (set_float_const_decimal64, clear_float_const_decimal64,
15399         float_const_decimal64_p): New.
15400         (push_scope): Set new flag.
15401         * c-parser.c (c_parser_translation_unit): Mark when it's valid
15402         to use STDC pragmas.
15403         (c_parser_external_declaration): Ditto.
15404         (c_parser_compound_statement_nostart): Ditto.
15405         * c-pragma.c (valid_location_for_stdc_pragma,
15406         mark_valid_location_for_stdc_pragma,
15407         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
15408         handle_pragma_float_const_decimal64): New.
15409         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
15410         * cp/semantics.c (valid_location_for_stdc_pragma_p,
15411         set_float_const_decimal64, clear_float_const_decimal64,
15412         float_const_decimal64_p): New dummy functions.
15413         * doc/extend.texi (Decimal Float): Remove statement that the
15414         pragma, and suffix for double constants, are not supported.
15415         * doc/invoke.texi (Warning Options): List new option.
15416         (-Wunsuffixed-float-constants): New.
15417
15418 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
15419
15420         * config/i386/i386.c: Do not include c-common.h.
15421
15422 2009-05-07  Mark Heffernan  <meheff@google.com>
15423
15424         * doc/invoke.texi (Debugging Options): Document change of debugging
15425         dump location.
15426         * opts.c (decode_options): Make dump_base_name relative to
15427         aux_base_name directory.
15428
15429 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
15430
15431         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
15432         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
15433
15434 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
15435
15436         * Makefile.in (install-plugin): Simplify a bit.
15437
15438 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
15439
15440         * Makefile.in (OBJS-common): Add regcprop.o.
15441         (regcprop.o): New.
15442         * timevar.def (TV_CPROP_REGISTERS): New.
15443         * regrename.c (regrename_optimize): Return 0.
15444         (rest_of_handle_regrename): Delete.
15445         (pass_rename_registers): Point to regrename_optimize.
15446         (struct value_data_entry, struct value_data,
15447         kill_value_one_regno, kill_value_regno, kill_value,
15448         set_value_regno, init_value_data, kill_clobbered_value,
15449         kill_set_value, kill_autoinc_value, copy_value,
15450         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
15451         replace_oldest_value_reg, replace_oldest_value_addr,
15452         replace_oldest_value_mem, copyprop_hardreg_forward_1,
15453         debug_value_data, validate_value_data): Move...
15454         * regcprop.c: ... here.
15455         (rest_of_handle_cprop): Delete.
15456         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
15457
15458 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
15459
15460         PR middle-end/40057
15461         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
15462         GEN_INT for 1 << bitnum.
15463         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
15464         build_int_cst_type.
15465
15466 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
15467
15468         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
15469         Remove wrong description of "nand" operation.
15470
15471 2009-05-06  Richard Guenther  <rguenther@suse.de>
15472             Adam Nemet  <anemet@caviumnetworks.com>
15473
15474         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
15475         comment.  Add that if LHS is not a gimple register, then RHS1 has
15476         to be a single object (GIMPLE_SINGLE_RHS).
15477
15478 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
15479
15480         * expr.c (get_def_for_expr): Move it up in the file.
15481         (store_field): When expanding a bit-field store, look at the
15482         defining gimple stmt for the masking conversion.
15483
15484 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
15485
15486         PR middle-end/39986
15487         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
15488         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
15489         32-bit memcpy into long.
15490
15491 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
15492
15493         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
15494         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
15495         new_reg_loc_descr.
15496         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
15497         instead of appending DW_OP_deref*.
15498
15499 2009-05-06  Michael Matz  <matz@suse.de>
15500
15501         PR middle-end/40021
15502         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
15503         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
15504
15505 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
15506
15507         * Makefile.in (install-plugin): Fix srcdir handling.
15508
15509 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
15510
15511         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
15512         when processing for not_regs_needed bitmap.
15513         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
15514         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
15515         handling it for rhs.
15516
15517 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15518
15519         * config/i386/i386.md (unnamed inc/dec peephole): Use
15520         optimize_insn_for_size_p instead of optimize_size.
15521         * config/i386/predicates.md (incdec_operand): Likewise.
15522         (aligned_operand): Likewise.
15523         * config/i386/sse.md (divv8sf3): Likewise.
15524         (sqrtv8sf2): Likewise.
15525
15526 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15527
15528         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
15529
15530         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
15531
15532 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15533
15534         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
15535         ssemodesuffixf2c with avxmodesuffixf2c.
15536
15537 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
15538
15539         PR c/40032
15540         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
15541
15542 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
15543
15544         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
15545         (struct tree_base): Adjust spacing for 8 bit boundaries.
15546         (struct tree_decl_common): Add decl_by_reference_flag bit.
15547         (DECL_BY_REFERENCE): Adjust.
15548         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
15549         print DECL_BY_REFERENCE bit.
15550         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
15551         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
15552         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
15553         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
15554         unconditionally.
15555
15556         PR middle-end/39666
15557         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
15558         range of the type, but default label is missing, add it with one
15559         of the existing labels instead of adding a new label for it.
15560
15561 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
15562
15563         * dwarf.h: Remove.
15564
15565 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
15566
15567         * Makefile.in (enable_plugin, plugin_includedir): New.
15568         (install): Depend on install-plugin.
15569         (PLUGIN_HEADERS): New.
15570         (install-plugin): New.
15571         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
15572
15573 2009-05-05  Richard Guenther  <rguenther@suse.de>
15574
15575         PR tree-optimization/40022
15576         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
15577         the only vuse.
15578         (phivn_valid_p): Fix tuplification error, simplify.
15579         (phiprop_insert_phi): Add dumps.
15580         (propagate_with_phi): Simplify.
15581
15582 2009-05-05  Richard Guenther  <rguenther@suse.de>
15583
15584         PR middle-end/40023
15585         * builtins.c (gimplify_va_arg_expr): Properly build the address.
15586
15587 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
15588
15589         * tree.h (strip_float_extensions): Remove duplicate declaration.
15590         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
15591         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
15592         block_ultimate_origin): Rearrange the declarations line to match the
15593         comment that indicates the .c file which the functions are defined.
15594         (dwarf2out_*, set_decl_rtl): Add comment.
15595         (get_base_address): Adjust comment.
15596         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
15597         declarations line and add comment.
15598         (is_builtin_name): Add blank after function name, for clarity.
15599
15600 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15601
15602         * attribs.c (decl_attributes): Use %qE for identifiers in
15603         diagnostics.
15604         * cgraphunit.c (verify_cgraph_node): Translate function names to
15605         locale character set in diagnostics.
15606         * coverage.c (get_coverage_counts): Use %qE for identifiers in
15607         diagnostics.
15608         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
15609         Document that functions are named in UTF-8.
15610         * expr.c (expand_expr_real_1): Translate function names to locale
15611         character set in diagnostics.
15612         * gimplify.c (omp_notice_variable, omp_is_private,
15613         gimplify_scan_omp_clauses): Use %qE for identifiers in
15614         diagnostics.
15615         * langhooks.c (lhd_print_error_function): Translate function names
15616         to locale character set.
15617         * langhooks.h (decl_printable_name): Document that return value is
15618         in internal character set.
15619         * stmt.c: Include pretty-print.h
15620         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
15621         diagnostics.
15622         (resolve_operand_name_1): Translate named operand name to locale
15623         character set.
15624         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
15625         diagnostics.
15626         * toplev.c (announce_function): Translate function names to locale
15627         character set.
15628         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
15629         (default_tree_printer): Use pp_identifier or translate identifiers
15630         to locale character set.  Mark "<anonymous>" for translation.
15631         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
15632         for identifiers in diagnostics.
15633         * tree.c (handle_dll_attribute): Use %qE for identifiers in
15634         diagnostics.
15635         * varasm.c (output_constructor): Use %qE for identifiers in
15636         diagnostics.
15637
15638 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
15639
15640         * configure.ac: use ` ` instead of $()
15641         * configure: Regenerate.
15642
15643 2009-05-05  Ben Elliston  <bje@au.ibm.com>
15644
15645         * config/pa/linux-atomic.c: Eliminate conditional include of
15646         errno.h on non-LP64 systems to simplify build requirements.
15647
15648 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15649
15650         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
15651         diagnostics.
15652         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
15653         and pass value to identifier_to_locale.
15654         (warn_variable_length_array): Make name a tree.
15655         (grokdeclarator): Separate diagnostic texts for named and unnamed
15656         declarators.  Use %qE for named declarators.
15657         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
15658         diagnostics.
15659         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
15660         identifiers in diagnostics.
15661         * c-typeck.c (push_member_name, start_init): Pass identifiers to
15662         identifier_to_locale.  Mark "anonymous" strings for translation.
15663
15664 2009-05-04  Michael Eager <eager@eagercon.com>
15665
15666         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
15667         address for DImode/DFmode only if double-precision FP regs.
15668
15669 2009-05-04  Michael Eager <eager@eagercon.com>
15670
15671         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
15672         TARGET_SINGLE_FLOAT check.
15673
15674 2009-05-04  Michael Eager <eager@eagercon.com>
15675
15676         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
15677
15678 2009-05-04  Michael Eager <eager@eagercon.com>
15679
15680         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
15681         * config/rs6000/t-xilinx: New
15682
15683 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
15684
15685         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
15686         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
15687         * gcc/explow.c (memory_address): Use target hook.
15688         * gcc/targhooks.c (default_legitimize_address): New.
15689         * gcc/targhooks.h (default_legitimize_address): New.
15690         * gcc/target.h (legitimize_address): New.
15691         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
15692         (TARGET_INITIALIZER): Include it.
15693         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
15694
15695         * config/bfin/bfin-protos.h (legitimize_address): Remove.
15696         * config/bfin/bfin.c (legitimize_address): Remove.
15697         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
15698         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
15699         Remove.
15700         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
15701         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
15702
15703         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
15704         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
15705         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
15706         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
15707         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
15708         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
15709         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
15710         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
15711         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
15712         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
15713         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
15714         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
15715         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
15716         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
15717         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
15718         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
15719         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
15720         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
15721         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
15722         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
15723         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
15724         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
15725         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
15726
15727         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
15728         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
15729         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
15730         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
15731         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
15732         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
15733         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
15734         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
15735         (thumb_legitimize_address): Delete.
15736         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
15737         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
15738         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
15739         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
15740         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
15741         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
15742         Delete.
15743         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
15744         Delete.
15745
15746         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
15747         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
15748         * config/m32r/m32r.c (m32r_legitimize_address): New.
15749         * config/m68k/m68k.c (m68k_legitimize_address): New.
15750         * config/score/score.c (score_legitimize_address): Standardize.
15751         * config/score/score3.c (score3_legitimize_address): Standardize.
15752         * config/score/score3.h (score3_legitimize_address): Adjust.
15753         * config/score/score7.c (score7_legitimize_address): Standardize.
15754         * config/score/score7.h (score7_legitimize_address): Adjust.
15755         * config/sh/sh.c (sh_legitimize_address): New.
15756         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
15757
15758         * gcc/config/s390/s390.c (legitimize_address): Rename to...
15759         (s390_legitimize_address): ... this.
15760         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
15761         (sparc_legitimize_address): ... this.
15762         * gcc/config/i386/i386.c (legitimize_address): Rename to...
15763         (ix86_legitimize_address): ... this.
15764         * gcc/config/avr/avr.c (legitimize_address): Rename to...
15765         (avr_legitimize_address): ... this.
15766         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
15767         (mn10300_legitimize_address): ... this.
15768         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
15769         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
15770         (alpha_expand_mov): Adjust call.
15771
15772         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
15773         * config/spu/spu.c (spu_legitimize_address): Likewise.
15774         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
15775         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
15776
15777 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15778
15779         * intl.c (locale_encoding, locale_utf8): New.
15780         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
15781         * intl.h (locale_encoding, locale_utf8): Declare.
15782         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
15783         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
15784         New.
15785         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
15786         argument.
15787         (pp_tree_identifier): Define to call pp_base_tree_identifier.
15788         (pp_base_tree_identifier): Declare as function.
15789         (identifier_to_locale): Declare.
15790         * Makefile.in (pretty-print.o): Update dependencies.
15791         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
15792
15793 2009-05-04  Richard Guenther  <rguenther@suse.de>
15794
15795         PR middle-end/40015
15796         * builtins.c (fold_builtin_memory_op): Do not decay to element
15797         type if the size matches the whole array.
15798
15799 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
15800
15801         * expmed.c (synth_mult): When trying out a shift, pass the result
15802         of a signed shift.
15803
15804 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
15805
15806         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
15807         (shiftsub1_cost): New.
15808         (init_expmed): Compute shiftsub1_cost.
15809         (synth_mult): Optimize multiplications by constants of the form
15810         -(2^^m-1) for some constant positive integer m.
15811
15812 2009-05-03  Richard Guenther  <rguenther@suse.de>
15813
15814         PR c/39983
15815         * c-typeck.c (array_to_pointer_conversion): Do not built
15816         ADDR_EXPRs of arrays of pointer-to-element type.
15817         * c-gimplify.c (c_gimplify_expr): Revert change fixing
15818         up wrong ADDR_EXPRs after-the-fact.
15819         * c-common.c (strict_aliasing_warning): Strip pointer
15820         conversions for obtaining the original type.
15821         * builtins.c (fold_builtin_memset): Handle array types.
15822         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
15823         and array types
15824
15825 2009-05-03  Richard Guenther  <rguenther@suse.de>
15826
15827         PR middle-end/23329
15828         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
15829         Do not lose casts from array types with unknown extent to array
15830         types with known extent.
15831         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
15832         alias set compatibility.
15833
15834 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15835
15836         * flags.h (extra_warnings): Delete.
15837         * toplev.c (process_options): Handle Wuninitialized here.
15838         * opts.c (extra_warnings): Delete.
15839         (set_Wextra): Delete.
15840         (common_handle_option): -Wextra can be handled automatically.
15841         * c-opts.c (c_common_handle_option): Delete obsolete code.
15842         (c_common_post_options): Simplify comment.
15843         * common.opt (W): Add Var.
15844         (Wextra): Add Var.
15845         (Wuninitialized): Initialize to -1.
15846
15847 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
15848             Richard Guenther  <rguenther@suse.de>
15849
15850         * expr.c (get_def_for_expr): New function.
15851         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
15852         SSA rather than trees.
15853         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
15854         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
15855
15856 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
15857
15858         * c-common.c (reswords): Add _Imaginary.
15859         * c-common.c (enum rid): Add RID_IMAGINARY.
15860
15861 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
15862
15863         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
15864         Patch by Richard Guenther.
15865
15866 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
15867
15868         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
15869         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
15870         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
15871         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
15872         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
15873         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
15874         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
15875         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
15876         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
15877         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
15878         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
15879         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
15880         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
15881         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
15882         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
15883         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
15884         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
15885         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
15886
15887 2009-05-02  Richard Guenther  <rguenther@suse.de>
15888
15889         PR tree-optimization/39940
15890         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
15891         doing so.
15892
15893 2009-05-02  Richard Guenther  <rguenther@suse.de>
15894
15895         PR middle-end/40001
15896         * tree-ssa.c (execute_update_addresses_taken): Properly check
15897         if we can mark a variable DECL_GIMPLE_REG_P.
15898         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
15899         back to the end of the function.
15900         (is_gimple_reg_type): Remove complex type special casing.
15901         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
15902         if not optimizing.
15903
15904 2009-05-02  Ben Elliston  <bje@au.ibm.com>
15905
15906         * doc/collect2.texi (Collect2): Document search path behaviour
15907         when configured with --with-ld.
15908
15909 2009-05-02  Jan Hubicka  <jh@suse.cz>
15910
15911         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
15912         parameter; update callers.
15913         (coalesce_cost_edge): EH edges are costier because they needs
15914         splitting even if not critical and even more costier when there are
15915         multiple EH predecestors.
15916
15917 2009-05-02  Jan Hubicka  <jh@suse.cz>
15918
15919         * except.c (remove_eh_handler_and_replace): Handle updating after
15920         removing TRY blocks.
15921
15922 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
15923
15924         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
15925
15926 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
15927
15928         * varasm.c: Do not include c-pragma.h.
15929         * attribs.c: Do not incude c-common.h.
15930
15931 2009-05-01  Michael Matz  <matz@suse.de>
15932
15933         * calls.c (initialize_argument_information): Handle SSA names like
15934         decls with a non MEM_P DECL_RTL.
15935
15936 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
15937
15938         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
15939         * ipa-utils.c: Likewise.
15940         * ipa-type-escape.c: Likewise.
15941         * cgraphunit.c Do not include c-common.h.
15942         * ipa-pure-const.c: Likewise.
15943         * tree-if-conv.c: Likewise.
15944         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
15945         * ipa-struct-reorg.c: Likewise.
15946         * tree-nomudflap.c: Likewise.
15947         * tree-ssa-structalias.c: Likewise.
15948
15949 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
15950
15951         * store-motion.c: Many cleanups to make this pass a first-class
15952         citizen instead of an appendix to gcse load motion.  Add TODO list
15953         to make this pass faster/cleaner/better.
15954
15955         (struct ls_expr): Post gcse.c-split cleanups.
15956         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
15957         "stores" field to "avail_stores".
15958         (pre_ldst_mems): Rename to store_motion_mems.
15959         (pre_ldst_table): Rename to store_motion_mems_table.
15960         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
15961         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
15962         (ldst_entry): Rename to st_expr_entry, update users.
15963         (free_ldst_entry): Rename to free_st_expr_entry, update users.
15964         (free_ldst_mems): Rename to free_store_motion_mems, update users.
15965         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
15966         update caller.
15967         (first_ls_expr): Rename to first_st_expr, update users.
15968         (next_ls_expr): Rename to next_st_expr, update users.
15969         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
15970         fields properly for store motion instead of names inherited from load
15971         motion in gcse.c.
15972         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
15973         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
15974         are done with it.
15975
15976         (ae_kill): Rename to st_kill, update users.
15977         (ae_gen): Rename to st_avloc, update users.
15978         (transp): Rename to st_transp, update users.
15979         (pre_insert_map): Rename to st_insert_map, update users.
15980         (pre_delete_map): Rename to st_delete_map, update users.
15981         (insert_store, build_store_vectors, free_store_memory,
15982         one_store_motion_pass): Update for abovementioned changes.
15983
15984         (gcse_subst_count, gcse_create_count): Remove.
15985         (one_store_motion_pass): New statistics counters "n_stores_deleted"
15986         and "n_stores_created", local variables.
15987
15988         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
15989         use for_each_rtx.
15990
15991         (regvec, compute_store_table_current_insn): Remove.
15992         (reg_set_info, reg_clear_last_set): Remove.
15993         (compute_store_table): Use DF caches instead of local dataflow
15994         solvers.
15995
15996 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
15997
15998         * c-objc-common.c (c_tree_printer): Print identifiers with
15999         pp_identifier, not pp_string.  Mark "({anonymous})" for
16000         translation.
16001         * c-pretty-print.c (pp_c_ws_string): New.
16002         (pp_c_cv_qualifier, pp_c_type_specifier,
16003         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16004         pp_c_storage_class_specifier, pp_c_function_specifier,
16005         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16006         pp_c_primary_expression, pp_c_postfix_expression,
16007         pp_c_unary_expression, pp_c_shift_expression,
16008         pp_c_relational_expression, pp_c_equality_expression,
16009         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16010         use pp_string and pp_c_ws_string in place of pp_identifier and
16011         pp_c_identifier for non-identifiers.  Mark English strings for
16012         translation.
16013         * c-pretty-print.h (pp_c_ws_string): Declare.
16014
16015 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
16016             Roland McGrath <roland@redhat.com>
16017
16018         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16019         (ENABLE_LD_BUILDID): New configuration option.
16020         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16021         (LINK_BUILDID_SPEC): New macro.
16022         (init_spec): If defined, prepend it between LINK_EH_SPEC and
16023         link_spec.
16024         * doc/install.texi: Document --enable-linker-build-id option.
16025         * configure: Rebuild.
16026         * config.in: Rebuild.
16027
16028 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
16029
16030         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
16031         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
16032         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
16033         MIPS_GP_SAVE_AREA_SIZE.
16034         * config/mips/mips.c (struct mips_frame_info): Update comment
16035         before arg_pointer_offset and hard_frame_pointer_offset.
16036         (mips_compute_frame_info): Update diagram before function: to
16037         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
16038         indicate the position of frame_pointer_rtx with -fstack-protector and
16039         to show args_size.  Don't allocate cprestore area for leaf functions
16040         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
16041         cprestore_size.
16042         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
16043
16044 2009-04-30  Michael Matz  <matz@suse.de>
16045
16046         PR tree-optimization/39955
16047         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
16048
16049 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
16050
16051         * ira.c (setup_cover_and_important_classes):  Use safe macro
16052         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
16053         directly.
16054         * genpreds.c (write_tm_preds_h):  Output suitable definition of
16055         REG_CLASS_FOR_CONSTRAINT.
16056
16057 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16058
16059         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
16060         instead of an int.
16061         * bitmap.c (bitmap_descriptor): Likewise.
16062         * ggc-common.c (loc_descriptor): Likewise.
16063         * varray.c (varray_descriptor): Likewise.
16064         * vec.c (vec_descriptor): Likewise.
16065
16066 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
16067
16068         * Makefile.in (dce.o): Add $(EXCEPT_H).
16069         * dce.c: Include except.h and delete redundant vector definitions.
16070         (deletable_insn_p): Return false for non-call insns that can throw
16071         if DF is running.
16072
16073 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
16074
16075         * gcse.c (ae_gen): Remove.
16076         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
16077         and make non-static function to make it available in store-motion.c.
16078         Update call sites with search-and-replace.
16079         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
16080         extract_mentioned_regs, extract_mentioned_regs_helper,
16081         find_moveable_store, compute_store_table, load_kills_store, find_loads,
16082         store_killed_in_insn, store_killed_after, store_killed_before,
16083         build_store_vectors, insert_insn_start_basic_block, insert-store,
16084         remove_reachable_equiv_notes, replace_store_insn, delete_store,
16085         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16086         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16087         * store-motion.c: ...new file.  Also copy data structures from gcse.c
16088         and clean up to remove parts not used by store motion.
16089         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16090         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16091
16092 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16093
16094         PR target/38571
16095         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16096         when optimizing for size.
16097
16098 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
16099
16100         * gcse.c (gcse_constant_p): Fix typo in last change.
16101
16102 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16103
16104         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16105
16106 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
16107
16108         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16109
16110 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
16111
16112         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16113         CONST_HIGH_PART result.
16114
16115 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
16116
16117         * config/avr/avr.c (initial_elimination_offset): Rename to
16118         avr_initial_elimination_offset.
16119         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16120         change return type to bool.
16121         (avr_can_eliminate): New function.
16122         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16123         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16124         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16125         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16126         avr_initial_elimination_offset.
16127         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16128         (avr_initial_elimination_offset): Define.
16129
16130 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
16131             Steven Bosscher  <steven@gcc.gnu.org>
16132
16133         PR rtl-optimization/39938
16134         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16135         * cfgrtl.c: Include insn-attr.h.
16136         (rest_of_pass_free_cfg): New function.
16137         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16138         * resource.c (init_resource_info): Remove call to df_analyze.
16139
16140 2009-04-29  Richard Guenther  <rguenther@suse.de>
16141
16142         PR target/39943
16143         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16144         allow conversion to signed integers.
16145
16146 2009-04-29  Richard Guenther  <rguenther@suse.de>
16147
16148         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16149         shifts of floating point vectors if the shift amount is
16150         a constant multiple of the element size.
16151
16152 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16153             Michael Matz  <matz@suse.de>
16154
16155         PR middle-end/39927
16156         PR bootstrap/39929
16157         * tree-outof-ssa.c (emit_partition_copy): New function.
16158         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16159         insert_part_to_rtx_on_edge): Perform the partition base var
16160         copy using emit_partition_copy.
16161         (insert_value_copy_on_edge): Convert constants to the right mode.
16162         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16163         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16164
16165 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16166
16167         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16168         scan backwards to try to find a constant to initialize it.
16169
16170         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16171         insn before the loop_end instruction, don't look past labels.
16172
16173 2009-04-29  Richard Guenther  <rguenther@suse.de>
16174
16175         PR middle-end/39937
16176         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16177         loose type conversions.
16178         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
16179         stmts only if there are no uses of its definition.
16180
16181 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16182
16183         * config/bfin/bfin.h (splitting_loops): Declare.
16184         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16185         Reorder bit definitions to be ascending.
16186         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16187         * config/bfin/bfin.c (splitting_loops): New variable.
16188         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16189         (struct loop_info): Remove members INIT and LOOP_INIT.
16190         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
16191         the LSETUP sequence.  Allow LC to be loaded from any register, but
16192         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16193         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16194         set to 1.
16195         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16196         of reload_completed.
16197
16198         From Jie Zhang:
16199         * config/bfin/bfin.md (movsi_insn): Refine constraints.
16200
16201 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
16202
16203         * Makefile.in (PLUGIN_VERSION_H): New.
16204         (OBJS-common): Remove plugin-version.o.
16205         (plugin.o): Depend on (PLUGIN_VERSION_H).
16206         (plugin-version.o): Remove.
16207         * configure: Regenerate
16208         * configure.ac: Create plugin-version.h.
16209         * gcc-plugin.h (plugin_gcc_version): Remove.
16210         (plugin_default_version_check): Change signature.
16211         * plugin-version.c: Remove.
16212         * plugin.c: Include plugin-version.h.
16213         (str_plugin_gcc_version_name): Remove.
16214         (try_init_one_plugin): Pass gcc version to plugin_init.
16215         (plugin_default_version_check): Both gcc and plugin versions are now
16216         arguments.
16217
16218 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16219
16220         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16221         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
16222         Remove special case testing for last insn of inner loops. Don't fail
16223         if the loop ends with a jump, emit an extra nop instead.
16224
16225         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16226         DREGS rather than comparing directly.  Remove code that tries to
16227         account for latencies.
16228
16229 2009-04-29  Richard Guenther  <rguenther@suse.de>
16230
16231         PR tree-optimization/39941
16232         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16233         eliminating an indirect call.
16234
16235 2009-04-29  Richard Guenther  <rguenther@suse.de>
16236
16237         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16238         parameter.  Allow invariants as base if !require_lvalue.
16239         (verify_gimple_assign_single): Adjust.
16240
16241 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16242
16243         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16244         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16245         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16246         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
16247         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
16248         a VEC_SELECT.
16249         * config/bfin/bfin.c (bfin_expand_builtin,
16250         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
16251
16252 2009-04-28  Richard Guenther  <rguenther@suse.de>
16253
16254         * tree-vect-loop.c (get_initial_def_for_induction): Use
16255         correct types for pointer increment.
16256
16257 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16258
16259         * toplev.c (print_version): Update GMP version string calculation.
16260
16261 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
16262
16263         PR rtl-optimization/39938
16264         * resource.c (init_resource_info): Add call to df_analyze.
16265
16266 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16267
16268         * config/alpha/alpha.md (usegp): Cast the result of
16269         alpha_find_lo_sum_using_gp to enum attr_usegp.
16270         * config/alpha/alpha.c (override_options): Remove end-of-structure
16271         marker element from cpu_table.  Use array size of cpu_table to handle
16272         -mcpu and -mtune options.
16273         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
16274
16275 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
16276
16277         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
16278         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
16279         tune_32 and tune_64.
16280         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
16281         support on PowerPC.
16282         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
16283         * config/rs6000/option-defaults.h: ... here.  New file.
16284         (OPT_64, OPT_32): Define.
16285         (MASK_64BIT): Define to 0 if not already defined.
16286         (OPT_ARCH64, OPT_ARCH32): Define.
16287         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
16288         and tune_64.
16289
16290 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16291
16292         * config/arm/arm.c (arm_override_options): Emit error on using
16293         fpa with AAPCS.
16294
16295 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16296
16297         PR rtl-optimization/39914
16298         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
16299         registers for allocnos created from user-defined variables only
16300         when not optimizing.
16301
16302 2009-04-28  Richard Guenther  <rguenther@suse.de>
16303
16304         PR middle-end/39937
16305         * fold-const.c (fold_binary): Use distribute_real_division only
16306         on float types.
16307
16308 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
16309
16310         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
16311         add hpux-stdint.h to tm_file.
16312         (hppa[12]*-*-hpux11*): Ditto.
16313         (ia64*-*-hpux*): Ditto.
16314         * config/hpux-stdint.h: New.
16315         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
16316         __STDC_EXT__ for all compiles.
16317         * config/pa/pa-hpux.h: Ditto.
16318         * config/pa/pa-hpux10.h: Ditto.
16319         * config/pa/pa-hpux11.h: Ditto.
16320
16321 2009-04-28  Catherine Moore  <clm@codesourcery.com>
16322
16323         * debug.h (set_name): Add comment.
16324
16325 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
16326
16327         PR target/39929
16328         * config/darwin.c (machopic_gen_offset): Check
16329         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
16330         * config/arm/arm.c (require_pic_register): Likewise.
16331
16332 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
16333
16334         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
16335         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
16336         m32c_promote_prototypes): Delete.
16337
16338 2009-04-28  Michael Matz  <matz@suse.de>
16339
16340         PR middle-end/39922
16341         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
16342         constants.
16343
16344 2009-04-28  Richard Guenther  <rguenther@suse.de>
16345
16346         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
16347
16348 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16349
16350         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
16351         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
16352         * config/arm/arm-tune.md: Regenerate.
16353
16354 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
16355
16356         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
16357         block if there are complex incoming edges.
16358         (sel_merge_blocks): Remove useless assert.
16359         (sel_redirect_edge_and_branch): Check that edge was redirected.
16360         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
16361         (sel_find_rgns): Delete declaration.
16362         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
16363         the region when it is not a preheader.
16364
16365 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16366
16367         PR c/39323
16368         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
16369
16370 2009-04-28  Richard Guenther  <rguenther@suse.de>
16371
16372         * tree.h (SSA_NAME_VALUE): Remove.
16373         (struct tree_ssa_name): Remove value_handle member.
16374         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
16375         array for jump threading.
16376         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
16377         SSA_NAME_VALUEs.
16378         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
16379         * tree-flow.h (threadedge_initialize_values): Declare.
16380         (threadedge_finalize_values): Likewise.
16381         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
16382         (SSA_NAME_VALUE): Define.
16383         (threadedge_initialize_values): New function.
16384         (threadedge_finalize_values): Likewise.
16385         * tree-ssa-dom.c (ssa_name_values): New global variable.
16386         (SSA_NAME_VALUE): Define.
16387         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
16388
16389 2009-04-28  Ira Rosen  <irar@il.ibm.com>
16390
16391         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
16392         Use REPORT_VECTORIZED_LOCATIONS instead
16393         REPORT_VECTORIZED_LOOPS.
16394         * tree-vectorizer.c (vect_verbosity_level): Make static.
16395         (vect_loop_location): Rename to vect_location.
16396         (vect_set_verbosity_level): Update comment.
16397         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
16398         and vect_location.
16399         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
16400         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
16401         instead REPORT_UNVECTORIZED_LOOPS.
16402         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
16403         and vect_loop_def to vect_external_def and vect_internal_def.
16404         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
16405         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
16406         REPORT_UNVECTORIZED_LOCATIONS.
16407         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
16408         and vect_used_in_loop and to vect_unused_in_scope and
16409         vect_used_in_scope.
16410         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
16411         (vect_verbosity_level): Remove declaration.
16412         (vect_analyze_operations): Likewise.
16413         (vect_analyze_stmt): Declare.
16414         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
16415         REPORT_UNVECTORIZED_LOCATIONS.
16416         (vect_get_loop_niters): Fix indentation.
16417         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
16418         (vect_analyze_loop_operations): New function.
16419         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
16420         vect_analyze_operations.
16421         (vect_is_simple_reduction): Use new names.
16422         (vectorizable_live_operation, vect_transform_loop): Likewise.
16423         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
16424         to specify whether the data references can be a part of interleaving
16425         chain.
16426         (vect_analyze_data_ref_dependence): Use new names.
16427         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
16428         (vect_create_addr_base_for_vector_ref): Remove redundant code.
16429         * tree-vect-patterns.c (widened_name_p): Use new names.
16430         (vect_recog_dot_prod_pattern): Likewise.
16431         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
16432         (process_use, vect_mark_stmts_to_be_vectorized,
16433         vect_model_simple_cost, vect_model_store_cost,
16434         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
16435         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
16436         vectorizable_operation, vectorizable_type_demotion,
16437         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
16438         vectorizable_condition): Likewise.
16439         (vect_analyze_operations): Split into vect_analyze_loop_operations
16440         and ...
16441         (vect_analyze_stmt): ... new function.
16442         (new_stmt_vec_info): Use new names.
16443         (vect_is_simple_use): Use new names and fix comment.
16444         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
16445         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
16446
16447 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16448
16449         PR target/39911
16450         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
16451         and integer modes for x87 operands.  Do not ICE for unsupported size,
16452         generate error instead.  Generate error for unsupported operand types.
16453         ['z']: Do not handle HImode memory operands specially.  Warning
16454         for floating-point operands.  Fallthru to 'Z' for unsupported operand
16455         types.  Do not ICE for unsupported size, generate error instead.
16456         (output_387_binary_op): Use %Z to output operands.
16457         (output_fp_compare): Ditto.
16458         (output_387_reg_move): Ditto.
16459
16460 2009-04-28  Ben Elliston  <bje@au.ibm.com>
16461
16462         PR c++/35652
16463         Revert:
16464
16465         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16466
16467         * builtins.c (c_strlen): Do not warn here.
16468         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16469         * c-common.c (pointer_int_sum): Take an explicit location.
16470         Warn about offsets out of bounds.
16471         * c-common.h (pointer_int_sum): Adjust declaration.
16472
16473 2009-04-27  Ian Lance Taylor  <iant@google.com>
16474
16475         * collect2.c (is_ctor_dtor): Change type of ret field in struct
16476         names to symkind.
16477         * dce.c (run_fast_df_dce): Change type of old_flags to int.
16478         * df-core.c (df_set_flags): Change return type to int.  Change
16479         type of old_flags to int.
16480         (df_clear_flags): Likewise.
16481         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
16482         (df_get_conditional_uses): Likewise.
16483         * df.h (df_set_flags, df_clear_flags): Update declarations.
16484         * dwarf2out.c (struct indirect_string_node): Change type of form
16485         field to enum dwarf_form.
16486         (AT_string_form): Change return type to enum dwarf_form.
16487         * fixed-value.c (fixed_compare): Add cast to enum type.
16488         * fwprop.c (update_df): Change 0 to VOIDmode.
16489         * gensupport.c: Change 0 to UNKNOWN.
16490         * gimple.h (gimple_cond_code): Add cast to enum type.
16491         * haifa-sched.c (reemit_notes): Add cast to enum type.
16492         * hooks.c (hook_int_void_no_regs): Remove function.
16493         * hooks.h (hook_int_void_no_regs): Remove declaration.
16494         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
16495         * predict.c (combine_predictions_for_insn): Add casts to enum type.
16496         * real.c (real_arithmetic): Add cast to enum type.
16497         (real_compare): Likewise.
16498         * target.h (struct gcc_target): Change return type of
16499         branch_target_register_class to enum reg_class.
16500         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
16501         default_branch_target_register_class.
16502         * targhooks.c (default_branch_target_register_class): New function.
16503         * targhooks.h (default_branch_target_register_class): Declare.
16504         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
16505         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
16506         cast to int.
16507         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
16508         ERROR_MARK.
16509         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
16510         vect_uninitialized_def.  Change 0 to ERROR_MARK.
16511         * tree-vect-stmts.c (supportable_widening_operation): Don't
16512         initialize icode1 and icode2.
16513         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
16514         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
16515         and to STD_C89.
16516         (cmn_err_flag_specs): Change 0 to STD_C89.
16517         (cmn_err_char_table): Likewise.
16518         * config/arm/arm.c (get_arm_condition_code): Change type of code
16519         to enum arm_cond_code.
16520         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
16521         (IWMMXT_BUILTIN2): Likewise.
16522         (neon_builtin_type_bits): Don't define typedef.
16523         (neon_builtin_datum): Change type of bits field to int.
16524         (arm_expand_neon_args): Add cast to enum type.
16525         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
16526         TLS_MODEL_NONE.
16527         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
16528         casts to enum type.
16529         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
16530         MIPS_FP_COND_f.
16531         * config/mips/mips.md (jal_macro): Return enum constant.
16532         (single_insn): Likewise.
16533         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
16534         CODE_FOR_nothing.
16535         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
16536         casts to enum type.
16537         * config/s390/s390.c (s390_tune_flags): Change type to int.
16538         (s390_arch_flags): Likewise.
16539         (s390_handle_arch_option): Change flags field of struct pta to int.
16540         * config/s390/s390.h (s390_tune_flags): Update declaration.
16541         (s390_arch_flags): Likewise.
16542         * config/sh/sh.c (prepare_move_operands): Compare
16543         tls_symbolic_operand result with enum constant.
16544         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
16545         (sh_expand_prologue): Add cast to enum type.
16546         (sh_expand_epilogue): Likewise.
16547         (tls_symbolic_operand): Change return type to enum tls_model.
16548         (fpscr_set_from_mem): Add cast to enum type.
16549         (legitimize_pic_address): Compare tls_symbolic_operand result with
16550         enum constant.
16551         (sh_target_reg_class): Change return type to enum reg_class.
16552         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
16553         PROCESSOR_xxx.
16554         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
16555         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
16556         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
16557         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
16558         (delayed_branch, tls_call_delay): Likewise.
16559         (eligible_for_sibcall_delay): Likewise.
16560         (eligible_for_return_delay): Likewise.
16561         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
16562         (spu_expand_builtin_1): Likewise.
16563
16564         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
16565         for all types of conversions.
16566         (output_init_element): Issue -Wc++-compat warning if needed when
16567         initializing a bitfield with enum type.
16568         * c-parser.c (c_parser_expression): Set original_type to
16569         original_type of right hand operand of comma operator.
16570
16571 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16572
16573         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
16574         grammar nits.
16575         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
16576         * doc/cpp.texi (Standard Predefined Macros)
16577         (Implementation-defined behavior): Likewise.
16578         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
16579         * doc/gimple.texi (GIMPLE Exception Handling)
16580         (@code{GIMPLE_ASSIGN}): Likewise.
16581         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
16582         * doc/invoke.texi (Warning Options, Optimize Options)
16583         (AVR Options, Darwin Options): Likewise.
16584         (Optimize Options): Reformulate -fwhole-program description.
16585         * doc/loop.texi (Lambda): Likewise.
16586         * doc/md.texi (Output Template, Define Constraints)
16587         (Standard Names, Insn Splitting): Likewise.
16588         * doc/options.texi (Option properties): Likewise.
16589         * doc/passes.texi (Tree-SSA passes): Likewise.
16590         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
16591         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
16592         (File Names and DBX): Likewise.
16593         * doc/trouble.texi (Incompatibilities): Likewise.
16594
16595 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16596
16597         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
16598         instruction is correct.
16599
16600 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16601
16602         Allow non-constant arguments to conversion intrinsics.
16603         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
16604         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
16605         * spu.c (print_operand): Handle 'v' and 'w'.
16606         (exp2_immediate_p, spu_gen_exp2): Define.
16607         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
16608         spu_convtf_1): Update parameter descriptions.
16609         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
16610         * constraints.md ('v', 'w'): New.
16611         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
16612         Remove.
16613         (i2f, I2F): New define_mode_attr.
16614         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
16615         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
16616         fixuns_truncv4sfv4si2):  Update to use mode attribute.
16617         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
16618         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
16619         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
16620         patterns for combine.
16621
16622 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
16623
16624         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
16625         (cprop, hoist, pre, store_motion): New debug counters.
16626         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
16627         is not an RTL pass anymore.
16628         (pass_profiling): Remove extern decl for pass removed in 2005.
16629         (pass_gcse, pass_jump_bypass): Remove.
16630         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
16631         to 0 for clean state.
16632         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
16633         * cse.c (gate_handle_cse_after_global_opts,
16634         rest_of_handle_cse_after_global_opts): New functions.
16635         (pass_cse_after_global_opts): New pass, does local CSE.
16636         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
16637         (TV_CPROP): New timevar.
16638         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
16639         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
16640         (gcse_main, recompute_all_luids): Remove.
16641         (compute_hash_table_work): Call max_reg_num instead of reading
16642         max_gcse_regno.
16643         (cprop_jump): Don't set run_jump_opt_after_gcse.
16644         (constprop_register): Always allow to alter jumps.
16645         (cprop_insn): Likewise.
16646         (do_local_cprop): Likewise.
16647         (local_cprop_pass): Likewise.  Return non-zero if something changed.
16648         (cprop): Remove function, fold interesting bits into one_cprop_pass.
16649         (find_implicit_sets): Add note about missed optimization opportunity.
16650         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
16651         pass_rtl_cprop execute function.
16652         Don't bother tracking the pass number, each pass gets its own dumpfile
16653         now anyway.
16654         Always allow to alter jumpsand bypass jumps.
16655         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
16656         will just find no suitable set.
16657         (pre_edge_insert): Fix dumping, this function is for PRE only.
16658         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
16659         pass_rtl_pre execute function.
16660         (hoist_code): Return non-zero if something changed.  Keep track of
16661         substitutions and insertions for statistics gathering similar to PRE.
16662         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
16663         called from the pass_rtl_hoist execute function.  Show pass statistics.
16664         (compute_store_table): Use max_reg_num directly instead of using the
16665         formerly global max_gcse_regno.
16666         (build_store_vectors): Likewise.
16667         (replace_store_insn): Fix dumping.
16668         (store_motion): Rename to ...
16669         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
16670         pass, called from the pass_rtl_store_motion execute function.  Keep
16671         track of substitutions and insertions for statistics gathering similar
16672         to PRE.
16673         (bypass_jumps): Remove, fold interesting bits into ...
16674         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
16675         from the pass_rtl_cprop execute function.
16676         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
16677         pass_jump_bypass): Remove.
16678         (gate_handle_gcse, rest_of_handle_gcse): Remove.
16679         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
16680         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
16681         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
16682         (gate_rtl_store_motion, execute_rtl_store_motion,
16683         pass_rtl_store_motion): New.
16684         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
16685         make it clear that -fcse-skip-blocks is a no-op for backward compat.
16686         * passes.c (init_optimization_passes): Remove pass_gcse and
16687         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
16688         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
16689         instead of pass_jump_bypass.
16690
16691 2009-04-27  Richard Guenther  <rguenther@suse.de>
16692
16693         PR middle-end/39928
16694         * gimplify.c (gimplify_expr): If we are required to create
16695         a temporary make sure it ends up as register.
16696
16697 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
16698
16699         PR target/39903
16700         * config/i386/i386.c (construct_container): Don't call
16701         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
16702         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
16703
16704 2009-04-27  Michael Matz  <matz@suse.de>
16705
16706         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
16707         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
16708         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
16709         (dump_replaceable_exprs): Take a bitmap.
16710         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
16711         array.
16712         (expand_gimple_basic_block): Likewise.
16713         * tree-ssa-ter.c (struct temp_expr_table_d): Make
16714         replaceable_expressions member a bitmap.
16715         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
16716         (mark_replaceable): Likewise.
16717         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
16718         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
16719
16720 2009-04-27  Richard Guenther  <rguenther@suse.de>
16721
16722         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
16723         (verify_stmts): Dispatch to gimple/type verification code.
16724         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
16725         issue with call argument types.
16726
16727 2009-04-27  Michael Matz  <matz@suse.de>
16728
16729         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
16730         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
16731         to above.
16732
16733 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
16734             Eric Botcazou  <ebotcazou@adacore.com>
16735
16736         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
16737         a label's basic block.
16738         (mark_target_live_regs): Tidy and rework obsolete comments.
16739         Change back DF problem to LIVE.  If a label starts a basic block,
16740         assume that all registers that used to be live then still are.
16741         (init_resource_info): If a label starts a basic block, set its
16742         BLOCK_FOR_INSN accordingly.
16743         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
16744
16745 2009-04-27  Richard Guenther  <rguenther@suse.de>
16746
16747         * tree-flow-inline.h (function_ann): Remove.
16748         (get_function_ann): Likewise.
16749         * tree-dfa.c (create_function_ann): Remove.
16750         * tree-flow.h (struct static_var_ann_d): Remove.
16751         (struct function_ann_d): Likewise.
16752         (union tree_ann_d): Remove fdecl member.
16753         (function_ann_t): Remove.
16754         (function_ann, get_function_ann, create_function_ann): Remove
16755         declarations.
16756
16757 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
16758
16759         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
16760
16761 2009-04-27  Jan Hubicka  <jh@suse.cz>
16762
16763         * ipa-pure-const.c (struct funct_state_d): New fields
16764         state_previously_known, looping_previously_known; remove
16765         state_set_in_source.
16766         (analyze_function): Use new fields.
16767         (propagate): Avoid assumption that state_set_in_source imply
16768         nonlooping.
16769
16770         * tree-ssa-loop-niter.c (finite_loop_p): New function.
16771         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
16772         * cfgloop.h (finite_loop_p): Declare.
16773
16774 2009-04-26  Michael Matz  <matz@suse.de>
16775
16776         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
16777
16778 2009-04-26  Michael Matz  <matz@suse.de>
16779
16780         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
16781         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
16782         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
16783         pass_mark_used_blocks): Remove.
16784         * tree-optimize.c (pass_free_datastructures,
16785         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
16786         * passes.c (init_optimization_passes): Don't call
16787         pass_mark_used_blocks, remove dead code.
16788
16789 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
16790
16791         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
16792         * tree-ssa-live.h (register_ssa_partition): Likewise.
16793
16794 2009-04-26  Michael Matz  <matz@suse.de>
16795
16796         Expand from SSA.
16797         * builtins.c (fold_builtin_next_arg): Handle SSA names.
16798         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
16799         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
16800         SSA names.
16801         (compare_pairs): Swap cost comparison.
16802         (coalesce_ssa_name): Don't use change_partition_var.
16803         * tree-nrv.c (struct nrv_data): Add modified member.
16804         (finalize_nrv_r): Set it.
16805         (tree_nrv): Use it to update statements.
16806         (pass_nrv): Require PROP_ssa.
16807         * tree-mudflap.c (mf_decl_cache_locals,
16808         mf_build_check_statement_for): Use make_rename_temp.
16809         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
16810         * alias.c (find_base_decl): Handle SSA names.
16811         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
16812         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
16813         * rtl.h (set_reg_attrs_for_parm): Declare.
16814         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
16815         to "optimized", remove unused locals at finish.
16816         (execute_free_datastructures): Make global, call
16817         delete_tree_cfg_annotations.
16818         (execute_free_cfg_annotations): Don't call
16819         delete_tree_cfg_annotations.
16820
16821         * ssaexpand.h: New file.
16822         * expr.c (toplevel): Include ssaexpand.h.
16823         (expand_assignment): Handle SSA names the same as register variables.
16824         (expand_expr_real_1): Expand SSA names.
16825         * cfgexpand.c (toplevel): Include ssaexpand.h.
16826         (SA): New global variable.
16827         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
16828         (SSAVAR): New macro.
16829         (set_rtl): New helper function.
16830         (add_stack_var): Deal with SSA names, use set_rtl.
16831         (expand_one_stack_var_at): Likewise.
16832         (expand_one_stack_var): Deal with SSA names.
16833         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
16834         before unique numbers.
16835         (expand_stack_vars): Use set_rtl.
16836         (expand_one_var): Accept SSA names, add asserts for them, feed them
16837         to above subroutines.
16838         (expand_used_vars): Expand all partitions (without default defs),
16839         then only the local decls (ignoring those expanded already).
16840         (expand_gimple_cond): Remove edges when jumpif() expands an
16841         unconditional jump.
16842         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
16843         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
16844         SSA name.
16845         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
16846         members of SA; deal with PARM_DECL partitions here; expand
16847         all PHI nodes, free tree datastructures and SA.  Commit instructions
16848         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
16849         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
16850         info and statements at start, collect garbage at finish.
16851         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
16852         (VAR_ANN_PARTITION) Remove.
16853         (change_partition_var): Don't declare.
16854         (partition_to_var): Always return SSA names.
16855         (var_to_partition): Only accept SSA names.
16856         (register_ssa_partition): Only check argument.
16857         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
16858         member.
16859         (delete_var_map): Don't free it.
16860         (var_union): Only accept SSA names, simplify.
16861         (partition_view_init): Mark only useful SSA names as used.
16862         (partition_view_fini): Only deal with SSA names.
16863         (change_partition_var): Remove.
16864         (dump_var_map): Use ssa_name instead of partition_to_var member.
16865         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
16866         basic blocks.
16867         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
16868         (struct _elim_graph): New member const_dests; nodes member vector of
16869         ints.
16870         (set_location_for_edge): New static helper.
16871         (create_temp): Remove.
16872         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
16873         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
16874         (new_elim_graph): Allocate const_dests member.
16875         (clean_elim_graph): Truncate const_dests member.
16876         (delete_elim_graph): Free const_dests member.
16877         (elim_graph_size): Adapt to new type of nodes member.
16878         (elim_graph_add_node): Likewise.
16879         (eliminate_name): Likewise.
16880         (eliminate_build): Don't take basic block argument, deal only with
16881         partition numbers, not variables.
16882         (get_temp_reg): New static helper.
16883         (elim_create): Use it, deal with RTL temporaries instead of trees.
16884         (eliminate_phi): Adjust all calls to new signature.
16885         (assign_vars, replace_use_variable, replace_def_variable): Remove.
16886         (rewrite_trees): Only do checking.
16887         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
16888         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
16889         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
16890         contains_tree_r, MAX_STMTS_IN_LATCH,
16891         process_single_block_loop_latch, analyze_edges_for_bb,
16892         perform_edge_inserts): Remove.
16893         (expand_phi_nodes): New global function.
16894         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
16895         functions, initialize new parameter, remember partitions having a
16896         default def.
16897         (finish_out_of_ssa): New global function.
16898         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
16899         don't reset in_ssa_p here, don't disable TER when mudflap.
16900         (pass_del_ssa): Remove.
16901         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
16902         partition members.
16903         (execute_free_datastructures): Declare.
16904         * Makefile.in (SSAEXPAND_H): New variable.
16905         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
16906         * basic-block.h (commit_one_edge_insertion): Declare.
16907         * passes.c (init_optimization_passes): Move pass_nrv and
16908         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
16909         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
16910         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
16911         (redirect_branch_edge): Deal with super block when expanding, split
16912         out jump patching itself into ...
16913         (patch_jump_insn): ... here, new static helper.
16914
16915 2009-04-26  Michael Matz  <matz@suse.de>
16916
16917         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
16918         beyond num_ssa_names.
16919         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
16920         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
16921
16922 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
16923
16924         PR inline-asm/39543
16925         * fwprop.c (forward_propagate_asm): New function.
16926         (forward_propagate_and_simplify): Propagate also into __asm, if it
16927         doesn't increase the number of referenced registers.
16928
16929         PR c/39889
16930         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
16931
16932 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
16933
16934         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
16935         note_nonlocal_vla_type for nonlocal VLAs.
16936         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
16937         contains_remapped_vars, remap_vla_decls): New functions.
16938         (convert_nonlocal_reference_stmt): If not optimizing, call
16939         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
16940         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
16941         if it wasn't found in var_map.
16942         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
16943         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
16944         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
16945         declare_vars.
16946         * gimplify.c (nonlocal_vlas): New variable.
16947         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
16948         referenced VLAs.
16949         (gimplify_body): Create and destroy nonlocal_vlas.
16950
16951         * dwarf2out.c (loc_descr_plus_const): New function.
16952         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
16953         mem_loc_descriptor, loc_descriptor_from_tree_1,
16954         descr_info_loc, gen_variable_die): Use it.
16955
16956         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
16957         !TREE_STATIC VAR_DECLs.
16958         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
16959         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
16960         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
16961         DECL_BY_REFERENCE is valid.
16962         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
16963         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
16964         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
16965         Copy DECL_BY_REFERENCE.
16966         (struct nesting_copy_body_data): New type.
16967         (nesting_copy_decl): New function.
16968         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
16969         if they have variable length.
16970
16971 2009-04-26  Michael Matz  <matz@suse.de>
16972
16973         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
16974         mark new temporaries for renaming.
16975
16976 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
16977
16978         PR c/39581
16979         * c-decl.c (global_bindings_p): Return negative value.
16980         (c_variable_size): New.  Based on variable_size from
16981         stor-layout.c.
16982         (grokdeclarator): Call c_variable_size not variable_size.
16983
16984 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
16985
16986         * config/i386/i386.c (print_operand) ['z']: Fix typo.
16987
16988 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
16989
16990         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
16991         Redefine it to just use mingw/include.
16992         (ASM_SPEC): Rules for -m32 and -m64.
16993         (LINK_SPEC): Use Likewise.
16994         (SPEC_32): New define.
16995         (SPEC_64): Likewise.
16996         (SUB_LINK_SPEC): Likewise.
16997         (MULTILIB_DEFAULTS): New define.
16998         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
16999         Add multilib options.
17000         (MULTILIB_DIRNAMES): Likewise.
17001         (MULTILIB_OSDIRNAMES): Likewise.
17002         (LIBGCC): Likewise.
17003         (INSTALL_LIBGCC): Likewise.
17004
17005 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17006
17007         PR c/39556
17008         * c-tree.h (enum c_inline_static_type): New.
17009         (record_inline_static): Declare.
17010         * c-decl.c (struct c_inline_static, c_inline_statics,
17011         record_inline_static, check_inline_statics): New.
17012         (pop_file_scope): Call check_inline_statics.
17013         (start_decl): Call record_inline_static instead of pedwarning
17014         directly for static in inline function.
17015         * c-typeck.c (build_external_ref): Call record_inline_static
17016         instead of pedwarning directly for static referenced in inline
17017         function.
17018
17019 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
17020
17021         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17022         not new but only being rescanned.
17023         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
17024         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
17025         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
17026         record_set_info, compute_set, grealloc): Remove.
17027         (recompute_all_luids): New function.
17028         (gcse_main): Don't compute sets, and don't do related memory
17029         allocations/free-ing.  If something changed before the end of the
17030         pass, update LUIDs using recompute_all_luids.
17031         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
17032         (free_gcse_mem): Don't free it either.
17033         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
17034         Use the df insn LUIDs.
17035         (load_killed_in_block): Likewise.
17036         (compute_hash_table_work): Don't compute reg_set_in_block.
17037         (compute_transp): Use DF_REG_DEF_CHAINs.
17038         (local_cprop_pass): Don't use compute_sets and related functions.
17039         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
17040         Use get_max_uid() instead of max_cuid.
17041         (insert_insn_end_basic_block, pre_insert_copy_insn,
17042         update_ld_motion_stores): Don't try to
17043         keep reg_set tables up to date.
17044         (pre_insert_copies): Use df insn LUIDs.
17045         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
17046         (reg_set_info): Don't use extra bitmap argument.
17047         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
17048         information to compute regs_set_in_block.
17049         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
17050         (bypass_jumps): Don't use compute_sets and friends.
17051
17052 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17053
17054         PR testsuite/39710
17055         * opts.c (undocumented_msg): Do not leave blank even with
17056         ENABLE_CHECKING.
17057
17058 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17059
17060         * c-decl.c (build_enumerator): Allow values folding to integer
17061         constants but not integer constant expressions with a pedwarn if
17062         pedantic.
17063
17064 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17065
17066         PR c/39582
17067         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
17068         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
17069         type is an integer constant.
17070
17071 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17072
17073         PR target/39897
17074         * config/i386/i386.c (print_operand) ['z']: Revert handling of
17075         HImode operands.
17076
17077 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17078
17079         PR c/39564
17080         * c-decl.c (grokdeclarator): Diagnose declarations of functions
17081         with variably modified return type and no storage class
17082         specifiers, except for the case of nested functions.  Distinguish
17083         extern declarations of functions with variably modified return
17084         types from those of objects with variably modified types.
17085
17086 2009-04-25  Jan Hubicka  <jh@suse.cz>
17087
17088         * tree.c (list_equal_p): New function.
17089         * tree.h (list_equal_p): Declare.
17090         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17091         basic_block_def, basic_block, const_basic_block): New.
17092         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17093         (redirect_eh_edge): New function.
17094         (make_eh_edge_update_phi): EH edges are not abnormal.
17095         * except.c: Include tree-flow.h.
17096         (list_match): New function.
17097         (eh_region_replaceable_by_p): New function.
17098         (replace_region): New function.
17099         (hash_type_list): New function.
17100         (hash_eh_region): New function.
17101         (eh_regions_equal_p): New function.
17102         (merge_peers): New function.
17103         (remove_unreachable_regions): Verify EH tree when checking;
17104         merge peers.
17105         (copy_eh_region_1): New function.
17106         (copy_eh_region): New function.
17107         (push_reachable_handler): New function.
17108         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17109         regions without label but with live RESX.
17110         * except.h (redirect_eh_edge_to_label): New.
17111         * tree-flow.h (redirect_eh_edge): New.
17112         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17113         basic_block_def, basic_block, const_basic_block): Remove.
17114         * Makefile.in (except.o): Add dependency on tree-flow.h
17115         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17116         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17117         Remove.
17118
17119 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17120
17121         PR bootstrap/39645
17122         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17123         on the destination of memcpy.
17124
17125 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
17126
17127         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17128         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17129         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17130
17131 2009-04-25  Jan Hubicka  <jh@suse.cz>
17132
17133         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17134         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17135         to be reached by different label than left.
17136         (update_eh_edges): Update comment; remove edge_to_remove if possible
17137         and return true if suceeded.
17138         (cleanup_empty_eh): Accept sharing map; handle shared regions.
17139         (cleanup_eh): Compute sharing map.
17140         * except.c (remove_eh_handler_and_replace): Add argument if we should
17141         update regions.
17142         (remove_unreachable_regions): Update for label sharing.
17143         (label_to_region_map): Likewise.
17144         (get_next_region_sharing_label): New function.
17145         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17146         prev_try pointers.
17147         (remove_eh_handler): Update.
17148         (remove_eh_region_and_replace_by_outer_of): New function.
17149         * except.h (struct eh_region): Add next_region_sharing_label.
17150         (remove_eh_region_and_replace_by_outer_of,
17151         get_next_region_sharing_label): Declare.
17152         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17153
17154 2009-04-25  Jan Hubicka  <jh@suse.cz>
17155
17156         * tree-cfg.c (split_critical_edges): Split also edges where we can't
17157         insert code even if they are not critical.
17158
17159 2009-04-25  Jan Hubicka  <jh@suse.cz>
17160
17161         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17162         (gimple_can_remove_branch_p): EH edges won't remove branch by
17163         redirection.
17164         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17165         updating of non-abnormal EH edges.
17166         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17167         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17168         (split_critical_edges): Split also edges where emitting code on them
17169         will lead to splitting later.
17170
17171 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17172             H.J. Lu  <hongjiu.lu@intel.com>
17173
17174         PR target/39590
17175         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17176         the configured assembler supports fildq and fistpq mnemonics.
17177         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17178         * configure: Regenerated.
17179         * config.in: Ditto.
17180
17181         * config/i386/i386.c (print_operand): Handle 'Z'.
17182         ['z']: Remove handling of special fild/fist suffixes.
17183         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17184         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17185         suffix of fild insn.
17186         (*floatsi<mode>2_vector_mixed): Ditto.
17187         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17188         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17189         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17190         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17191         * config/i386/gas.h (GAS_MNEMONICS): Remove.
17192
17193 2009-04-25  Ben Elliston  <bje@au.ibm.com>
17194
17195         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17196         the source of a set operation.
17197
17198 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
17199
17200         * target.h (struct gcc_target): Add case_values_threshold field.
17201         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17202         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17203         * targhooks.c (default_case_values_threshold): New function.
17204         * targhooks.h (default_case_values_threshold): Declare function.
17205         * stmt.c (expand_case): Use case_values_threshold target hook.
17206         * expr.h (case_values_threshold): Remove declartation.
17207         * expr.c (case_values_threshold): Remove function.
17208         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17209
17210         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17211         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17212         (avr_case_values_threshold): Declare as static.
17213         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17214
17215         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17216         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17217         (mn10300_case_values_threshold): New function.
17218
17219 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17220
17221         * ira.c (setup_cover_and_important_classes): Add enum cast.
17222
17223 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
17224
17225         * genpreds.c (write_enum_constraint_num): Output definition of
17226         CONSTRAINT_NUM_DEFINED_P macro.
17227         * ira.c (setup_cover_and_important_classes): Use
17228         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17229
17230 2009-04-24  DJ Delorie  <dj@redhat.com>
17231
17232         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17233         __SH2A_SINGLE_ONLY__ also.
17234
17235 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
17236
17237         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17238         (movdf_internal): Ditto.
17239         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17240         SFmode and DFmode constants.
17241         (ia64_print_operand): Add 'G' format for printing
17242         floating point constants.
17243
17244 2009-04-24  Richard Guenther  <rguenther@suse.de>
17245
17246         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
17247         from unsigned additions.
17248
17249 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
17250
17251         * c-typeck.c (set_init_index): Allow array designators that are
17252         not integer constant expressions with a pedwarn if pedantic.
17253
17254 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17255
17256         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
17257         zero if no overlap in nonzero bits between the operands.
17258
17259 2009-04-24  Ian Lance Taylor  <iant@google.com>
17260
17261         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
17262         (record_dead_and_set_regs): Likewise.
17263         * df.h (struct df_mw_hardreg): Change flags field to int.
17264         (struct df_base_ref): Likewise.
17265         (struct df): Change changeable_flags field to int.
17266         * df-scan.c (df_defs_record): Change clobber_flags to int.
17267         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
17268         constants rather than #define macros.
17269         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
17270         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
17271         (enum dwarf_calling_convention): Likewise.
17272         (enum dwarf_line_number_x_ops): Likewise.
17273         (enum dwarf_call_frame_info): Likewise.
17274         (enum dwarf_source_language): Likewise.
17275         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
17276         (add_calling_convention_attribute): Likewise.
17277         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
17278         (combine_comparisons): Change compcode to int.  Add cast to enum type.
17279         * genrecog.c (maybe_both_true_2): Change c to int.
17280         (write_switch): Likewise.  Add cast to enum type.
17281         * gimplify.c (gimplify_omp_for): Handle return values from
17282         gimplify_expr using MIN rather than bitwise or.
17283         (gimplify_expr): Add cast to enum type.
17284         * ipa-prop.c (update_jump_functions_after_inlining): Change
17285         IPA_BOTTOM to IPA_JF_UNKNOWN.
17286         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
17287         Add casts to enum type.
17288         (setup_cover_and_important_classes): Change cl to int.  Add casts
17289         to enum type.
17290         (setup_class_translate): Change cl and mode to int.
17291         (ira_init_once): Change mode to int.
17292         (free_register_move_costs): Likewise.
17293         (setup_prohibited_mode_move_regs): Add casts to enum type.
17294         * langhooks.c (add_builtin_function_common): Rework assertion that
17295         value fits bitfield.
17296         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
17297         * omega.c (omega_do_elimination): Avoid math on enum types.
17298         * optabs.c (expand_vec_shift_expr): Remove casts to int.
17299         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
17300         int local to handle integral_argment value.
17301         * regmove.c (try_auto_increment): Change PUT_MODE to
17302         PUT_REG_NOTE_KIND.
17303         * reload.c (push_secondary_reload): Add casts to enum type.
17304         (secondary_reload_class, find_valid_class): Likewise.
17305         * reload1.c (emit_input_reload_insns): Likewise.
17306         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
17307         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
17308         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
17309         constant.
17310         * tree.c (build_common_builtin_nodes): Add casts to enum type.
17311         * tree-complex.c (complex_lattice_t): Typedef to int rather than
17312         enum type.
17313         (expand_complex_libcall): Add casts to enum type.
17314         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
17315         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
17316         with ERROR_MARK, not NUM_TREE_CODES.
17317         (vect_create_epilog_for_reduction): Likewise.
17318         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
17319         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
17320         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
17321         enum machine_mode.
17322         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
17323         vect_unused_in_loop.  Change 0 to loop_vect.
17324         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
17325         * var-tracking.c (get_init_value): Change return type to enum
17326         var_init_status.
17327         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
17328         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
17329         arm_fp_model.
17330         (arm_override_options): Add casts to enum type.
17331         (arm_emit_tls_decoration): Likewise.
17332         * config/i386/i386.c (ix86_function_specific_restore): Add casts
17333         to enum type.
17334         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
17335         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
17336         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
17337         enum type.
17338         * config/s390/s390.c (code_for_builtin_64): Change to array of
17339         enum insn_code.
17340         (code_for_builtin_31): Likewise.
17341         (s390_expand_builtin): Change code_for_builtin to enum insn_code
17342         const *.
17343         * config/sparc/sparc.c (sparc_override_options): Change value
17344         field in struct code_model to enum cmodel.  In initializer change
17345         0 to NULL and add cast to enum type.
17346
17347         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
17348         Change all callers.  Issue a -Wc++-compat warning using
17349         lhs_origtype if necessary.
17350         (convert_for_assignment): Issue -Wc++-compat warnings about
17351         invalid conversions to enum type on assignment.
17352         * c-common.h (build_modify_expr): Update declaration.
17353
17354 2009-04-24  Nick Clifton  <nickc@redhat.com>
17355
17356         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
17357         (function_arg_advance): Likewise.
17358         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
17359         5th alternative.
17360
17361 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17362
17363         * config/s390/constraints.md ('I', 'J'): Fix condition.
17364
17365 2009-04-24  Diego Novillo  <dnovillo@google.com>
17366
17367         * gengtype-parse.c (parse_error): Add newline after message.
17368
17369 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17370
17371         * config/i386/sse.md (avxmodesuffixs): Removed.
17372         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
17373         (*avx_pinsr<ssevecsize>): This.
17374
17375 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17376
17377         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
17378         follow chains of regs with a single definition, and allow expressions
17379         that are function_invariant_p.
17380         (simple_rhs_p): Allow expressions that are function_invariant_p.
17381
17382 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
17383
17384         PR middle-end/39867
17385         * fold-const.c (fold_cond_expr_with_comparison): When folding
17386         > and >= to MAX, make sure the MAX uses the same type as the
17387         comparison's operands.
17388
17389 2009-04-24  Nick Clifton  <nickc@redhat.com>
17390
17391         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
17392         addressing for DImode accesses.
17393         (frv_print_operand_address): Handle PLUS case.
17394         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
17395
17396 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
17397
17398         PR rtl-optimization/39794
17399         * alias.c (canon_true_dependence): Add x_addr argument.
17400         * rtl.h (canon_true_dependence): Adjust prototype.
17401         * cse.c (check_dependence): Adjust canon_true_dependence callers.
17402         * cselib.c (cselib_invalidate_mem): Likewise.
17403         * gcse.c (compute_transp): Likewise.
17404         * dse.c (scan_reads_nospill): Likewise.
17405         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
17406         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
17407         canon_base_addr of the group, plus optional offset.
17408         (struct group_info): Rename canon_base_mem to
17409         canon_base_addr.
17410         (get_group_info): Set canon_base_addr to canon_rtx of base, not
17411         canon_rtx of base_mem.
17412
17413 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
17414
17415         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
17416         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
17417
17418 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17419
17420         * config/spu/spu-builtins.h: Delete file.
17421
17422         * config/spu/spu.h (enum spu_builtin_type): Move here from
17423         spu-builtins.h.
17424         (struct spu_builtin_description): Likewise.  Add GTY marker.
17425         Do not use enum spu_function_code or enum insn_code.
17426         (spu_builtins): Add extern declaration.
17427
17428         * config/spu/spu.c: Do not include "spu-builtins.h".
17429         (enum spu_function_code, enum spu_builtin_type_index,
17430         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
17431         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
17432         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
17433         unsigned_V2DI_type_node): Move here from spu-builtins.h.
17434         (spu_builtin_types): Make static.  Add GTY marker.
17435         (spu_builtins): Add extern declaration with GTY marker.
17436         Include "gt-spu.h".
17437
17438         * config/spu/spu-c.c: Do not include "spu-builtins.h".
17439         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
17440         Check programmatically whether all parameters are scalar.
17441
17442         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
17443
17444 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
17445
17446         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
17447         assignment from the constructor either if the target is volatile.
17448
17449 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
17450
17451         * config/arm/arm.md (insv): Do not share operands[0].
17452
17453 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
17454
17455         * config/vxlib-tls.c (active_tls_threads): Delete.
17456         (delete_hook_installed): New.
17457         (tls_delete_hook): Don't delete the delete hook.
17458         (tls_destructor): Delete it here.
17459         (__gthread_set_specific): Adjust installing the delete hook.
17460         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
17461         __gthread_leave_tsd_dtor_context.
17462
17463 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
17464
17465         * c-format.c (gcc_tdiag_char_table): Add support for %E.
17466
17467 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
17468
17469         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
17470         enum type.
17471         (alpha_rtx_costs): Ditto.
17472         (emit_unlikely_jump): Use add_reg_note.
17473         (emit_frame_store_1): Ditto.
17474         (alpha_expand_prologue): Ditto.
17475         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17476         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
17477
17478 2009-04-23  Nick Clifton  <nickc@redhat.com>
17479
17480         * config/v850/v850.md (epilogue): Remove suppressed code.
17481         (return): Rename to return_simple and remove test of frame size.
17482         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
17483         to gen_return_simple.
17484
17485 2009-04-22  Jing Yu  <jingyu@google.com>
17486
17487         PR testsuite/39781
17488         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
17489
17490 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17491
17492         PR C/31499
17493         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
17494         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
17495         value is a VECTOR_CST, the element type is the element type of the
17496         vector.
17497
17498 2009-04-22  DJ Delorie  <dj@redhat.com>
17499
17500         * config/m32c/m32c.h: Update GTY annotations to new syntax.
17501
17502 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
17503
17504         * alias.c (find_base_term): Move around LO_SUM case, so that
17505         CONST falls through into PLUS/MINUS handling.
17506
17507         PR c/39855
17508         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
17509         into 0, use omit_one_operand.
17510
17511 2009-04-23  Ben Elliston  <bje@au.ibm.com>
17512
17513         * config/rs6000/linux-unwind.h (get_regs): Remove type
17514         puns. Change the type of `pc' to an array of unsigned ints and
17515         update all users.  Constify frame24.
17516
17517 2009-04-22  DJ Delorie  <dj@redhat.com>
17518
17519         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
17520         declarations before code.
17521         (current_function_special_page_vector): Likewise.
17522         (m32c_expand_insv): Silence a warning.
17523
17524 2009-04-21  Taras Glek  <tglek@mozilla.com>
17525
17526         * alias.c: Update GTY annotations to new syntax.
17527         * basic-block.h: Likewise.
17528         * bitmap.h: Likewise.
17529         * c-common.h: Likewise.
17530         * c-decl.c: Likewise.
17531         * c-parser.c: Likewise.
17532         * c-pragma.c: Likewise.
17533         * c-tree.h: Likewise.
17534         * cfgloop.h: Likewise.
17535         * cgraph.h: Likewise.
17536         * config/alpha/alpha.c: Likewise.
17537         * config/arm/arm.h: Likewise.
17538         * config/avr/avr.h: Likewise.
17539         * config/bfin/bfin.c: Likewise.
17540         * config/cris/cris.c: Likewise.
17541         * config/darwin.c: Likewise.
17542         * config/frv/frv.c: Likewise.
17543         * config/i386/i386.c: Likewise.
17544         * config/i386/i386.h: Likewise.
17545         * config/i386/winnt.c: Likewise.
17546         * config/ia64/ia64.h: Likewise.
17547         * config/iq2000/iq2000.c: Likewise.
17548         * config/mips/mips.c: Likewise.
17549         * config/mmix/mmix.h: Likewise.
17550         * config/pa/pa.c: Likewise.
17551         * config/pa/pa.h: Likewise.
17552         * config/rs6000/rs6000.c: Likewise.
17553         * config/s390/s390.c: Likewise.
17554         * config/sparc/sparc.c: Likewise.
17555         * config/xtensa/xtensa.c: Likewise.
17556         * cselib.h: Likewise.
17557         * dbxout.c: Likewise.
17558         * dwarf2out.c: Likewise.
17559         * except.c: Likewise.
17560         * except.h: Likewise.
17561         * fixed-value.h: Likewise.
17562         * function.c: Likewise.
17563         * function.h: Likewise.
17564         * gimple.h: Likewise.
17565         * integrate.c: Likewise.
17566         * optabs.c: Likewise.
17567         * output.h: Likewise.
17568         * real.h: Likewise.
17569         * rtl.h: Likewise.
17570         * stringpool.c: Likewise.
17571         * tree-data-ref.c: Likewise.
17572         * tree-flow.h: Likewise.
17573         * tree-scalar-evolution.c: Likewise.
17574         * tree-ssa-address.c: Likewise.
17575         * tree-ssa-alias.h: Likewise.
17576         * tree-ssa-operands.h: Likewise.
17577         * tree.c: Likewise.
17578         * tree.h: Likewise.
17579         * varasm.c: Likewise.
17580         * varray.h: Likewise.
17581         * vec.h: Likewise.
17582         * coretypes.h: Do not define GTY macro if it is already defined.
17583         * doc/gty.texi: Update GTY documentation to new syntax.
17584         * gengtype-lex.l: Enforce attribute-like syntax for GTY
17585         annotations on structs.
17586         * gengtype-parse.c: Likewise.
17587
17588 2009-04-22  Mark Heffernan  <meheff@google.com>
17589
17590         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
17591
17592 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17593
17594         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
17595         where appropriate.
17596
17597 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17598
17599         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
17600         the same as a PLUS without a shift.  Increase the cost of a
17601         CONST_INT in MULT.
17602
17603 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17604
17605         * Makefile.in: Update dependencies.
17606         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
17607         * errors.h: Remove bogus comment about compatibility.
17608         (warning): Update declaration.
17609         * genautomata.c: Update all calls to warning.
17610         * gimple.c: Do not include errors.h. Include toplev.h.
17611         * tree-ssa-structalias.c: Do not include errors.h.
17612         * omega.c: Likewise.
17613         * tree-ssa-reassoc.c: Likewise.
17614         * config/spu/spu-c.c: Likewise.
17615         * config/spu/t-spu-elf: Update dependencies.
17616
17617 2009-04-22  Richard Guenther  <rguenther@suse.de>
17618
17619         PR tree-optimization/39824
17620         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
17621         make sure the types are compatible.
17622
17623 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17624
17625         PR c++/14875
17626         * c-common.c (c_parse_error): Take a token_flags parameter.
17627         Use token_type for the token type instead.
17628         Pass token_flags to cpp_type2name.
17629         * c-common.h (c_parse_error): Update declaration.
17630         * c-parser.c (c_parser_error): Pass 0 as token flags.
17631
17632 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
17633
17634         PR rtl-optimization/39580
17635         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
17636
17637 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17638
17639         * function.c (expand_function_end): Do not emit a jump to the "naked"
17640         return label for fall-through returns.
17641         * except.c (sjlj_emit_function_exit): Always place the call to the
17642         unregister function at the location installed by expand_function_end.
17643
17644 2009-04-22  Richard Guenther  <rguenther@suse.de>
17645
17646         PR tree-optimization/39845
17647         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
17648         (gen_inbound_check): Likewise.
17649
17650 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
17651
17652         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
17653         padding for PPC.
17654         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
17655         * config/vxlib.c (__gthread_once): Add race guard for PPC.
17656
17657 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17658
17659         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
17660         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
17661         shift counts to avoid out-of-bounds array accesses.
17662
17663 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17664
17665         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
17666         (Pmode): Move above.
17667
17668 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
17669
17670         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
17671         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
17672         GET_CODE macro.  Use IN_RANGE macro where appropriate.
17673         * config/alpha/alpha.h: Ditto.
17674         * config/alpha/alpha.md: Ditto.
17675         * config/alpha/constraints.md: Ditto.
17676         * config/alpha/predicates.md: Ditto.
17677
17678 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17679
17680         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
17681         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17682         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17683         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17684         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17685         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17686         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17687         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17688         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17689         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17690         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17691         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17692         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17693         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17694         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17695         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17696         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17697         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17698         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17699         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17700         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17701         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17702         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17703         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17704         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17705         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17706         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17707
17708 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
17709
17710         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
17711         references from comments.
17712         * cfgbuild.c: (count_basic_blocks): Delete.
17713         (find_basic_blocks_1): Delete.
17714         (find_basic_blocks): Delete.
17715         * except.c (finish_eh_generation): Make static.  Move comment from
17716         except.h here.  Remove find_basic_blocks references from comments.
17717         * except.h (finish_eh_generation): Delete.
17718         * basic-block.h (find_basic_blocks): Delete.
17719         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
17720
17721 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
17722
17723         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
17724         (sdbout_parms):  Likewise.
17725
17726 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
17727
17728         * config/sh/sh.c (prepare_cbranch_operands): Use
17729         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
17730         (expand_cbranchdi4): Likewise.
17731         (from_compare): Add cast to enum type.
17732         (expand_cbranchsi4): Use add_reg_note.
17733         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
17734         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
17735         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
17736         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17737         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
17738         instead of CODE_FOR_nothing.
17739         (cbranchdi4): Likewise.  Fix the order of arguments for
17740         gen_rtx_fmt_ee.
17741         (push_fpscr): Use add_reg_note.
17742         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
17743         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
17744
17745 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
17746
17747         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
17748         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
17749         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
17750         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
17751         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
17752         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
17753         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
17754         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
17755         config/alpha/x-vms, config/arc/t-arc,
17756         config/arm/README-interworking, config/arm/arm-c.c,
17757         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
17758         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
17759         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
17760         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
17761         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
17762         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
17763         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
17764         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
17765         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
17766         config/cris/t-elfmulti, config/crx/t-crx,
17767         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
17768         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
17769         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
17770         config/h8300/t-h8300, config/i386/athlon.md,
17771         config/i386/darwin-libgcc.10.4.ver,
17772         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
17773         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
17774         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
17775         config/i386/t-linux64, config/i386/t-nwld,
17776         config/i386/t-rtems-i386, config/i386/t-sol2-10,
17777         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
17778         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
17779         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
17780         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
17781         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
17782         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
17783         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
17784         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
17785         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
17786         config/m68k/t-uclinux, config/mcore/t-mcore,
17787         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
17788         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
17789         config/mips/crtn.asm, config/mips/irix-crti.asm,
17790         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
17791         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
17792         config/mips/mips-fixed.md, config/mips/sb1.md,
17793         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
17794         config/mips/t-iris6, config/mips/t-isa3264,
17795         config/mips/t-libgcc-mips16, config/mips/t-linux64,
17796         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
17797         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
17798         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
17799         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
17800         config/mn10300/t-linux, config/mn10300/t-mn10300,
17801         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
17802         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
17803         config/picochip/libgccExtras/clzsi2.asm,
17804         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
17805         config/rs6000/darwin-libgcc.10.4.ver,
17806         config/rs6000/darwin-libgcc.10.5.ver,
17807         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
17808         config/rs6000/t-aix43, config/rs6000/t-aix52,
17809         config/rs6000/t-darwin, config/rs6000/t-fprules,
17810         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
17811         config/rs6000/t-lynx, config/rs6000/t-netbsd,
17812         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
17813         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
17814         config/rs6000/t-rtems, config/rs6000/t-spe,
17815         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
17816         config/score/t-score-elf, config/sh/divcost-analysis,
17817         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
17818         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
17819         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
17820         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
17821         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
17822         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
17823         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
17824         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
17825         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
17826         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
17827         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
17828         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
17829         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
17830         limitx.h, version.c, xcoff.h: Add copyright and license notices.
17831         * config/h8300/genmova.sh: Include copyright and license notices
17832         in generated output.
17833         * config/h8300/mova.md: Regenerate.
17834         * doc/install.texi2html: Include word "Copyright" in copyright
17835         notice and use name "Free Software Foundation, Inc.".
17836         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
17837         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
17838         ChangeLog-2007, ChangeLog-2008: Correct dates.
17839
17840 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
17841
17842         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
17843         NE_EXPR operations as well.
17844         * c-parser.c (c_parser_condition): Do not set location information on
17845         the condition.
17846         (c_parser_conditional_expression): Likewise.
17847         (c_parser_binary_expression): Set location information on operators.
17848         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
17849         TRUTH_NOT_EXPR has been folded.
17850         * fold-const.c (fold_truth_not_expr): Copy location information from
17851         the incoming expression to the outgoing one.
17852         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
17853         recursive calls on the LHS of the operator but pass that of the
17854         operator to recursive calls on the RHS of the operator.  Set it
17855         on the COND_EXPR.
17856         (shortcut_cond_expr): Set the locus of the operator on the second
17857         COND_EXPR and that of the expression on the first in degenerate cases.
17858         Pass the locus of the expression to calls to shortcut_cond_r.
17859         Set the locus of the 'then' block on the associated jump, if any.
17860         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
17861         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
17862         expression to call to gimplify_boolean_expr.
17863
17864 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
17865
17866         * config.gcc: Add additional configuration for
17867         i686-w64-mingw* and x86_64-w64-mingw* triplet.
17868         * config/i386/mingw-w64.h: New mingw-w64 specific header.
17869         (CPP_SPEC): Redefine for allowing -municode option.
17870         (STARTFILE_SPEC): Likewise.
17871         * config/i386/t-mingw-w64: New.
17872         * config/i386/mingw-w64.opt: New.
17873         (municode): Add new target option.
17874         * doc/invoke.texi (municode): Add documentation for new option.
17875
17876 2009-04-21  Ian Lance Taylor  <iant@google.com>
17877
17878         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17879         Correct test for number of arguments.
17880         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
17881
17882 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
17883
17884         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
17885         argument of emit_library_call.
17886
17887 2009-04-21  Richard Guenther  <rguenther@suse.de>
17888
17889         PR middle-end/39829
17890         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
17891         inside VIEW_CONVERT_EXPRs.
17892
17893 2009-04-21  Martin Jambor  <mjambor@suse.cz>
17894
17895         * tree-switch-conversion.c (build_constructors): Split a long line.
17896         (constructor_contains_same_values_p): New function.
17897         (build_one_array): Create assigns of constants if possible, do not
17898         call mark_sym_for_renaming, call update_stmt.
17899         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
17900         make_rename_temp.  Do not call mark_symbols_for_renaming, call
17901         update_stmt.
17902         (gen_def_assigns): Do not call mark_symbols_for_renaming or
17903         find_new_referenced_vars, call update_stmt.
17904         (gen_inbound_check): Use create_tmp_var and create ssa names manually
17905         instead of calling make_rename_temp.  Do not call
17906         find_new_referenced_vars or mark_symbols_for_renaming, call
17907         update_stmt.
17908
17909 2009-04-21  Richard Guenther  <rguenther@suse.de>
17910
17911         PR tree-optimization/39827
17912         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
17913         (tree_ssa_phiprop): Pass the correct array size.
17914
17915 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
17916
17917         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
17918
17919 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17920
17921         PR 16202
17922         * c-typeck.c (lvalue_p): Move declaration ...
17923         * c-common.h (lvalue_p): ... to here.
17924         * c-common.c (candidate_equal_p): New.
17925         (add_tlist): Use it.
17926         (merge_tlist): Use it.
17927         (warn_for_collisions_1): Likewise.
17928         (warning_candidate_p): Accept more candidates.
17929         (verify_tree): A warning candidate can be an expression. Use
17930         candidate_equal_p.
17931
17932 2009-04-21  Ben Elliston  <bje@au.ibm.com>
17933
17934         PR target/5267
17935         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
17936         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
17937         options.  Remove -mcall-solaris documentation.
17938
17939 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17940
17941         PR c++/13358
17942         * doc/invoke.texi (-Wlong-long): Update description.
17943         * c-lex (interpret_integer): Only warn if there was no previous
17944         overflow and -Wlong-long is enabled.
17945         * c-decl.c (declspecs_add_type): Drop redundant flags.
17946         * c.opt (Wlong-long): Init to -1.
17947         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
17948         and front-end warn_long_long. Wlong-long only depends on other
17949         flags if it is uninitialized.
17950         * c-parser.c (disable_extension_diagnostics): warn_long_long is
17951         the same for CPP and FE.
17952         (restore_extension_diagnostics): Likewise.
17953
17954 2009-04-20  Ian Lance Taylor  <iant@google.com>
17955
17956         Fix enum conversions which are invalid in C++:
17957         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
17958         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
17959         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
17960         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
17961         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
17962         (dbxout_parms): Likewise.
17963         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
17964         (df_clear_flags): Likewise.
17965         * df-problems.c (df_rd_bb_local_compute_process_def): Change
17966         top_flag parameter to int.
17967         (df_chain_create_bb_process_use): Likewise.
17968         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
17969         Remove cast.
17970         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
17971         (df_ref_create_structure, df_def_record_1): Likewise.
17972         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
17973         (df_notes_rescan): Change 0 to VOIDmode in function call.
17974         (df_get_call_refs, df_insn_refs_collect): Likewise.
17975         (df_bb_regs_collect): Likewise.
17976         (df_entry_block_defs_collect): Likewise.
17977         (df_exit_block_uses_collect): Likewise.
17978         * df.h: Update declarations.
17979         * double-int.c (double_int_divmod): Add cast to enum type.
17980         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
17981         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
17982         (based_loc_descr): Likewise.
17983         (loc_descriptor_from_tree_1): Change first_op and second_op to
17984         enum dwarf_location_atom.  Add cast to enum type.
17985         * expmed.c (init_expmed): Change 0 to SET in function call.
17986         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
17987         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
17988         (do_store_flag): Likewise.
17989         * fixed-value.h (struct fixed_value): Change mode to enum
17990         machine_mode.
17991         * function.c (assign_parms): Change 0 to VOIDmode in function call.
17992         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
17993         function call.
17994         (insert_insn_decl, insert_decl, insert_state): Likewise.
17995         (automata_list_finish): Likewise.
17996         * genrecog.c (process_define_predicate): Add cast to enum type.
17997         * gensupport.c (init_predicate_table): Add cast to enum type.
17998         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
17999         function call.
18000         (gimple_build_call_1, gimple_build_label): Likewise.
18001         (gimple_build_goto, gimple_build_asm_1): Likewise.
18002         (gimple_build_switch_1, gimple_build_cdt): Likewise.
18003         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18004         (enum fallback): Rename from enum fallback_t.
18005         (fallback_t): Typedef as int.
18006         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18007         GSI_SAME_STMT in function call.
18008         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18009         enum type.
18010         (setup_reg_class_relations): Likewise.
18011         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
18012         (setup_prohibited_class_mode_regs): Add cast to enum type.
18013         (setup_prohibited_mode_move_regs): Likewise.
18014         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18015         (record_address_regs): Change i to enum reg_class.
18016         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18017         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18018         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18019         (GET_MODE_2XWIDER_MODE): Likewise.
18020         (GET_CLASS_NARROWEST_MODE): Likewise.
18021         * omp-low.c (expand_omp_for): Add cast to enum type.
18022         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18023         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
18024         * postreload.c (reload_cse_simplify_operands): Change rclass local
18025         to enum reg_class.
18026         * predict.c (combine_predictions_for_insn): Change best_predictor
18027         and predictor to enum br_predictor.
18028         (combine_predictions_for_bb): Likewise.
18029         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
18030         use SET_PREDICT_EXPR_OUTCOME.
18031         * real.c (real_arithmetic): Change icode to code in function call.
18032         * reginfo.c (init_move_cost): Add casts to enum type.
18033         (init_reg_sets_1, init_fake_stack_mems): Likewise.
18034         * regmove.c (regclass_compatible_p): Change class0 and class1 to
18035         enum reg_class.
18036         * reload.c (find_valid_class): Add casts to enum type.
18037         (push_reload): Change 0 to NO_REGS in function call.
18038         (find_reloads): Change this_alternative to array of enum
18039         reg_class.  Remove some now-unnecessary casts.
18040         (make_memloc): Change 0 to VOIDmode in function call.
18041         * reload1.c (reload): Change 0 to VOIDmode in function call.
18042         (eliminate_regs_1, elimination_effects): Likewise.
18043         (eliminate_regs_in_insn): Likewise.
18044         (emit_input_reload_insns): Add cast to enum type.
18045         (delete_output_reload): Change 0 to VOIDmode in function call.
18046         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
18047         to enum type in function call.
18048         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
18049         (SET_PREDICT_EXPR_OUTCOME): Define.
18050         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
18051         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
18052         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
18053         (dump_function): Likewise.
18054         * tree-dump.h: Update declarations.
18055         * tree-pass.h: Update declarations.
18056         * varasm.c (assemble_integer): Change mclass to enum mode_class.
18057         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
18058         enum type.
18059         (arm_rtx_costs_1): Correct parenthesization.
18060         (arm_rtx_costs): Add casts to enum type.
18061         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
18062         (vfp_emit_fstmd): Use add_rg_note.
18063         (emit_multi_reg_push, emit_sfm): Likewise.
18064         (thumb_set_frame_pointer): Likewise.
18065         (arm_expand_prologue): Likewise.
18066         (arm_regno_class): Change return type to enum reg_class.
18067         (thumb1_expand_prologue): Use add_reg_note.
18068         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
18069         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
18070         in function call.
18071         * config/arm/gentune.sh: Add cast to enum type.
18072         * config/arm/arm-tune.md: Rebuild.
18073         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
18074         (ix86_split_fp_branch, predict_jump): Likewise.
18075         (ix86_expand_multi_arg_builtin): Change sub_code from enum
18076         insn_code to enum rtx_code.
18077         (ix86_builtin_vectorized_function): Add cast to enum type.
18078         * config/i386/i386.md (truncdfsf2): Change slot to enum
18079         ix86_stack_slot.
18080         (truncxf<mode>2, isinf<mode>2): Likewise.
18081         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
18082         enum type.
18083         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18084         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18085         (insert_bundle_state): Change 1 to INSERT in function call.
18086         (ia64_add_bundle_selector_before): Likewise.
18087         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18088         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18089         (restore_stack_nonlocal): Likewise.
18090         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18091         function call.
18092         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18093         function call.
18094         (mips_rtx_costs): Likewise.
18095         (mips_override_options): Add casts to enum type.
18096         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18097         in function call.
18098         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18099         (store_reg, set_reg_plus_d): Likewise.
18100         (hppa_expand_prologue, hppa_profile_hook): Likewise.
18101         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18102         cast to enum type.
18103         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18104         function call.
18105         (emit_unlikely_jump): Use add_reg_note.
18106         (rs6000_emit_allocate_stack): Likewise.
18107         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18108         (output_toc): Change 1 to INSERT in function call.
18109         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18110         (rs6000_initialize_trampoline): Likewise.
18111         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18112         function call.
18113         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18114         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18115         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18116         (save_gprs): Use add_reg_note.
18117         (s390_emit_prologue): Likewise.
18118         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18119         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18120         (sparc_fold_builtin): Add cast to enum type.
18121         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18122         enum insn_code.
18123         (spu_expand_prologue): Use add_reg_note.
18124         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18125
18126 2009-04-20  Ian Lance Taylor  <iant@google.com>
18127
18128         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18129         (c_parser_postfix_expression_after_primary): Get VEC for list of
18130         arguments.  Get original types of arguments.  Call
18131         build_function_call_vec.
18132         (cached_expr_list_1, cached_expr_list_2): New static variables.
18133         (c_parser_expr_list): Change return type to VEC *.  Add
18134         p_orig_types parameter.  Change all callers.
18135         (c_parser_release_expr): New static function.
18136         (c_parser_vec_to_tree_list): New static function.
18137         * c-typeck.c (build_function_call): Rewrite to build a VEC and
18138         call build_function_call_vec.
18139         (build_function_call_vec): New function, based on old
18140         build_function_call.
18141         (convert_arguments): Remove nargs and argarray parameters.  Change
18142         values to a VEC.  Add origtypes parameter.
18143         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
18144         (convert_for_assignment): Add origtype parameter.  Change all
18145         callers.  If warn_cxx_compat, check for conversion to an enum
18146         type when calling a function.
18147         (store_init_value): Add origtype parameter.  Change all callers.
18148         (digest_init): Likewise.
18149         (struct init_node): Add origtype field.
18150         (add_pending_init): Add origtype parameter.  Change all callers.
18151         (output_init_element): Likewise.
18152         (output_pending_init_elements): Pass origtype from init_node to
18153         output_init_element.
18154         (process_init_element): Pass origtype from c_expr to
18155         output_init_element.
18156         (c_finish_return): Add origtype parameter.  Change all callers.
18157         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
18158         caller.
18159         (sync_resolve_params): Likewise.
18160         (sync_resolve_return): Change params to first_param.  Change caller.
18161         (resolve_overloaded_builtins): Change params to VEC *.  Change
18162         callers.  Save first parameter around call to build_function_call_vec.
18163         * c-decl.c (finish_decl): Add origtype parameter.  Change all
18164         callers.  Call build_function_call_vec rather than
18165         build_function_call for cleanup.
18166         * c-tree.h: Update declarations.
18167         * c-common.h: Update declarations.
18168         * stub-objc.c (objc_rewrite_function_call): Change parameter from
18169         params to first_param.
18170         * target.h (struct gcc_target): Change resolve_overloaded_builtin
18171         params parameter from tree to void *.
18172         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18173         Change arglist parameter to have type void *, and to be a pointer
18174         to a VEC.
18175         * config/rs6000/rs6000-protos.h
18176         (altivec_resolve_overloaded_builtin): Update declaration.
18177         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18178         fnargs parameter to have type void *, and to be a pointer to a
18179         VEC.  Call build_function_call_vec instead of
18180         build_function_call.
18181         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18182
18183 2009-04-20  Joey Ye  <joey.ye@intel.com>
18184             Xuepeng Guo  <xuepeng.guo@intel.com>
18185             H.J. Lu  <hongjiu.lu@intel.com>
18186
18187         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18188
18189         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18190         (IX86_LEA_PRIORITY): Likewise.
18191         (distance_non_agu_define): New function.
18192         (distance_agu_use): Likewise.
18193         (ix86_lea_for_add_ok): Likewise.
18194         (ix86_dep_by_shift_count): Likewise.
18195
18196         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18197         should split for LEA.
18198
18199         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18200         function.
18201         (ix86_dep_by_shift_count): Likewise.
18202
18203 2009-04-20  Richard Guenther  <rguenther@suse.de>
18204
18205         * expr.c (handled_component_p): Move ...
18206         * tree.h (handled_component_p): ... here.
18207         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18208         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18209         and REALPART_EXPR to be in one group.
18210
18211 2009-04-20  Richard Guenther  <rguenther@suse.de>
18212
18213         * basic-block.h (get_all_dominated_blocks): Declare.
18214         * dominance.c (get_all_dominated_blocks): New function.
18215         * tree-cfg.c (get_all_dominated_blocks): Remove.
18216         (remove_edge_and_dominated_blocks): Adjust.
18217         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18218         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
18219         instead of recursing.
18220
18221 2009-04-20  Doug Kwan  <dougkwan@google.com>
18222
18223         * cgraph.h (cgraph_node_ptr): New type for vector functions.
18224         (struct cgraph_node_set_def): New type.
18225         (cgraph_node_set) New type. Also declare vector functions.
18226         (struct cgraph_node_set_element_def): New type.
18227         (cgraph_node_set_element): Ditto.
18228         (cgraph_node_set_iterator): New iterator type.
18229         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18230         cgraph_node_set_remove, dump_cgraph_node_set,
18231         debug_cgraph_node_set): New prototypes.
18232         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18233         cgraph_node_set_size): New inlines.
18234         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18235         including cgraph.h.
18236         (struct ipa_opt_pass): Add struct cgraph_node_set_def
18237         argument to function 'write_summary'.
18238         * ipa.c: Include ggc.h.
18239         (hash_cgraph_node_set_element,
18240         eq_cgraph_node_set_element, cgraph_node_set_new,
18241         cgraph_node_set_add, cgraph_node_set_remove,
18242         cgraph_node_set_find, dump_cgraph_node_set,
18243         debug_cgraph_node_set): New functions.
18244         * Makefile.in (ipa.o): Add dependency on GGC_H.
18245
18246 2009-04-20  Ira Rosen  <irar@il.ibm.com>
18247
18248         PR tree-optimization/39675
18249         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
18250         check of the return code of vect_schedule_slp. Check that
18251         stmt_vec_info still exists for the statement, before checking its
18252         vectorization type.
18253
18254 2009-04-20  Michael Matz  <matz@suse.de>
18255
18256         * Makefile.in (generated_files): Take out $(simple_generated_c).
18257
18258 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
18259
18260         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
18261         (UINTPTR_TYPE):  Likewise.
18262
18263 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18264
18265         PR c/37481
18266         * c-typeck.c (digest_init): Check for initializing an array with a
18267         string literal.
18268
18269 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18270
18271         PR c/19771
18272         * c-semantics.c (pop_stmt_list): Propagate
18273         STATEMENT_LIST_HAS_LABEL to parent statement list.
18274
18275 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
18276
18277         * config/mips/mips.h (mips_tune_attr): New macro.
18278         * config/mips/mips.md (cpu): Use it.
18279
18280 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18281
18282         PR c/38243
18283         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
18284         declaring a tag.
18285
18286 2009-04-19  Diego Novillo  <dnovillo@google.com>
18287
18288         * toplev.c (compile_file): Move call to coverage_finish ...
18289         * cgraphunit.c (ipa_passes): ... here.
18290         Call cgraph_process_new_functions.
18291         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
18292         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
18293
18294 2009-04-19  Jan Hubicka  <jh@suse.cz>
18295
18296         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
18297         cfun.
18298         (dump_cgraph_node): Dump can throw external flag.
18299         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
18300
18301 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18302
18303         PR c/32061
18304         PR c++/36954
18305         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
18306         * common.opt (Wlogical-op): Move from here...
18307         * c.opt (Wlogical-op): ... to here.
18308         * c-typeck.c (parser_build_binary_op): Update call to
18309         warn_logical_operator.
18310         * c-opts.c (c_common_post_options): Enable warn_logical_op with
18311         extra_warnings.
18312         * c-common.c (warn_logical_op): Update.
18313         * c-common.h (warn_logical_op): Update declaration.
18314
18315 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
18316
18317         * tree.c (protected_set_expr_location): Fix formatting.
18318
18319 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18320
18321         PR c/27676
18322         * c-typeck.c (readonly_warning): new.
18323         (build_unary_op, build_modify_expr): Use readonly_warning for
18324         storing into something readonly but not const-qualified.
18325
18326 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18327
18328         PR c/22367
18329         * c-typeck.c (build_unary_op): Check for taking address of
18330         expression of type void.
18331
18332 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18333
18334         PR c/35210
18335         * c-typeck.c (build_function_call): Check for calling a function
18336         with qualified void return types.  Call require_complete_type when
18337         generating a trap.
18338
18339 2009-04-18  Jan Hubicka  <jh@suse.cz>
18340
18341         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
18342         Set nothrow flag.
18343         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
18344         can_throw_external flag.
18345         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
18346         * ipa-pure-const.c (ignore_edge): New function.
18347         (propagate): Compute order for NOTHROW computation; set NOTHROWs
18348         only over can_throw_external edges.
18349         (local_pure_const): Add nothrow flag.
18350         * ipa-utils.c (searchc): Add ignore_edge callback.
18351         (ipa_utils_reduced_inorder): Add ignore_edge callback.
18352         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
18353         (set_nothrow_function_flags): Update cgraph.
18354         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
18355
18356 2009-04-18  Richard Guenther  <rguenther@suse.de>
18357
18358         PR middle-end/39804
18359         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
18360         (fold_stmt): ... this and ...
18361         (fold_stmt_inplace): ... this.
18362         (fold_stmt_1): Fold references in calls and asms.
18363         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
18364
18365 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18366
18367         * tree-vrp.c (ssa_name_nonzero_p): Remove.
18368         * tree.h: Remove the prototype for ssa_name_nonzero_p.
18369
18370 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18371
18372         * tree.c (function_args_count): Remove.
18373         * tree.h: Remove the prototype for function_args_count.
18374
18375 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18376
18377         * tree-iterator.c (expr_only): Remove.
18378         * tree.h: Remove the prototype for expr_only.
18379
18380 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18381
18382         * reginfo.c (cannot_change_mode_set_regs): Remove.
18383         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
18384
18385 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
18386
18387         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
18388         whether operands 0 and 1 overlaps.
18389
18390 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18391
18392         PR middle-end/36902
18393         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
18394         pointer. Use warning_at instead of warning.
18395         (search_for_addr_array): Likewise.
18396         (check_array_bounds): Likewise.
18397         (check_all_array_refs): Check that the incoming edge is not in the
18398         list of edges to be removed.
18399         (check_all_array_refs): Avoid the temporal pointer.
18400         (vrp_visit_cond_stmt): Fix typo.
18401         (simplify_switch_using_ranges): Handle the case where the switch
18402         index is an integer constant.
18403
18404 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
18405
18406         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
18407
18408 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18409
18410         * doc/extend.texi, doc/invoke.texi: Fix typos.
18411
18412 2009-04-17  Cary Coutant  <ccoutant@google.com>
18413
18414         * tree-flow-inline.h (get_lineno): Fix inverted test.
18415
18416 2009-04-17  Diego Novillo  <dnovillo@google.com>
18417
18418         * tree-ssa-pre.c (create_expression_by_pieces): Remove
18419         assertion for AVAIL_OUT.
18420
18421 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
18422
18423         PR target/38627
18424         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
18425         * config/sh/linux-atomic.asm: Likewise.
18426
18427 2009-04-17  Diego Novillo  <dnovillo@google.com>
18428
18429         * except.c (debug_eh_tree): New.
18430         (struct eh_region, struct eh_status): Move ...
18431         * except.h: ... here.
18432         (add_type_for_runtime): Declare extern.
18433         (lookup_type_for_runtime): Likewise.
18434         (debug_eh_tree): Declare.
18435         * Makefile.in (GTFILES): List except.h before except.c
18436
18437 2009-04-17  Diego Novillo  <dnovillo@google.com>
18438
18439         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
18440         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
18441         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
18442         (find_vars_r): ... here.
18443         * tree-flow.h (find_referenced_vars_in): Declare.
18444         * tree-ssa-pre.c (create_expression_by_pieces): Assert
18445         that AVAIL_OUT exists for BLOCK.
18446         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
18447         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
18448         (tree-parloops.o): Likewise.
18449
18450 2009-04-17  Simon Baldwin  <simonb@google.com>
18451
18452         * toplev.c (default_tree_printer): Add handling for %E format.
18453
18454 2009-04-17  Diego Novillo  <dnovillo@google.com>
18455
18456         * tree-pretty-print.c (dump_generic_node): Add break after
18457         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
18458         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
18459         FUNCTION_TYPE together.  Call print_struct_decl when printing
18460         structures and TDF_SLIM is not given.
18461         (print_struct_decl): Fix logic for detecting recursion.
18462
18463 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18464
18465         PR 31567
18466         * gcc.c (create_at_file): New.
18467         (compile_input_file_p): New.
18468         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
18469         * main.c (main): Update call to toplev_main.
18470         * toplev.c (toplev_main): Change signature. Call expandargv.
18471         * toplev.h (toplev_main): Change signature.
18472
18473 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18474
18475         * dwarf2out.c (field_byte_offset): Use the type size as the field size
18476         if the latter is not constant.
18477
18478 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
18479
18480         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
18481
18482 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18483
18484         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
18485         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
18486
18487 2009-04-17  Richard Guenther  <rguenther@suse.de>
18488
18489         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18490         Handle component references view-converting an invariant address.
18491
18492 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
18493
18494         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
18495         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
18496         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
18497         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
18498         Use @deftypevr rather than @deftypevar.
18499
18500 2009-04-17  Richard Guenther  <rguenther@suse.de>
18501
18502         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
18503         (get_prop_source_stmt): Likewise.
18504         (can_propagate_from): Likewise.
18505
18506 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
18507
18508         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
18509         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
18510         (--with-multilib-list): Add default value.
18511         * configure: Regenerate.
18512         * Makefile.in (TM_ENDIAN_CONFIG): Define.
18513         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
18514         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
18515         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
18516         Don't add default cpu to multilib list unnecessarily, but do enable
18517         the relevant compiler option..
18518         Add support for --with-multilib-list=<blank> and
18519         --with-multilib-list=!<somelib> to supress unwanted multilibs.
18520         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
18521         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
18522         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
18523         TM_MULTILIB_CONFIG.
18524         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
18525         (MULTILIB_OSDIRNAMES): New variable.
18526         * config/sh/t-1e: Delete file.
18527         * config/sh/t-mlib-sh1: Delete file.
18528         * config/sh/t-mlib-sh2: Delete file.
18529         * config/sh/t-mlib-sh2a: Delete file.
18530         * config/sh/t-mlib-sh2a-nofpu: Delete file.
18531         * config/sh/t-mlib-sh2a-single: Delete file.
18532         * config/sh/t-mlib-sh2a-single-only: Delete file.
18533         * config/sh/t-mlib-sh2e: Delete file.
18534         * config/sh/t-mlib-sh3e: Delete file.
18535         * config/sh/t-mlib-sh4: Delete file.
18536         * config/sh/t-mlib-sh4-nofpu: Delete file.
18537         * config/sh/t-mlib-sh4-single: Delete file.
18538         * config/sh/t-mlib-sh4-single-only: Delete file.
18539         * config/sh/t-mlib-sh4a: Delete file.
18540         * config/sh/t-mlib-sh4a-nofpu: Delete file.
18541         * config/sh/t-mlib-sh4a-single: Delete file.
18542         * config/sh/t-mlib-sh4a-single-only: Delete file.
18543         * config/sh/t-mlib-sh4al: Delete file.
18544         * config/sh/t-mlib-sh5-32media: Delete file.
18545         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
18546         * config/sh/t-mlib-sh5-64media: Delete file.
18547         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
18548         * config/sh/t-mlib-sh5-compact: Delete file.
18549         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
18550         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
18551         * doc/install.texi (Options specification): Add
18552         --with-multilib-list and --with-endian.
18553
18554 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18555
18556         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
18557         REVISION_c.
18558         (OBJS-common): Add plugin-version.o.
18559         (plugin-version.o): New.
18560         * gcc-plugin.h (plugin_gcc_version): New.
18561         (plugin_default_version_check): New.
18562         (plugin_init_func, plugin_init): Add version argument.
18563         * plugin-version.c: New.
18564         * plugin.c (str_plugin_gcc_version_name): New.
18565         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
18566         pass it to the init function.
18567         (plugin_default_version_check): New.
18568
18569 2009-04-17  Richard Guenther  <rguenther@suse.de>
18570
18571         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
18572         for decl-vs-decl disambiguation.
18573
18574 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
18575
18576         * config/s390/s390.h (s390_tune_attr): New macro definition.
18577         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
18578
18579 2009-04-17  Richard Guenther  <rguenther@suse.de>
18580
18581         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
18582         (fold_stmt_r): Likewise.
18583         (maybe_fold_reference): New function.
18584         (fold_gimple_assign): Handle cases fold_stmt_r did.
18585         (fold_stmt): Do not use fold_stmt_r.
18586         (fold_stmt_inplace): Likewise.
18587
18588 2009-04-17  Richard Guenther  <rguenther@suse.de>
18589
18590         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
18591         (record_equivalences_from_stmt): Remove useless checks and
18592         simplifications.
18593         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
18594         the type is already suitable.
18595
18596 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
18597
18598         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
18599
18600 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
18601
18602         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
18603         (CMPtype): Define as __gcc_CMPtype.
18604
18605 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
18606
18607         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
18608         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
18609
18610 2009-04-17  Richard Guenther  <rguenther@suse.de>
18611
18612         PR tree-optimization/39746
18613         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
18614         special-casing for builtins and static variable use/def.
18615         (call_may_clobber_ref_p_1): Likewise.
18616
18617 2009-04-16  Ian Lance Taylor  <iant@google.com>
18618
18619         * df.h: Include "timevar.h".
18620         (struct df_problem): Change tv_id field to timevar_id_t.
18621         * tree-pass.h: Include "timevar.h".
18622         (struct opt_pass): Change tv_id field to timevar_id_t.
18623         * timevar.h (timevar_id_t): Define TV_NONE.
18624         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
18625         TV_NONE rather than tv_id != 0.
18626         (execute_one_pass): Likewise.
18627         * Makefile.in (DF_H): Add $(TIMEVAR_H).
18628         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
18629         dependencies to $(TREE_PASS_H).
18630         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
18631         to TV_NONE.
18632         (pass_branch_target_load_optimize2): Likewise.
18633         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
18634         (pass_outof_cfg_layout_mode): Likewise.
18635         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
18636         (pass_rebuild_cgraph_edges): Likewise.
18637         (pass_remove_cgraph_callee_edges): Likewise.
18638         * df-core.c (pass_df_initialize_opt): Likewise.
18639         (pass_df_initialize_no_opt): Likewise.
18640         (pass_df_finish): Likewise.
18641         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
18642         * except.c (pass_set_nothrow_function_flags): Likewise.
18643         (pass_convert_to_eh_region_ranges): Likewise.
18644         * final.c (pass_compute_alignments): Likewise.
18645         * function.c (pass_instantiate_virtual_regs): Likewise.
18646         (pass_init_function): Likewise.
18647         (pass_leaf_regs): Likewise.
18648         (pass_match_asm_constraints): Likewise.
18649         * gimple-low.c (pass_lower_cf): Likewise.
18650         (pass_mark_used_blocks): Likewise.
18651         * init-regs.c (pass_initialize_regs): Likewise.
18652         * integrate.c (pass_initial_value_sets): Likewise.
18653         * ira.c (pass_ira): Likewise.
18654         * jump.c (pass_cleanup_barriers): Likewise.
18655         * omp-low.c (pass_expand_omp): Likewise.
18656         (pass_lower_omp): Likewise.
18657         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
18658         * recog.c (pass_split_all_insns): Likewise.
18659         (pass_split_after_reload): Likewise.
18660         (pass_split_before_regstack): Likewise.
18661         (pass_split_before_sched2): Likewise.
18662         (pass_split_for_shorten_branches): Likewise.
18663         * reginfo.c (pass_reginfo_init): Likewise.
18664         (pass_subregs_of_mode_init): Likewise.
18665         (pass_subregs_of_mode_finish): Likewise.
18666         * passes.c (pass_postreload): Likewise.
18667         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
18668         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
18669         (pass_warn_function_return): Likewise.
18670         (pass_warn_function_noreturn): Likewise.
18671         * tree-complex.c (pass_lower_complex): Likewise.
18672         (pass_lower_complex_O0): Likewise.
18673         * tree-if-conv.c (pass_if_conversion): Likewise.
18674         * tree-into-ssa.c (pass_build_ssa): Likewise.
18675         * tree-mudflap.c (pass_mudflap_1): Likewise.
18676         (pass_mudflap_2): Likewise.
18677         * tree-nomudflap.c (pass_mudflap_1): Likewise.
18678         (pass_mudflap_2): Likewise.
18679         * tree-nrv.c (pass_return_slot): Likewise.
18680         * tree-object-size.c (pass_object_sizes): Likewise.
18681         * tree-optimize.c (pass_all_optimizations): Likewise.
18682         (pass_early_local_passes): Likewise.
18683         (pass_all_early_optimizations): Likewise.
18684         (pass_cleanup_cfg): Likewise.
18685         (pass_cleanup_cfg_post_optimizing): Likewise.
18686         (pass_free_datastructures): Likewise.
18687         (pass_free_cfg_annotations): Likewise.
18688         (pass_fixup_cfg): Likewise.
18689         (pass_init_datastructures): Likewise.
18690         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
18691         (pass_late_warn_uninitialized): Likewise.
18692         (pass_update_address_taken): Likewise.
18693         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
18694         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
18695         (pass_cse_sincos): Likewise.
18696         (pass_convert_to_rsqrt): Likewise.
18697         * tree-ssa-structalias.c (pass_build_alias): Likewise.
18698         * tree-stdarg.c (pass_stdarg): Likewise.
18699         * tree-tailcall.c (pass_tail_recursion): Likewise.
18700         (pass_tail_calls): Likewise.
18701         * tree-vect-generic.c (pass_lower_vector): Likewise.
18702         (pass_lower_vector_ssa): Likewise.
18703         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
18704
18705 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
18706
18707         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
18708         XLR entry.
18709         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
18710         Handle -march=xlr.
18711         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
18712         logical and signext.
18713
18714 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
18715
18716         PR target/39767
18717         * config/sh/predicates.md (arith_operand): Check if the operand
18718         of TRUNCATE is a REG.
18719
18720 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18721
18722         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
18723         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
18724
18725 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18726
18727         * tree-iterator.c (tsi_split_statement_list_after,
18728         tsi_split_statement_list_before): Remove.
18729         * tree-iterator.h: Remove the prototypes for
18730         tsi_split_statement_list_after and tsi_split_statement_list_before.
18731
18732 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18733
18734         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
18735         * tree-ssa-propagate.h: Remove the prototype for
18736         stmt_makes_single_load.
18737
18738 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18739
18740         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
18741         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
18742
18743 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18744
18745         * tree-iterator.c (EXPR_LAST_BODY): Remove.
18746
18747 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18748
18749         * except.c (eh_region_outer_p): Remove.
18750         * except.h: Remove the prototype for eh_region_outer_p.
18751
18752 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18753
18754         * function.c (current_function_assembler_name): Remove.
18755         * function.h: Remove the prototype for
18756         current_function_assembler_name.
18757
18758 2009-04-16  Ian Lance Taylor  <iant@google.com>
18759
18760         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
18761         (add_reg_note): Call alloc_reg_note.
18762         * rtl.h (alloc_reg_note): Declare.
18763         * combine.c (try_combine): Use alloc_reg_note.
18764         (recog_for_combine, move_deaths): Likewise.
18765         (distribute_notes): Use alloc_reg_note and add_reg_note.
18766         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
18767         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
18768         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
18769
18770 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
18771
18772         PR rtl-optimization/39762
18773         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
18774         ira_may_move_out_cost): Add comments about way of their usage.
18775         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
18776
18777         * ira-conflicts.c (process_regs_for_copy): Use function
18778         ira_get_register_move_cost instead of global
18779         ira_register_move_cost.
18780
18781         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
18782         color_pass, move_spill_restore, update_curr_costs): Ditto.
18783
18784         * ira-lives.c (process_single_reg_class_operands): Ditto.
18785
18786         * ira-emit.c (emit_move_list): Ditto.
18787
18788         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
18789         (record_reg_classes): Ditto.  Use functions
18790         ira_get_register_move_cost and ira_get_may_move_cost instead of
18791         global vars ira_register_move_cost, ira_may_move_out_cost and
18792         ira_may_move_in_cost.
18793         (record_address_regs): Don't call ira_init_register_move_cost.
18794         Use function ira_get_may_move_cost instead of global
18795         ira_may_move_in_cost.
18796         (process_bb_node_for_hard_reg_moves): Use function
18797         ira_get_register_move_cost instead of global ira_register_move_cost.
18798         (ira_costs): Don't call ira_init_register_move_cost.
18799
18800 2009-04-16  Richard Guenther  <rguenther@suse.de>
18801
18802         * tree-cfg.c (verify_gimple_assign_binary):
18803         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
18804         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
18805         (create_general_new_stmt): Note that this function is broken.
18806
18807 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18808
18809         * common.opt (fhelp): Add Var(help_flag).
18810         * gcc-plugin.h (plugin_info): Add help.
18811         * plugin.c (plugin_name_args): Add help.
18812         (register_plugin_info): Set plugin->help.
18813         (print_help_one_plugin): New.
18814         (print_plugins_help): New.
18815         * plugin.h (print_plugins_help): New.
18816         * toplev.c (toplev_main): Call print_plugins_help if needed.
18817
18818 2009-04-16  Richard Guenther  <rguenther@suse.de>
18819
18820         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
18821         (gimple_ior_addresses_taken_1): New function.
18822         (gimple_ior_addresses_taken): Likewise.
18823         * gimple.h (struct gimple_statement_with_ops_base): Remove
18824         addresses_taken member.
18825         (gimple_ior_addresses_taken): Declare.
18826         (gimple_addresses_taken, gimple_addresses_taken_ptr,
18827         gimple_set_addresses_taken): Remove.
18828         * ipa-reference.c (mark_address): New function.
18829         (scan_stmt_for_static_refs): Use it for marking addresses taken.
18830         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
18831         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
18832         (gimple_add_to_addresses_taken): Remove.
18833         (get_tmr_operands): Call mark_address_taken.
18834         (get_asm_expr_operands): Likewise.
18835         (get_expr_operands): Likewise.
18836         (build_ssa_operands): Do not clear the addresses_taken bitmap.
18837         (free_stmt_operands): Do not free it.
18838         * tree-ssa.c (delete_tree_ssa): Likewise.
18839         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
18840
18841 2009-04-16  Richard Guenther  <rguenther@suse.de>
18842
18843         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
18844         (walk_stmt_load_store_ops): Likewise.
18845         * gimple.c (get_base_loadstore): New function.
18846         (walk_stmt_load_store_addr_ops): Likewise.
18847         (walk_stmt_load_store_ops): Likewise.
18848         * ipa-pure-const.c (check_op): Simplify.
18849         (check_load, check_store): New functions.
18850         (check_stmt): Use walk_stmt_load_store_ops.
18851         * ipa-reference.c (mark_load): Adjust signature.
18852         (mark_store): Likewise.
18853         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
18854
18855 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18856
18857         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
18858         (plugin_info): New.
18859         * opts.c (common_handle_option): Don't call print_version.
18860         * plugin.c (plugin_name_args): Add version.
18861         (register_plugin_info): New.
18862         (register_callback): Handle PLUGIN_INFO.
18863         (try_init_one_plugin): New.
18864         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
18865         if failed to init.
18866         (finalize_one_plugin): New.
18867         (finalize_plugins): New.
18868         (print_one_plugin): New.
18869         (print_plugins_versions): New.
18870         * plugin.h (print_plugins_versions): New.
18871         (finalize_plugins): New.
18872         * toplev.c (compile_file): Don't call initialize_plugins.
18873         (print_version): Call print_plugins_versions.
18874         (toplev_main): Call initialize_plugins. Print version if needed.
18875         Call finalize_plugins.
18876
18877 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
18878
18879         * common.opt (fversion): New.
18880         * gcc.c (print_version): New.
18881         (process_command): Don't print the version. Just set print_version.
18882         (main): Print version. Call subprocesses if print_version and
18883         verbose_flag are set.
18884         * opts.c (common_handle_option): Handle OPT_fversion.
18885
18886 2009-04-16  Richard Guenther  <rguenther@suse.de>
18887             Ira Rosen  <irar@il.ibm.com>
18888
18889         PR tree-optimization/39698
18890         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
18891         type of the reduction variable.  Only generate the def if
18892         it is needed.
18893
18894         * omp-low.c (expand_omp_for_generic): When converting to a pointer
18895         make sure to first convert to an integer of the same precision.
18896         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
18897         the type of the evolution correctly in computing the new
18898         induction variable base.
18899
18900 2009-04-16  Richard Guenther  <rguenther@suse.de>
18901
18902         PR middle-end/39625
18903         * tree-cfg.c (make_blocks): Split statements with to-be
18904         abnormal SSA names on the lhs.
18905
18906 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
18907
18908         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
18909         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
18910         * c-typeck.c (really_start_incremental_init): Likewise.
18911         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
18912         (TARGET_INITIALIZER): Remove it.
18913         * target.h (struct target): Remove vector_opaque_p.
18914         * tree.c (build_opaque_vector_type): New.
18915         * tree.h (TYPE_VECTOR_OPAQUE): New.
18916         (build_opaque_vector_type): Declare.
18917         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
18918         * config/rs6000/rs6000.c (build_opaque_vector_type,
18919         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
18920         (rs6000_init_builtins): Use build_opaque_vector_type for
18921         opaque_V4SI_type_node.
18922
18923 2009-04-15  Catherine Moore  <clm@codesourcery.com>
18924
18925         * debug.h (set_name):  Declare.
18926         * dwarf2out.c (dwarf2out_set_name): Declare.
18927         (dwarf2_debug_hooks): Add set_name.
18928         (find_AT_string): New.
18929         (add_AT_string): Call find_AT_string.
18930         (dwarf2out_set_name): New.
18931         * cp/decl.c (grokdeclarator): Call set_name.
18932         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
18933         * debug.c (do_nothing_debug_hooks):  Likewise.
18934         * dbxout.c (dbx_debug_hooks): Likewise.
18935         * sdbout.c (sdb_debug_hooks): Likewise.
18936
18937 2009-04-15  Michael Eager  <eager@eagercon.com>
18938
18939         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
18940         reg for single-precision FPU.
18941         * config/rs6000/rs6000.md (movsi_internal1): Only for
18942         !TARGET_SINGLE_FPU.
18943         (movsi_internal1_single): New. Add pattern to move SI values to/from
18944         single-precision FP regs.
18945
18946 2009-04-15  Richard Guenther  <rguenther@suse.de>
18947
18948         * omp-low.c (lower_rec_input_clauses): Build correct address
18949         expressions.
18950         (expand_omp_for_generic): Fix multiplication type.
18951         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
18952         (generate_memset_zero): Fix types.
18953         * tree-profile.c (prepare_instrumented_value): Correctly
18954         widen a pointer.
18955
18956 2009-04-15  Ian Lance Taylor  <iant@google.com>
18957
18958         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
18959         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
18960         for -Wall and for -Wc++-compat.
18961         (c_common_post_options): For C++, set warn_enum_compare if not
18962         already set.
18963         * c-tree.h (struct c_expr): Add field original_type.
18964         (build_external_ref): Update declaration.
18965         * c-parser.c (c_parser_braced_init): Set original_type.
18966         (c_parser_initelt): Likewise.
18967         (c_parser_expr_no_commas): Likewise.
18968         (c_parser_conditional_expression): Likewise.
18969         (c_parser_cast_expression): Likewise.
18970         (c_parser_unary_expression): Likewise.  Pull setting of
18971         original_code to top of function.
18972         (c_parser_sizeof_expression): Set original_type.
18973         (c_parser_alignof_expression): Likewise.
18974         (c_parser_postfix_expression): Likewise.  Pull setting of
18975         original_code to top of function.
18976         (c_parser_postfix_expression_after_paren_type): Set original_type.
18977         (c_parser_postfix_expression_after_primary): Likewise.
18978         (c_parser_expression): Likewise.
18979         * c-typeck.c (build_external_ref): Add type parameter.  Change all
18980         callers.
18981         (c_expr_sizeof_expr): Set original_type field.
18982         (parser_build_unary_op): Likewise.
18983         (parser_build_binary_op): Likewise.  Optionally warn about
18984         comparisons of enums of different types.
18985         (digest_init): Set original_type field.
18986         (really_start_incremental_init): Likewise.
18987         (push_init_level, pop_init_level): Likewise.
18988         * doc/invoke.texi (Warning Options): -Wenum-compare now
18989         supported in C.
18990
18991 2009-04-15  Richard Guenther  <rguenther@suse.de>
18992
18993         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
18994         out a necessary conversion.
18995         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
18996         names we didn't value number.
18997         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
18998
18999 2009-04-15  Richard Guenther  <rguenther@suse.de>
19000
19001         PR tree-optimization/39764
19002         * tree-ssa-ccp.c (get_value): Canonicalize value with
19003         canonicalize_float_value.
19004
19005 2009-04-15  Jan Hubicka  <jh@suse.cz>
19006
19007         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19008         Wrong version of patch.
19009
19010 2009-04-15  Jan Hubicka  <jh@suse.cz>
19011
19012         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19013
19014 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
19015
19016         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19017         our distinct integral and vector types.
19018
19019 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
19020
19021         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19022         * init.c (build_vtbl_address): Remove call to assemble_external.
19023
19024 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
19025
19026         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
19027         output for other floating point modes.
19028
19029 2009-04-14  Diego Novillo  <dnovillo@google.com>
19030
19031         * diagnostic.c (diagnostic_report_diagnostic): Do not
19032         warn about loaded plugins for DK_ERROR and DK_WARNING.
19033         * c-decl.c (declspecs_add_type): Move call to
19034         invoke_plugin_callbacks ...
19035         * c-parser.c (c_parser_declspecs): ... here.
19036         * plugin.c (dump_active_plugins): Tidy output.
19037
19038 2009-04-14  Diego Novillo  <dnovillo@google.com>
19039             Le-Chun Wu  <lcwu@google.com>
19040
19041         * configure.ac: Add --enable-plugin support.
19042         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
19043         * Makefile.in (PLUGIN_H): Define.
19044         Export ENABLE_PLUGIN and GMPINC to site.exp.
19045         Add PLUGINLIBS to link command.
19046         Add/modify dependencies for plugin.o and files including plugin.h.
19047         (plugin.o): New.
19048         * config.in: Regenerate.
19049
19050         * opts.c (common_handle_option): Handle OPT_fplugin_ and
19051         OPT_fplugin_arg_.
19052
19053 2009-04-14  Le-Chun Wu  <lcwu@google.com>
19054
19055         * tree-pass.h (register_one_dump_file): Add a prototype for
19056         register_one_dump_file.
19057         * toplev.c (compile_file): Call initialize_plugins.
19058         (do_compile): Call invoke_plugin_callbacks.
19059         (toplev_main): Call invoke_plugin_callbacks.
19060         * common.opt: Add -fplugin= and -fplugin-arg-.
19061         * gcc-plugin.h: New public header file for plugins to include.
19062         * plugin.c: New source file.
19063         * plugin.h: New internal header file.
19064         * passes.c (register_one_dump_file): Make it external.
19065
19066         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
19067
19068 2009-04-14  Diego Novillo  <dnovillo@google.com>
19069
19070         * doc/plugins.texi: New.
19071         * doc/gccint.texi: Add reference to Plugins chapter.
19072         * doc/invoke.texi: Document -fplugin and -fplugin-arg
19073         * diagnostic.c (diagnostic_report_diagnostic): Warn about
19074         loaded plugins, if any.
19075         * timevar.def (TV_PLUGIN_INIT): Define.
19076         (TV_PLUGIN_RUN): Define.
19077         * plugin.c: Include timevar.h
19078         (plugins_active_p): New.
19079         (dump_active_plugins): New.
19080         (debug_active_plugins): New.
19081
19082 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
19083
19084         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19085         library paths.
19086         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19087
19088 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
19089
19090         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19091         the same as a minus without a shift.
19092
19093 2009-04-14  Nick Clifton  <nickc@redhat.com>
19094
19095         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19096         comparisons with small integers will always produce a short
19097         branch.
19098
19099 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
19100
19101         Merge:
19102         2008-12-19  Diego Novillo  <dnovillo@google.com>
19103
19104         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19105
19106 2009-04-14  Richard Guenther  <rguenther@suse.de>
19107
19108         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19109         verification.
19110         (verify_gimple_assign_binary): Likewise.  Handle shifts and
19111         rotates correctly.
19112         (verify_gimple_phi): Print the mismatched argument position.
19113         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19114         Fix types.
19115         (vect_update_init_of_dr): Likewise.
19116         * matrix-reorg.c (transform_access_sites): Do what the
19117         comment suggests.
19118         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19119
19120 2009-04-13  Michael Eager  <eager@eagercon.com>
19121
19122         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19123         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19124         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
19125         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19126         remove duplicate config
19127
19128 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19129
19130         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19131         file_name:line_number type locator of the call site.
19132
19133 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
19134
19135         * genautomata.c: Put blank after comma.
19136         (automaton_decls): New.
19137         (struct unit_usage): Add comments to member next.
19138         (store_alt_unit_usage): Keep the list ordered.
19139         (unit_present_on_list_p, equal_alternatives_p): New.
19140         (check_regexp_units_distribution): Check units distribution
19141         correctness correctly.
19142         (main): Don't write automata if error is found.  Return correct
19143         exit code.
19144
19145         * config/m68k/cf.md (cfv4_ds): Remove.
19146         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19147         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19148
19149         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19150         power4-load-ext, power4-store, power4-store-update,
19151         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19152         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19153         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19154         power4-sqrt, power4-isync): Modify reservation to make correct
19155         unit distribution to automata.
19156
19157         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19158         power5-store-update, power5-two, power5-three, power5-lmul,
19159         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19160
19161 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
19162
19163         * except.c (pass_set_nothrow_function_flags): Set name and add
19164         TODO_dump_func.
19165         (set_nothrow_function_flags): Mention in the dump file when
19166         changing a function to nothrow.
19167
19168 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
19169
19170         PR/39066
19171         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19172         instead of unsigned long.
19173
19174 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19175
19176         * config/arm/arm.c (return_used_this_function): Remove.
19177         (arm_output_function_prologue): Remove use of
19178         return_used_this_function.
19179         (output_return_instruction): Replace use of
19180         return_used_this_function
19181         by cfun->machine->return_used_this_function.
19182         (arm_output_epilogue): Likewise.
19183         (arm_output_function_epilogue): Likewise.
19184         (thumb_unexpanded_epilogue): Likewise.
19185         * config/arm/arm.h (struct machine_function):
19186         New member return_used_this_function.
19187
19188 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
19189
19190         * doc/install.texi: Correct description of default directory for
19191         --with-gxx-include-dir.
19192
19193 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
19194
19195         * fold-const.c (build_range_check): Properly deal with enumeral and
19196         boolean base types.
19197
19198 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
19199
19200         * doc/invoke.texi (max_gcse_passes): Remove documentation.
19201         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19202         * params.h (MAX_GCSE_PASSES): Remove.
19203         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19204         in sequence.  Remove ability to run multiple passes.
19205         (bypass_jumps): Report run as third CPROP pass.
19206
19207 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
19208
19209         PR middle-end/39651
19210         * except.c (can_throw_external): Look at each insn in a SEQUENCE
19211         when deciding whether the whole SEQUENCE can throw.
19212
19213 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
19214
19215         PR target/39740
19216         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19217         offseted label references.
19218
19219 2009-04-11  Jan Hubicka  <jh@suse.cz>
19220
19221         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19222
19223 2009-04-11  Richard Guenther  <rguenther@suse.de>
19224
19225         PR middle-end/39732
19226         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19227         return variables as TREE_ADDRESSABLE.
19228
19229 2009-04-11  Richard Guenther  <rguenther@suse.de>
19230
19231         PR tree-optimization/39713
19232         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19233         reference trees have SSA_NAME operands.
19234
19235 2009-04-11  Richard Guenther  <rguenther@suse.de>
19236
19237         PR c/39712
19238         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19239         address expressions.
19240
19241 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
19242
19243         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
19244         match changes in Cygwin 1.7
19245         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19246         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
19247
19248 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19249
19250         PR tree-optimization/39701
19251         * doc/invoke.texi (Optimization Options): Document change in
19252         meaning and initialization of -fdelete-null-pointer-checks.
19253
19254 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19255
19256         PR middle-end/39701
19257         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
19258
19259         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
19260         here.
19261
19262         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
19263
19264 2009-04-10  Chao-ying Fu  <fu@mips.com>
19265
19266         * doc/tm.texi (Instruction Output): Document
19267         TARGET_ASM_FINAL_POSTSCAN_INSN.
19268         * target.h (final_postscan_insn): New field in asm_out.
19269         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19270         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
19271         * final.c (final_scan_insn): Call
19272         targetm.asm_out.final_postscan_insn after outputting
19273         an asm macro and a normal instruction.
19274
19275         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
19276         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
19277         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
19278         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
19279         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19280
19281 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19282
19283         PR middle-end/39701
19284         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
19285         variables as non-NULL even with -fdelete-null-pointer-checks.
19286
19287 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19288
19289         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
19290
19291 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19292
19293         PR target/39678
19294         * config/i386/i386.c (classify_argument): Handle SCmode with
19295         (bit_offset % 64) != 0.
19296
19297 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
19298
19299         * doc/invoke.texi (Optimize Options): Add cross-reference to
19300         -Q --help=optimizers examples.
19301
19302 2009-04-10  Ben Elliston  <bje@au.ibm.com>
19303
19304         PR target/36800
19305         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
19306         regalign for the reg == fpr and TDmode case.
19307
19308 2009-04-09  David Ayers  <ayers@fsfe.org>
19309
19310         PR objc/29200
19311         * objc/objc-act.c (warn_with_method): Remove helper function.
19312         (check_duplicates): Call warning and inform directly.
19313         (really_start_method): Likewise.
19314
19315 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19316
19317         * expmed.c (expand_divmod): Always use a comparison for a division
19318         by a large unsigned integer.
19319
19320         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
19321         for things others than variables or functions as nonzero.
19322
19323 2009-04-09  Nick Clifton  <nickc@redhat.com>
19324
19325         * unwind-compat.c: Change copyright header to refer to version
19326         3 of the GNU General Public License with version 3.1 of the
19327         GCC Runtime Library Exception and to point readers at the
19328         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
19329         * config/alpha/crtfastmath.c: Likewise.
19330         * config/alpha/linux-unwind.h: Likewise.
19331         * config/alpha/qrnnd.asm: Likewise.
19332         * config/alpha/vms-crt0-64.c: Likewise.
19333         * config/alpha/vms-crt0.c: Likewise.
19334         * config/alpha/vms-dwarf2.asm: Likewise.
19335         * config/alpha/vms-dwarf2eh.asm: Likewise.
19336         * config/alpha/vms-psxcrt0-64.c: Likewise.
19337         * config/alpha/vms-psxcrt0.c: Likewise.
19338         * config/alpha/vms_tramp.asm: Likewise.
19339         * config/arc/initfini.c: Likewise.
19340         * config/arc/lib1funcs.asm: Likewise.
19341         * config/arm/bpabi-v6m.S: Likewise.
19342         * config/arm/bpabi.S: Likewise.
19343         * config/arm/bpabi.c: Likewise.
19344         * config/arm/crti.asm: Likewise.
19345         * config/arm/crtn.asm: Likewise.
19346         * config/arm/ieee754-df.S: Likewise.
19347         * config/arm/ieee754-sf.S: Likewise.
19348         * config/arm/lib1funcs.asm: Likewise.
19349         * config/arm/libunwind.S: Likewise.
19350         * config/arm/linux-atomic.c: Likewise.
19351         * config/arm/mmintrin.h: Likewise.
19352         * config/arm/pr-support.c: Likewise.
19353         * config/arm/unaligned-funcs.c: Likewise.
19354         * config/arm/unwind-arm.c: Likewise.
19355         * config/arm/unwind-arm.h: Likewise.
19356         * config/avr/libgcc.S: Likewise.
19357         * config/bfin/crti.s: Likewise.
19358         * config/bfin/crtlibid.s: Likewise.
19359         * config/bfin/crtn.s: Likewise.
19360         * config/bfin/lib1funcs.asm: Likewise.
19361         * config/bfin/linux-unwind.h: Likewise.
19362         * config/cris/arit.c: Likewise.
19363         * config/cris/cris_abi_symbol.c: Likewise.
19364         * config/darwin-64.c: Likewise.
19365         * config/darwin-crt2.c: Likewise.
19366         * config/darwin-crt3.c: Likewise.
19367         * config/darwin.h: Likewise.
19368         * config/dbxelf.h: Likewise.
19369         * config/dfp-bit.c: Likewise.
19370         * config/dfp-bit.h: Likewise.
19371         * config/elfos.h: Likewise.
19372         * config/fixed-bit.c: Likewise.
19373         * config/fixed-bit.h: Likewise.
19374         * config/fp-bit.c: Likewise.
19375         * config/fp-bit.h: Likewise.
19376         * config/fr30/crti.asm: Likewise.
19377         * config/fr30/crtn.asm: Likewise.
19378         * config/fr30/lib1funcs.asm: Likewise.
19379         * config/freebsd-spec.h: Likewise.
19380         * config/frv/cmovd.c: Likewise.
19381         * config/frv/cmovh.c: Likewise.
19382         * config/frv/cmovw.c: Likewise.
19383         * config/frv/frvbegin.c: Likewise.
19384         * config/frv/frvend.c: Likewise.
19385         * config/frv/lib1funcs.asm: Likewise.
19386         * config/glibc-stdint.h: Likewise.
19387         * config/h8300/clzhi2.c: Likewise.
19388         * config/h8300/crti.asm: Likewise.
19389         * config/h8300/crtn.asm: Likewise.
19390         * config/h8300/ctzhi2.c: Likewise.
19391         * config/h8300/fixunssfsi.c: Likewise.
19392         * config/h8300/lib1funcs.asm: Likewise.
19393         * config/h8300/parityhi2.c: Likewise.
19394         * config/h8300/popcounthi2.c: Likewise.
19395         * config/i386/ammintrin.h: Likewise.
19396         * config/i386/att.h: Likewise.
19397         * config/i386/avxintrin.h: Likewise.
19398         * config/i386/biarch64.h: Likewise.
19399         * config/i386/bmmintrin.h: Likewise.
19400         * config/i386/cpuid.h: Likewise.
19401         * config/i386/cross-stdarg.h: Likewise.
19402         * config/i386/crtfastmath.c: Likewise.
19403         * config/i386/crtprec.c: Likewise.
19404         * config/i386/cygming-crtbegin.c: Likewise.
19405         * config/i386/cygming-crtend.c: Likewise.
19406         * config/i386/cygwin.asm: Likewise.
19407         * config/i386/emmintrin.h: Likewise.
19408         * config/i386/gmm_malloc.h: Likewise.
19409         * config/i386/gthr-win32.c: Likewise.
19410         * config/i386/i386.h: Likewise.
19411         * config/i386/immintrin.h: Likewise.
19412         * config/i386/linux-unwind.h: Likewise.
19413         * config/i386/linux64.h: Likewise.
19414         * config/i386/mm3dnow.h: Likewise.
19415         * config/i386/mmintrin-common.h: Likewise.
19416         * config/i386/mmintrin.h: Likewise.
19417         * config/i386/nmmintrin.h: Likewise.
19418         * config/i386/pmm_malloc.h: Likewise.
19419         * config/i386/pmmintrin.h: Likewise.
19420         * config/i386/smmintrin.h: Likewise.
19421         * config/i386/sol2-c1.asm: Likewise.
19422         * config/i386/sol2-ci.asm: Likewise.
19423         * config/i386/sol2-cn.asm: Likewise.
19424         * config/i386/sol2-gc1.asm: Likewise.
19425         * config/i386/tmmintrin.h: Likewise.
19426         * config/i386/unix.h: Likewise.
19427         * config/i386/w32-unwind.h: Likewise.
19428         * config/i386/wmmintrin.h: Likewise.
19429         * config/i386/x86-64.h: Likewise.
19430         * config/i386/x86intrin.h: Likewise.
19431         * config/i386/xmmintrin.h: Likewise.
19432         * config/ia64/crtbegin.asm: Likewise.
19433         * config/ia64/crtend.asm: Likewise.
19434         * config/ia64/crtfastmath.c: Likewise.
19435         * config/ia64/crti.asm: Likewise.
19436         * config/ia64/crtn.asm: Likewise.
19437         * config/ia64/fde-glibc.c: Likewise.
19438         * config/ia64/lib1funcs.asm: Likewise.
19439         * config/ia64/linux-unwind.h: Likewise.
19440         * config/ia64/quadlib.c: Likewise.
19441         * config/ia64/unwind-ia64.c: Likewise.
19442         * config/linux.h: Likewise.
19443         * config/m32c/m32c-lib1.S: Likewise.
19444         * config/m32c/m32c-lib2-trapv.c: Likewise.
19445         * config/m32c/m32c-lib2.c: Likewise.
19446         * config/m32r/initfini.c: Likewise.
19447         * config/m68hc11/larith.asm: Likewise.
19448         * config/m68hc11/m68hc11-crt0.S: Likewise.
19449         * config/m68k/cf.md: Likewise.
19450         * config/m68k/crti.s: Likewise.
19451         * config/m68k/crtn.s: Likewise.
19452         * config/m68k/lb1sf68.asm: Likewise.
19453         * config/m68k/linux-unwind.h: Likewise.
19454         * config/mcore/crti.asm: Likewise.
19455         * config/mcore/crtn.asm: Likewise.
19456         * config/mcore/lib1.asm: Likewise.
19457         * config/mips/linux-unwind.h: Likewise.
19458         * config/mips/loongson.h: Likewise.
19459         * config/mips/mips16.S: Likewise.
19460         * config/mmix/crti.asm: Likewise.
19461         * config/mmix/crtn.asm: Likewise.
19462         * config/pa/fptr.c: Likewise.
19463         * config/pa/hpux-unwind.h: Likewise.
19464         * config/pa/lib2funcs.asm: Likewise.
19465         * config/pa/linux-atomic.c: Likewise.
19466         * config/pa/linux-unwind.h: Likewise.
19467         * config/pa/milli64.S: Likewise.
19468         * config/pa/quadlib.c: Likewise.
19469         * config/pa/stublib.c: Likewise.
19470         * config/picochip/libgccExtras/adddi3.asm: Likewise.
19471         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
19472         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
19473         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
19474         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
19475         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
19476         * config/picochip/libgccExtras/divmod15.asm: Likewise.
19477         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
19478         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
19479         * config/picochip/libgccExtras/longjmp.asm: Likewise.
19480         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
19481         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
19482         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
19483         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
19484         * config/picochip/libgccExtras/setjmp.asm: Likewise.
19485         * config/picochip/libgccExtras/subdi3.asm: Likewise.
19486         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
19487         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
19488         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
19489         * config/rs6000/750cl.h: Likewise.
19490         * config/rs6000/altivec.h: Likewise.
19491         * config/rs6000/biarch64.h: Likewise.
19492         * config/rs6000/crtresfpr.asm: Likewise.
19493         * config/rs6000/crtresgpr.asm: Likewise.
19494         * config/rs6000/crtresxfpr.asm: Likewise.
19495         * config/rs6000/crtresxgpr.asm: Likewise.
19496         * config/rs6000/crtsavfpr.asm: Likewise.
19497         * config/rs6000/crtsavgpr.asm: Likewise.
19498         * config/rs6000/darwin-asm.h: Likewise.
19499         * config/rs6000/darwin-fallback.c: Likewise.
19500         * config/rs6000/darwin-fpsave.asm: Likewise.
19501         * config/rs6000/darwin-ldouble.c: Likewise.
19502         * config/rs6000/darwin-tramp.asm: Likewise.
19503         * config/rs6000/darwin-unwind.h: Likewise.
19504         * config/rs6000/darwin-vecsave.asm: Likewise.
19505         * config/rs6000/darwin-world.asm: Likewise.
19506         * config/rs6000/e500crtres32gpr.asm: Likewise.
19507         * config/rs6000/e500crtres64gpr.asm: Likewise.
19508         * config/rs6000/e500crtres64gprctr.asm: Likewise.
19509         * config/rs6000/e500crtrest32gpr.asm: Likewise.
19510         * config/rs6000/e500crtrest64gpr.asm: Likewise.
19511         * config/rs6000/e500crtresx32gpr.asm: Likewise.
19512         * config/rs6000/e500crtresx64gpr.asm: Likewise.
19513         * config/rs6000/e500crtsav32gpr.asm: Likewise.
19514         * config/rs6000/e500crtsav64gpr.asm: Likewise.
19515         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
19516         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
19517         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
19518         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
19519         * config/rs6000/eabi-ci.asm: Likewise.
19520         * config/rs6000/eabi-cn.asm: Likewise.
19521         * config/rs6000/eabi.asm: Likewise.
19522         * config/rs6000/linux-unwind.h: Likewise.
19523         * config/rs6000/linux64.h: Likewise.
19524         * config/rs6000/paired.h: Likewise.
19525         * config/rs6000/paired.md: Likewise.
19526         * config/rs6000/ppc64-fp.c: Likewise.
19527         * config/rs6000/ppu_intrinsics.h: Likewise.
19528         * config/rs6000/rs6000.h: Likewise.
19529         * config/rs6000/si2vmx.h: Likewise.
19530         * config/rs6000/sol-ci.asm: Likewise.
19531         * config/rs6000/sol-cn.asm: Likewise.
19532         * config/rs6000/spe.h: Likewise.
19533         * config/rs6000/spu2vmx.h: Likewise.
19534         * config/rs6000/sysv4.h: Likewise.
19535         * config/rs6000/tramp.asm: Likewise.
19536         * config/rs6000/vec_types.h: Likewise.
19537         * config/s390/linux-unwind.h: Likewise.
19538         * config/s390/tpf-unwind.h: Likewise.
19539         * config/score/crti.asm: Likewise.
19540         * config/score/crtn.asm: Likewise.
19541         * config/sh/crt1.asm: Likewise.
19542         * config/sh/crti.asm: Likewise.
19543         * config/sh/crtn.asm: Likewise.
19544         * config/sh/divtab-sh4-300.c: Likewise.
19545         * config/sh/divtab-sh4.c: Likewise.
19546         * config/sh/divtab.c: Likewise.
19547         * config/sh/lib1funcs-4-300.asm: Likewise.
19548         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
19549         * config/sh/lib1funcs.asm: Likewise.
19550         * config/sh/lib1funcs.h: Likewise.
19551         * config/sh/linux-atomic.asm: Likewise.
19552         * config/sh/linux-unwind.h: Likewise.
19553         * config/sh/shmedia.h: Likewise.
19554         * config/sh/sshmedia.h: Likewise.
19555         * config/sh/ushmedia.h: Likewise.
19556         * config/sparc/crtfastmath.c: Likewise.
19557         * config/sparc/linux-unwind.h: Likewise.
19558         * config/sparc/sol2-c1.asm: Likewise.
19559         * config/sparc/sol2-ci.asm: Likewise.
19560         * config/sparc/sol2-cn.asm: Likewise.
19561         * config/spu/divmodti4.c: Likewise.
19562         * config/spu/divv2df3.c: Likewise.
19563         * config/spu/float_disf.c: Likewise.
19564         * config/spu/float_unsdidf.c: Likewise.
19565         * config/spu/float_unsdisf.c: Likewise.
19566         * config/spu/float_unssidf.c: Likewise.
19567         * config/spu/mfc_multi_tag_release.c: Likewise.
19568         * config/spu/mfc_multi_tag_reserve.c: Likewise.
19569         * config/spu/mfc_tag_release.c: Likewise.
19570         * config/spu/mfc_tag_reserve.c: Likewise.
19571         * config/spu/mfc_tag_table.c: Likewise.
19572         * config/spu/multi3.c: Likewise.
19573         * config/spu/spu_internals.h: Likewise.
19574         * config/spu/spu_intrinsics.h: Likewise.
19575         * config/spu/spu_mfcio.h: Likewise.
19576         * config/spu/vec_types.h: Likewise.
19577         * config/spu/vmx2spu.h: Likewise.
19578         * config/stormy16/stormy16-lib2.c: Likewise.
19579         * config/svr4.h: Likewise.
19580         * config/sync.c: Likewise.
19581         * config/v850/lib1funcs.asm: Likewise.
19582         * config/vxlib-tls.c: Likewise.
19583         * config/vxlib.c: Likewise.
19584         * config/vxworks-dummy.h: Likewise.
19585         * config/xtensa/crti.asm: Likewise.
19586         * config/xtensa/crtn.asm: Likewise.
19587         * config/xtensa/ieee754-df.S: Likewise.
19588         * config/xtensa/ieee754-sf.S: Likewise.
19589         * config/xtensa/lib1funcs.asm: Likewise.
19590         * config/xtensa/lib2funcs.S: Likewise.
19591         * config/xtensa/linux-unwind.h: Likewise.
19592         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
19593         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
19594         * coretypes.h: Likewise.
19595         * crtstuff.c: Likewise.
19596         * defaults.h: Likewise.
19597         * dwarf2.h: Likewise.
19598         * emutls.c: Likewise.
19599         * gbl-ctors.h: Likewise.
19600         * gcov-io.h: Likewise.
19601         * ginclude/float.h: Likewise.
19602         * ginclude/iso646.h: Likewise.
19603         * ginclude/stdarg.h: Likewise.
19604         * ginclude/stdbool.h: Likewise.
19605         * ginclude/stddef.h: Likewise.
19606         * ginclude/stdfix.h: Likewise.
19607         * ginclude/stdint-gcc.h: Likewise.
19608         * ginclude/tgmath.h: Likewise.
19609         * gthr-aix.h: Likewise.
19610         * gthr-dce.h: Likewise.
19611         * gthr-gnat.c: Likewise.
19612         * gthr-gnat.h: Likewise.
19613         * gthr-lynx.h: Likewise.
19614         * gthr-mipssde.h: Likewise.
19615         * gthr-nks.h: Likewise.
19616         * gthr-posix.c: Likewise.
19617         * gthr-posix.h: Likewise.
19618         * gthr-posix95.h: Likewise.
19619         * gthr-rtems.h: Likewise.
19620         * gthr-single.h: Likewise.
19621         * gthr-solaris.h: Likewise.
19622         * gthr-tpf.h: Likewise.
19623         * gthr-vxworks.h: Likewise.
19624         * gthr-win32.h: Likewise.
19625         * gthr.h: Likewise.
19626         * libgcc2.c: Likewise.
19627         * libgcc2.h: Likewise.
19628         * libgcov.c: Likewise.
19629         * tsystem.h: Likewise.
19630         * typeclass.h: Likewise.
19631         * unwind-c.c: Likewise.
19632         * unwind-compat.h: Likewise.
19633         * unwind-dw2-fde-compat.c: Likewise.
19634         * unwind-dw2-fde-darwin.c: Likewise.
19635         * unwind-dw2-fde-glibc.c: Likewise.
19636         * unwind-dw2-fde.c: Likewise.
19637         * unwind-dw2-fde.h: Likewise.
19638         * unwind-dw2.c: Likewise.
19639         * unwind-dw2.h: Likewise.
19640         * unwind-generic.h: Likewise.
19641         * unwind-pe.h: Likewise.
19642         * unwind-sjlj.c: Likewise.
19643         * unwind.inc: Likewise.
19644         * config/arm/neon-gen.ml: Change generated copyright header to
19645         refer to version 3 of the GNU General Public License with
19646         version 3.1 of the GCC Runtime Library Exception and to point
19647         readers at the COPYING3 and COPYING3.RUNTIME files and the
19648         FSF's license web page.
19649         * config/arm/arm_neon.h: Regenerate.
19650
19651 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
19652
19653         * config/cris/cris.md: Change copyright header to refer to version
19654         3 of the GNU General Public License.
19655         * doc/install.texi2html: Change copyright header to refer to version
19656         3 of the GNU General Public License and to point readers at the
19657         COPYING3 file and the FSF's license web page.
19658         * config/vax/linux.h: Likewise.
19659
19660 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19661
19662         * config/i386/i386.md (cmpcc): New.
19663         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
19664         (sync_compare_and_swap_cc*): Delete.
19665
19666         * config/s390/s390.c (s390_compare_emitted): Remove.
19667         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
19668         s390_compare_emitted used to be handled.  Assert that modes match.
19669         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
19670         refer to sync_compare_and_swap_ccsi.
19671         * config/s390/s390.h (s390_compare_emitted): Remove.
19672         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
19673         instead of s390_compare_emitted.
19674         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
19675         instead of s390_compare_emitted.
19676         * config/s390/s390.md (cmpcc): New.
19677         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
19678         CC_REGNUM, do not pretend it's set.
19679         (sync_compare_and_swap_cc*): Delete.
19680         * config/s390/predicates.md (cc_reg_operand): New.
19681
19682         * expr.c (sync_compare_and_swap_cc): Delete.
19683         * optabs.h (sync_compare_and_swap_cc): Delete.
19684         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
19685         is being used with can_compare_p.
19686         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
19687         (find_cc_set): New.
19688         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
19689         look for a MODE_CC set instead.  Use emit_store_flag.
19690         (expand_compare_and_swap_loop): Likewise, with some additional
19691         complication to avoid a force_reg when useless.  Use
19692         emit_cmp_and_jump_insns.
19693         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
19694         * doc/md.texi (sync_compare_and_swap_cc): Merge with
19695         sync_compare_and_swap documentation.
19696
19697 2009-04-09  Jan Hubicka  <jh@suse.cz>
19698
19699         * except.c (find_prev_try): Break out from ....
19700         (duplicate_eh_regions): ... here; properly update prev_try pointers
19701         when duplication part of tree.
19702         (dump_eh_tree): Improve dumping.
19703         (verify_eh_region): New.
19704         (verify_eh_tree): Use it.
19705
19706 2009-04-06  Richard Guenther  <rguenther@suse.de>
19707
19708         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
19709         &ARRAY addresses by adjusting their types and prepending
19710         a conversion.
19711         * tree-cfg.c (verify_gimple_assign_single): Verify that
19712         addresses are correct.
19713
19714 2009-04-09  Richard Guenther  <rguenther@suse.de>
19715
19716         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
19717         indices into an array reference if possible.
19718         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
19719         Fold POINTER_PLUS_EXPR statements with invariant address.
19720
19721 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
19722
19723         PR target/39634
19724         * config.gcc (powerpc64-*-linux*): Always build biarch.
19725
19726 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
19727
19728         PR c/39613
19729         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
19730         it and pedwarn if this results in an INTEGER_CST.
19731
19732 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19733
19734         * doc/install.texi: Update minimum GMP version.  Remove obsolete
19735         text in MPFR section.
19736
19737 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
19738
19739         * dwarf2out.c (class_scope_p): New static inline.
19740         (class_or_namespace_scope_p): Use it.
19741         (gen_variable_die): Use DW_TAG_member tag for static data member
19742         declarations instead of DW_TAG_variable.
19743
19744         PR middle-end/39573
19745         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
19746         variables.
19747
19748 2009-04-08  Richard Guenther  <rguenther@suse.de>
19749
19750         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
19751         valueize random data.
19752
19753 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
19754
19755         * config.gcc (aix tm_file):  Add aix-stdint.h.
19756         (aix tm clause use_gcc_stdint):  Set to wrap.
19757         * config/rs6000/aix-stdint.h:  New file.
19758
19759 2009-04-08  Richard Guenther  <rguenther@suse.de>
19760
19761         PR middle-end/36291
19762         * tree-dfa.c (add_referenced_var): Do not recurse into
19763         global initializers.
19764         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
19765         exposed variables.
19766         (fold_const_aggregate_ref): Likewise.
19767
19768 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
19769
19770         * recog.c (ordered_comparison_operator): New.
19771         * gensupport.c (std_preds): Add it.
19772         * doc/md.texi (Machine-Independent Predicates): Document it.
19773
19774 2009-04-08  Jan Hubicka  <jh@suse.cz>
19775
19776         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
19777         * function.h (rtl_eh): Remove exception_handler_label_map.
19778         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
19779         remove_exception_handler_label, for_each_eh_label_1): Remove.
19780         (rtl_remove_unreachable_regions): Remove.
19781         (convert_from_eh_region_ranges): Do not remove unreachable regions.
19782         (find_exception_handler_labels): Don't build the hashtable.
19783         (maybe_remove_eh_handler): Remove.
19784         (for_each_eh_label): Rewrite to walk the tree.
19785         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
19786         * except.h (maybe_remove_eh_handler): Remove.
19787         * passes.c (init_optimization_passes): Schedule second EH cleanup
19788         before out-of-ssa.
19789         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
19790         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
19791
19792 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
19793
19794         * genoutput.c (validate_optab_operands): New.
19795         (gen_insn, gen_expand): Call it.
19796
19797         * genflags.c (gen_insn): Detect misused iterators.
19798         (main): Pass line_no to gen_insn, exit with status 1 on error.
19799
19800         * genextract.c (line_no): Make global.
19801         (VEC_safe_set_locstr): Change assertion to error message.
19802         (main): Exit with status 1 on error.
19803
19804 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
19805
19806         PR c/39614
19807         PR c/39673
19808         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
19809         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
19810         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
19811         * c-convert.c (convert): Do not call fold on results of conversion
19812         functions when the result is a C_MAYBE_CONST_EXPR.
19813         * c-parser.c (c_parser_postfix_expression): Do not fold condition
19814         of __builtin_choose_expr.
19815         * c-typeck.c (remove_c_maybe_const_expr): New.
19816         (build_unary_op, build_conditional_expr, build_compound_expr,
19817         build_binary_op, c_objc_common_truthvalue_conversion): Call
19818         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
19819         integer operands.
19820
19821 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
19822
19823         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
19824         CODE to produce a new one. Add a prototype to use fold_convert_const
19825
19826 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
19827
19828         PR bootstrap/39660
19829         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
19830         mix declarations and code.
19831
19832 2009-04-08  Ben Elliston  <bje@au.ibm.com>
19833
19834         * gcc.c: Replace `CC' with `GCC' throughout.
19835
19836 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
19837
19838         * doc/invoke.texi: Document Atom support.
19839
19840 2009-04-07  Jason Merrill  <jason@redhat.com>
19841
19842         PR c++/25185
19843         * c-common.h, c-common.c: Add flag_pretty_templates.
19844         * c-opts.c (c_common_handle_option): Set it.
19845         * c.opt: Add -fno-pretty-templates.
19846         * doc/invoke.texi (C++ Dialect Options): Likewise.
19847
19848 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
19849
19850         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
19851         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
19852         (ia64_expand_builtin): Likewise.
19853
19854 2009-04-07  Martin Jambor  <mjambor@suse.cz>
19855
19856         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
19857         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
19858         ADDR_EXPRS are include too.
19859
19860 2009-04-07  Richard Guenther  <rguenther@suse.de>
19861
19862         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
19863         decls are only used if passes as parameters or if they are
19864         local statics and the call is not to a builtin.
19865         (call_may_clobber_ref_p_1): Likewise.
19866
19867 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19868
19869         * expr.c (do_store_flag): Remove last argument.  Simplify code
19870         to avoid duplication of tests already done by can_compare_p.
19871         (expand_expr_real_1): Adjust caller.
19872
19873 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19874
19875         * optabs.c (can_compare_p): Test the predicate of a
19876         cbranch and cstore pattern.
19877
19878 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19879
19880         * expr.c (convert_move): Use emit_store_flag instead of
19881         "emulating" it.
19882
19883 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
19884
19885         * config/i386/i386.c (ix86_compare_emitted): Remove.
19886         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
19887         ix86_compare_op0 like ix86_compare_emitted used to be handled.
19888         * config/i386/i386.h (ix86_compare_emitted): Remove.
19889         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
19890         instead of ix86_compare_emitted.
19891         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
19892
19893 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
19894
19895         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
19896         Add t-sysroot-suffix to tmake_file.
19897         * config/print-sysroot-suffix.sh: New file.
19898         * config/t-sysroot-suffix: New file.
19899
19900 2009-04-07  Ben Elliston  <bje@au.ibm.com>
19901
19902         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
19903         as the latter produces a warning when the target does not support
19904         infinity.
19905
19906 2009-04-07  Ben Elliston  <bje@au.ibm.com>
19907
19908         * dfp.c: Replace type punning assignments with memcpy throughout.
19909         * Makefile.in (dfp.o-warn): Remove.
19910
19911 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
19912
19913         PR target/39634
19914         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
19915         Include soft-fp/t-softfp after rs6000/t-linux64.
19916
19917 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
19918
19919         * stor-layout.c (set_sizetype): Use the full precision of their
19920         machine mode for bitsize types.
19921
19922 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
19923
19924         * config/i386/i386.md: Revert 2 accidental checkins.
19925
19926 2009-04-06  Joey Ye  <joey.ye@intel.com>
19927             Xuepeng Guo  <xuepeng.guo@intel.com>
19928             H.J. Lu  <hongjiu.lu@intel.com>
19929
19930         Atom pipeline model, tuning and insn selection.
19931         * config.gcc (atom): Add atom config options and target.
19932
19933         * config/i386/atom.md: New.
19934
19935         * config/i386/i386.c (atom_cost): New cost.
19936         (m_ATOM): New macro flag.
19937         (initial_ix86_tune_features): Set m_ATOM.
19938         (x86_accumulate_outgoing_args): Likewise.
19939         (x86_arch_always_fancy_math_387): Likewise.
19940         (processor_target): Add Atom cost.
19941         (cpu_names): Add Atom cpu name.
19942         (override_options): Set Atom ISA.
19943         (ix86_issue_rate): New case PROCESSOR_ATOM.
19944         (ix86_adjust_cost): Likewise.
19945
19946         * config/i386/i386.h (TARGET_ATOM): New target macro.
19947         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
19948         (TARGET_OPT_AGU): New target option.
19949         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
19950         (processor_type): Add PROCESSOR_ATOM.
19951
19952         * config/i386/i386.md (cpu): Add new value "atom".
19953         (use_carry, movu): New attr.
19954         (atom.md): Include atom.md.
19955         (adddi3_carry_rex64): Set attr "use_carry".
19956         (addqi3_carry): Likewise.
19957         (addhi3_carry): Likewise.
19958         (addsi3_carry): Likewise.
19959         (*addsi3_carry_zext): Likewise.
19960         (subdi3_carry_rex64): Likewise.
19961         (subqi3_carry): Likewise.
19962         (subhi3_carry): Likewise.
19963         (subsi3_carry): Likewise.
19964         (x86_movdicc_0_m1_rex64): Likewise.
19965         (*x86_movdicc_0_m1_se): Likewise.
19966         (x86_movsicc_0_m1): Likewise.
19967         (*x86_movsicc_0_m1_se): Likewise.
19968         (*adddi_1_rex64): Emit add insn as much as possible.
19969         (*addsi_1): Likewise.
19970         (return_internal): Set atom_unit.
19971         (return_internal_long): Likewise.
19972         (return_pop_internal): Likewise.
19973         (*rcpsf2_sse): Set atom_sse_attr attr.
19974         (*qrt<mode>2_sse): Likewise.
19975         (*prefetch_sse): Likewise.
19976
19977         * config/i386/i386-c.c (ix86_target_macros_internal): New case
19978         PROCESSOR_ATOM.
19979         (ix86_target_macros_internal): Likewise.
19980
19981         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
19982         (*prefetch_sse_rex): Likewise.
19983         (sse_rcpv4sf2): Likewise.
19984         (sse_vmrcpv4sf2): Likewise.
19985         (sse_sqrtv4sf2): Likewise.
19986         (<sse>_vmsqrt<mode>2): Likewise.
19987         (sse_ldmxcsr): Likewise.
19988         (sse_stmxcsr): Likewise.
19989         (*sse_sfence): Likewise.
19990         (sse2_clflush): Likewise.
19991         (*sse2_mfence): Likewise.
19992         (*sse2_lfence): Likewise.
19993         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
19994         (<sse>_movup<ssemodesuffixf2c>): Likewise.
19995         (avx_movdqu<avxmodesuffix>): Likewise.
19996         (avx_lddqu<avxmodesuffix>): Likewise.
19997         (sse2_movntv2di): Change attr "type" to "ssemov".
19998         (sse2_movntsi): Likewise.
19999         (rsqrtv8sf2): Change attr "type" to "sseadd".
20000         (sse3_addsubv2df3): Set attr "atom_unit".
20001         (sse3_h<plusminus_insn>v4sf3): Likewise.
20002         (*sse2_pmaddwd): Likewise.
20003         (*vec_extractv2di_1_rex64): Likewise.
20004         (*vec_extractv2di_1_avx): Likewise.
20005         (sse2_psadbw): Likewise.
20006         (ssse3_phaddwv8hi3): Likewise.
20007         (ssse3_phaddwv4hi3): Likewise.
20008         (ssse3_phadddv4si3): Likewise.
20009         (ssse3_phadddv2si3): Likewise.
20010         (ssse3_phaddswv8hi3): Likewise.
20011         (ssse3_phaddswv4hi3): Likewise.
20012         (ssse3_phsubwv8hi3): Likewise.
20013         (ssse3_phsubwv4hi3): Likewise.
20014         (ssse3_phsubdv4si3): Likewise.
20015         (ssse3_phsubdv2si3): Likewise.
20016         (ssse3_phsubswv8hi3): Likewise.
20017         (ssse3_phsubswv4hi3): Likewise.
20018         (ssse3_pmaddubsw128): Likewise.
20019         (sse3_pmaddubsw: Likewise.
20020         (ssse3_palignrti): Likewise.
20021         (ssse3_palignrdi): Likewise.
20022
20023 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
20024
20025         * doc/install.texi (Specific): Fix two cross-references to MinGW.
20026
20027 2009-04-06  Richard Guenther  <rguenther@suse.de>
20028
20029         PR tree-optimization/28868
20030         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
20031         of which PHI results we inserted.
20032         (insert_into_preds_of_block): Record inserted PHIs.
20033         (eliminate): Eliminate redundant PHI nodes.
20034         (init_pre): Init inserted_phi_names.
20035
20036 2009-04-06  Richard Guenther  <rguenther@suse.de>
20037
20038         PR tree-optimization/39643
20039         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
20040         IMAGPART_EXPRs of complex constants.
20041         (execute_fold_all_builtins): If we folded a call queue
20042         TODO_update_address_taken.
20043
20044 2009-04-06  Jan Hubicka  <jh@suse.cz>
20045
20046         PR middle-end/39659
20047         * except.c (remove_unreachable_regions): Propagate may_contain_throw
20048         flag.
20049
20050 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
20051
20052         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
20053         delay slot.
20054         (ic_invalidate_array): Likewise.
20055
20056 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
20057
20058         * calls.c (emit_library_call_value_1): Fix a problem with parameter
20059         alignment for library calls.
20060
20061 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
20062
20063         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
20064         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
20065         * config/i386/mingw-stdint.h:  New file.
20066
20067 2009-04-05  Richard Guenther  <rguenther@suse.de>
20068
20069         PR tree-optimization/39648
20070         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
20071         our &A vs. &A[0] IL deficiencies.
20072
20073 2009-04-04  Jan Hubicka  <jh@suse.cz>
20074
20075         * except.c (sjlj_find_directly_reachable_regions): Be ready for
20076         removed toplevel regions.
20077         (sjlj_mark_call_sites): Likewise.
20078
20079 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
20080
20081         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
20082         (cygwin tm clause use_gcc_stdint):  Set to wrap.
20083         * config/i386/cygwin-stdint.h:  New file.
20084
20085 2009-04-04  Richard Guenther  <rguenther@suse.de>
20086
20087         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20088         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20089         single-argument PHIs if we are in loop-closed SSA form.
20090         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20091         for the pre-condition.
20092         (slpeel_tree_peel_loop_to_edge): Likewise.
20093         (vect_build_loop_niters): Take an optional sequence to append stmts.
20094         (vect_generate_tmps_on_preheader): Likewise.
20095         (vect_do_peeling_for_loop_bound): Take extra guards for the
20096         pre-condition.
20097         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
20098         the cost model check.
20099         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20100         guards if we are going to peel.  Do not apply versioning in that case.
20101         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20102         (vect_do_peeling_for_loop_bound): Likewise.
20103         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20104         loop bound only record extra pre-conditions, do not apply loop
20105         versioning.
20106
20107 2009-04-04  Richard Guenther  <rguenther@suse.de>
20108
20109         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20110         renaming code.
20111
20112 2009-04-04  Jan Hubicka  <jh@suse.cz>
20113
20114         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20115         last_basic_block for size of bb->index indexed array.
20116         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20117         compute_out, link_btr_uses, build_btr_def_use_webs,
20118         build_btr_def_use_webs, migrate_btr_defs): Likewise.
20119
20120 2009-04-04  Jan Hubicka  <jh@suse.cz>
20121
20122         * except.c (remove_eh_handler_and_replace): Break out from ...
20123         (remove_eh_handler): ... here.
20124         (bring_to_root): New function.
20125         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20126         handled ones, bring others to root of tree.
20127
20128 2009-04-04  Jan Hubicka  <jh@suse.cz>
20129
20130         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20131         (all_phis_safe_to_merge): New function.
20132         (update_info): New structure.
20133         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20134         (cleanup_empty_eh): Update SSA if possible.
20135
20136 2009-04-04  Richard Guenther  <rguenther@suse.de>
20137
20138         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20139         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20140         (append_vuse): Likewise.
20141
20142 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
20143
20144         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20145         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20146         instead of REG_UNSAVED for DW_CFA_undefined.
20147         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20148         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20149         outermost frame.
20150
20151 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
20152
20153         PR target/39501
20154         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20155         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
20156         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
20157
20158 2009-04-04  Richard Guenther  <rguenther@suse.de>
20159
20160         PR tree-optimization/8781
20161         PR tree-optimization/37892
20162         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20163         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20164         (valueize_refs): Call it for *& valueizations.
20165         (shared_reference_ops_from_ref): Rename to ...
20166         (valueize_shared_reference_ops_from_ref): ... this and valueize.
20167         (shared_reference_ops_from_call): Rename to ...
20168         (valueize_shared_reference_ops_from_call): ... this and valueize.
20169         (vn_reference_lookup): Update.
20170         (visit_reference_op_call): Likewise.
20171         * tree-ssa-pre.c (phi_translate_1): Fold *&.
20172         (eliminate): Value-replace the call address in call statements.
20173
20174 2009-04-04  Richard Guenther  <rguenther@suse.de>
20175
20176         PR tree-optimization/39636
20177         * tree-ssa-forwprop.c
20178         (forward_propagate_addr_into_variable_array_index): Check for
20179         GIMPLE_ASSIGN before accessing the rhs code.
20180
20181 2009-04-03  Jason Merrill  <jason@redhat.com>
20182
20183         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20184
20185 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
20186
20187         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20188         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20189         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20190         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20191         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20192         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20193         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20194         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20195         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20196         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20197         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20198         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20199         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20200         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20201         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20202         Use fr_reg_or_fp01_operand instead of fr_register_operand
20203
20204         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20205         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20206         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20207
20208 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
20209
20210         PR rtl-optimization/39607
20211         PR rtl-optimization/39631
20212
20213         Revert:
20214
20215         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
20216         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20217         instead of DF_LR_OUT.
20218         * ira-lives.c (process_bb_node_lives): Ditto.
20219         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20220         instead of DF_LR_{OUT,IN}.
20221         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20222         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20223
20224 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
20225
20226         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20227         (execute_lower_omp): Always run but take the short way out if -fopenmp
20228         is not given.
20229         (gate_lower_omp): Remove, forcing the pass manager to always run the
20230         pass and always set PROP_gimple_lomp.
20231         (pass_lower_omp): Remove gate function.
20232         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20233         PROP_trees.  Instead, require it.
20234         * ipa-cp.c (pass_ipa_cp): Likewise.
20235         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20236         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20237         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20238         and PROP_gimple_leh.
20239
20240 2009-04-03  Richard Guenther  <rguenther@suse.de>
20241
20242         PR middle-end/13146
20243         PR tree-optimization/23940
20244         PR tree-optimization/33237
20245         PR middle-end/33974
20246         PR middle-end/34093
20247         PR tree-optimization/36201
20248         PR tree-optimization/36230
20249         PR tree-optimization/38049
20250         PR tree-optimization/38207
20251         PR tree-optimization/38230
20252         PR tree-optimization/38301
20253         PR tree-optimization/38585
20254         PR middle-end/38895
20255         PR tree-optimization/38985
20256         PR tree-optimization/39299
20257         * tree-ssa-structalias.h: Remove.
20258         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
20259         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
20260         (struct vuse_element_d): Remove.
20261         (struct vuse_vec_d): Likewise.
20262         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
20263         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
20264         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
20265         VUSE_ELEMENT_VAR): Likewise.
20266         (struct voptype_d): Likewise.
20267         (NUM_VOP_FREE_BUCKETS): Likewise.
20268         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
20269         (struct stmt_operands_d): Remove.
20270         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
20271         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
20272         VDEF_NUM, VDEF_VECT): Likewise.
20273         (copy_virtual_operands): Remove.
20274         (operand_build_cmp): Likewise.
20275         (create_ssa_artificial_load_stmt): Likewise.
20276         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
20277         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
20278         vuse_index and mayuse_index members.  Pack and move done and iter_type
20279         members to the front.
20280         (SSA_OP_VMAYUSE): Remove.
20281         (SSA_OP_VIRTUAL_USES): Adjust.
20282         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
20283         (unlink_stmt_vdef): Declare.
20284         (add_to_addressable_set): Remove.
20285         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
20286         (vrp_visit_stmt): Likewise.
20287         * doc/tree-ssa.texi (Alias analysis): Update.
20288         * doc/invoke.texi (max-aliased-vops): Remove docs.
20289         (avg-aliased-vops): Likewise.
20290         * tree-into-ssa.c (syms_to_rename): Remove.
20291         (need_to_update_vops_p): Likewise.
20292         (need_to_initialize_update_ssa_p): Rename to ...
20293         (update_ssa_initialized_fn): ... this.  Track function we are
20294         initialized for.
20295         (symbol_marked_for_renaming): Simplify.
20296         (add_new_name_mapping): Do not set need_to_update_vops_p.
20297         (dump_currdefs): Use SYMS_TO_RENAME.
20298         (rewrite_update_stmt): Always walk all uses/defs.
20299         (dump_update_ssa): Adjust.
20300         (init_update_ssa): Take function argument.  Track what we are
20301         initialized for.
20302         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
20303         (create_new_def_for): Initialize for cfun, assert we are initialized
20304         for cfun.
20305         (mark_sym_for_renaming): Simplify.
20306         (mark_set_for_renaming): Do not initialize update-ssa.
20307         (need_ssa_update_p): Simplify.  Take function argument.
20308         (name_mappings_registered_p): Assert we ask for the correct function.
20309         (name_registered_for_update_p): Likewise.
20310         (ssa_names_to_replace): Likewise.
20311         (release_ssa_name_after_update_ssa): Likewise.
20312         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
20313         (dump_decl_set): Do not print a newline.
20314         (debug_decl_set): Do it here.
20315         (dump_update_ssa): And here.
20316         * tree-ssa-loop-im.c (move_computations): Adjust.
20317         (movement_possibility): Likewise.
20318         (determine_max_movement): Likewise.
20319         (gather_mem_refs_stmt): Likewise.
20320         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
20321         or NAME_MEMORY_TAG.
20322         * tree-complex.c (update_all_vops): Remove.
20323         (expand_complex_move): Adjust.
20324         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
20325         Simplify test for memory referencing statement.  Exclude
20326         non-invariant ADDR_EXPRs.
20327         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
20328         * tree-loop-distribution.c (generate_memset_zero): Adjust.
20329         (rdg_flag_uses): Likewise.
20330         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
20331         related code.
20332         (tree_optimize_tail_calls_1): Also split the
20333         edge from the entry block if we have degenerate PHI nodes in
20334         the first basic block.
20335         * tree.c (init_ttree): Remove memory-tag related code.
20336         (tree_code_size): Likewise.
20337         (tree_node_structure): Likewise.
20338         (build7_stat): Re-write to be build6_stat.
20339         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
20340         (SSA_VAR_P): Adjust.
20341         (struct tree_memory_tag): Remove.
20342         (struct tree_memory_partition_tag): Likewise.
20343         (union tree_node): Adjust.
20344         (build7): Re-write to be build6.
20345         * tree-pass.h (pass_reset_cc_flags): Remove.
20346         (TODO_update_address_taken): New flag.
20347         (pass_simple_dse): Remove.
20348         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
20349         * params.h (MAX_ALIASED_VOPS): Remove.
20350         (AVG_ALIASED_VOPS): Likewise.
20351         * omp-low.c (expand_omp_taskreg): Update SSA form.
20352         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
20353         aliases the lhs in a copy stmt.
20354         * tree-ssa-dse.c (struct address_walk_data): Remove.
20355         (memory_ssa_name_same): Likewise.
20356         (memory_address_same): Likewise.
20357         (get_kill_of_stmt_lhs): Likewise.
20358         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
20359         unused stores.  Look through PHI nodes into post-dominated regions.
20360         (dse_optimize_stmt): Simplify.  Properly remove stores.
20361         (tree_ssa_dse): Compute dominators.
20362         (execute_simple_dse): Remove.
20363         (pass_simple_dse): Likewise.
20364         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
20365         gimple_loaded_syms and gimple_stored_syms computation.
20366         * toplev.c (dump_memory_report): Dump alias and pta stats.
20367         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
20368         (vn_reference_eq): Likewise.
20369         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
20370         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
20371         valueize_vuses): Remove.
20372         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
20373         (get_def_ref_stmt_vuse): ... this.
20374         (vn_reference_lookup_2): New function.
20375         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
20376         walking equivalent vuses.  Simplify.
20377         (vn_reference_lookup): Likewise.
20378         (vn_reference_insert): Likewise.
20379         (vn_reference_insert_pieces): Likewise.
20380         (visit_reference_op_call): Simplify.
20381         (visit_reference_op_load): Likewise.
20382         (visit_reference_op_store): Likewise.
20383         (init_scc_vn): Remove shared_lookup_vuses initialization.
20384         (free_scc_vn): Remove shared_lookup_vuses freeing.
20385         (sort_vuses, sort_vuses_heap): Remove.
20386         (get_ref_from_reference_ops): Export.
20387         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
20388         vector with single vuse pointer.
20389         (vn_reference_lookup_pieces, vn_reference_lookup,
20390         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
20391         (shared_vuses_from_stmt): Remove.
20392         (get_ref_from_reference_ops): Declare.
20393         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
20394         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20395         memory-tag related code.
20396         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
20397         (likely_value): Add comment, skip static-chain of call statements.
20398         (surely_varying_stmt_p): Adjust.
20399         (gimplify_and_update_call_from_tree): Likewise.
20400         (execute_fold_all_builtins): Do not rebuild alias info.
20401         (gimplify_and_update_call_from_tree): Properly update VOPs.
20402         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
20403         (copy_ref_info): Remove memory-tag related code.
20404         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
20405         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
20406         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
20407         computation.
20408         * tree-ssa-dom.c (gimple_p): Remove typedef.
20409         (eliminate_redundant_computations): Adjust.
20410         (record_equivalences_from_stmt): Likewise.
20411         (avail_expr_hash): Likewise.
20412         (avail_expr_eq): Likewise.
20413         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
20414         (stmt_makes_single_load): Likewise.
20415         (stmt_makes_single_store): Likewise.
20416         * tree-ssa-alias.c: Rewrite completely.
20417         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
20418         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
20419         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
20420         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
20421         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
20422         Remove public functions.
20423         (pass_reset_cc_flags): Remove.
20424         (pass_build_alias): Move ...
20425         * tree-ssa-structalias.c (pass_build_alias): ... here.
20426         * tree-ssa-alias.c (may_be_aliased): Move ...
20427         * tree-flow-inline.h (may_be_aliased): ... here.
20428         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
20429         count_uses_and_derefs): Move ...
20430         * gimple.c: ... here.
20431         * gimple.h (count_uses_and_derefs): Declare.
20432         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
20433         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
20434         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
20435         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
20436         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
20437         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
20438         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
20439         New functions.
20440         * tree-dfa.c (refs_may_alias_p): Move ...
20441         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
20442         * tree-ssa-alias.h: New file.
20443         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
20444         (statement_sink_location): Likewise.
20445         * opts.c (decode_options): Do not adjust max-aliased-vops or
20446         avg-aliased-vops values.
20447         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
20448         (TV_CALL_CLOBBER): Likewise.
20449         (TV_FLOW_SENSITIVE): Likewise.
20450         (TV_FLOW_INSENSITIVE): Likewise.
20451         (TV_MEMORY_PARTITIONING): Likewise.
20452         (TV_ALIAS_STMT_WALK): New timevar.
20453         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
20454         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
20455         (get_address_description): Remove memory-tag related code.
20456         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
20457         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
20458         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
20459         and immediate uses in statements.  Document.
20460         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
20461         (dump_symbols): Remove.
20462         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
20463         * alias.c (get_deref_alias_set): New function split out from ...
20464         (get_alias_set): ... here.
20465         * alias.h (get_deref_alias_set): Declare.
20466         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
20467         type parameter.  Remove restrict pointer handling.  Create a
20468         ref-all pointer in case type-based alias sets do not conflict.
20469         (vect_analyze_data_refs): Remove SMT related code.
20470         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
20471         (vectorizable_load): Likewise.
20472         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
20473         (DR_SYMBOL_TAG, DR_VOPS): Remove.
20474         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
20475         Ignore vops and SMTs.
20476         (dr_analyze_alias): Likewise..
20477         (free_data_ref): Likewise.
20478         (create_data_ref): Likewise.
20479         (analyze_all_data_dependences): Likewise.
20480         (get_references_in_stmt): Adjust.
20481         * tree-flow-inline.h (gimple_aliases_computed_p,
20482         gimple_addressable_vars, gimple_call_clobbered_vars,
20483         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
20484         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
20485         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
20486         gimple_mem_ref_stats): Remove.
20487         (gimple_vop): New function.
20488         (op_iter_next_use): Remove vuses and mayuses cases.
20489         (op_iter_next_def): Remove vdefs case.
20490         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
20491         (clear_and_done_ssa_iter): Do not set removed fields.
20492         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
20493         Assert we are not iterating over vuses or vdefs if not also
20494         iterating over uses or defs.
20495         (op_iter_init_use): Likewise.
20496         (op_iter_init_def): Likewise.
20497         (op_iter_next_vdef): Remove.
20498         (op_iter_next_mustdef): Likewise.
20499         (op_iter_init_vdef): Likewise.
20500         (compare_ssa_operands_equal): Likewise.
20501         (link_use_stmts_after): Handle vuse operand.
20502         (is_call_used): Use is_call_clobbered.
20503         (is_call_clobbered): Global variables are always call clobbered,
20504         query the call-clobbers bitmap.
20505         (mark_call_clobbered): Ignore global variables.
20506         (clear_call_clobbered): Likewise.
20507         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
20508         virtual operands sanity check.
20509         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
20510         Remove.
20511         (TARGET_MEM_REF): Remove TMR_TAG operand.
20512         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
20513         Remove call-clobber related code.
20514         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
20515         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
20516         partitions or escape reason.
20517         (get_single_def_stmt, get_single_def_stmt_from_phi,
20518         get_single_def_stmt_with_phi): Remove.
20519         (dump_referenced_vars): Tidy.
20520         (get_ref_base_and_extent): Allow bare decls.
20521         (collect_dfa_stats): Adjust.
20522         * graphite.c (rename_variables_in_stmt): Adjust.
20523         (graphite_copy_stmts_from_block): Likewise.
20524         (translate_clast): Likewise.
20525         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
20526         (EXPR_DIES): New.
20527         (translate_vuse_through_block): Use the oracle.
20528         (phi_translate_1): Adjust.
20529         (value_dies_in_block_x): Use the oracle.  Cache the outcome
20530         in EXPR_DIES.
20531         (valid_in_sets): Check if the VUSE for
20532         a REFERENCE is available.
20533         (eliminate): Do not remove stmts during elimination,
20534         instead queue and remove them afterwards.
20535         (do_pre): Do not rebuild alias info.
20536         (pass_pre): Run TODO_rebuild_alias before PRE.
20537         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
20538         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
20539         (mark_all_v_defs_stmt): Remove.
20540         (mark_all_v_defs_seq): Adjust.
20541         (sra_replace): Likewise.
20542         (scalarize_use): Likewise.
20543         (scalarize_copy): Likewise.
20544         (scalarize_init): Likewise.
20545         (scalarize_ldst): Likewise.
20546         (todoflags): Remove.
20547         (tree_sra): Do not rebuild alias info.
20548         (tree_sra_early): Adjust.
20549         (pass_sra): Run TODO_update_address_taken before SRA.
20550         * tree-predcom.c (set_alias_info): Remove.
20551         (prepare_initializers_chain): Do not call it.
20552         (mark_virtual_ops_for_renaming): Adjust.
20553         (mark_virtual_ops_for_renaming_list): Remove.
20554         (initialize_root_vars): Adjust.
20555         (initialize_root_vars_lm): Likewise.
20556         (prepare_initializers_chain): Likewise.
20557         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
20558         (may_propagate_copy_into_stmt): Likewise.
20559         (merge_alias_info): Do nothing for now.
20560         (propagate_tree_value_into_stmt): Adjust.
20561         (stmt_may_generate_copy): Likewise.
20562         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
20563         not mark symbols for renaming.
20564         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
20565         with the same statement, make sure to update the new pointed-to one.
20566         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
20567         call statements, do not mark symbols for renaming.
20568         (mark_operand_necessary): Dump something.
20569         (ref_may_be_aliased): New function.
20570         (mark_aliased_reaching_defs_necessary_1): New helper function.
20571         (mark_aliased_reaching_defs_necessary): Likewise.
20572         (mark_all_reaching_defs_necessary_1): Likewise.
20573         (mark_all_reaching_defs_necessary): Likewise.
20574         (propagate_necessity): Do not process virtual PHIs.  For
20575         non-aliased loads mark all reaching definitions as necessary.
20576         For aliased loads and stores mark the immediate dominating
20577         aliased clobbers as necessary.
20578         (visited): New global static.
20579         (perform_tree_ssa_dce): Free visited bitmap after propagating
20580         necessity.
20581         (remove_dead_phis): Perform simple dead virtual PHI removal.
20582         (remove_dead_stmt): Properly unlink virtual operands when
20583         removing stores.
20584         (eliminate_unnecessary_stmts): Schedule PHI removal after
20585         stmt removal.
20586         * tree-ssa-ter.c (is_replaceable_p): Adjust.
20587         (process_replaceable): Likewise.
20588         (find_replaceable_in_bb): Likewise.
20589         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
20590         based on the single gimple vop.
20591         (verify_flow_insensitive_alias_info): Remove.
20592         (verify_flow_sensitive_alias_info): Likewise.
20593         (verify_call_clobbering): Likewise.
20594         (verify_memory_partitions): Likewise.
20595         (verify_alias_info): Likewise.
20596         (verify_ssa): Adjust..
20597         (execute_update_addresses_taken): Export.  Update SSA
20598         manually.  Optimize only when optimizing.  Use a local bitmap.
20599         (pass_update_address_taken): Remove TODO_update_ssa, add
20600         TODO_dump_func.
20601         (pass_update_address_taken): Just use TODO_update_address_taken.
20602         (init_tree_ssa): Do not initialize addressable_vars.
20603         (verify_ssa): Verify new VUSE / VDEF properties.
20604         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
20605         Do not call verify_alias_info.
20606         (delete_tree_ssa): Clear the VUSE, VDEF operands.
20607         Do not free the loaded and stored syms bitmaps.  Reset the escaped
20608         and callused solutions.  Do not free addressable_vars.
20609         Remove memory-tag related code.
20610         (warn_uninitialized_var): Aliases are always available.
20611         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
20612         * lambda-code.c (can_put_in_inner_loop): Adjust.
20613         (can_put_after_inner_loop): Likewise.
20614         (perfect_nestify): Likewise.
20615         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
20616         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
20617         (vectorizable_conversion): Do not mark symbols for renaming.
20618         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
20619         (expand_call_inline): Unlink the calls virtual operands before
20620         replacing it.
20621         (tree_function_versioning): Do not call update_ssa if we are not
20622         updating clones.  Simplify.
20623         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
20624         (propagate_with_phi): Likewise..
20625         * tree-outof-ssa.c (create_temp): Remove memory tag and call
20626         clobber code.  Assert we are not aliased or global.
20627         * tree-flow.h: Include tree-ssa-alias.h
20628         (enum escape_type): Remove.
20629         (struct mem_sym_stats_d): Likewise.
20630         (struct mem_ref_stats_d): Likewise.
20631         (struct gimple_df): Add vop member.  Remove global_var,
20632         call_clobbered_vars, call_used_vars, addressable_vars,
20633         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
20634         escaped and callused members.
20635         (struct ptr_info_def): Remove all members, add points-to solution
20636         member pt.
20637         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
20638         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
20639         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
20640         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
20641         (tree-ssa-alias.o): Likewise.
20642         (toplev.o): Add tree-ssa-alias.h
20643         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
20644         * gimple.c (gimple_set_bb): Fix off-by-one error.
20645         (is_gimple_reg): Do not handle memory tags.
20646         (gimple_copy): Also copy virtual operands.
20647         Delay updating the statement.  Do not reset loaded and stored syms.
20648         (gimple_set_stored_syms): Remove.
20649         (gimple_set_loaded_syms): Likewise.
20650         (gimple_call_copy_skip_args): Copy the virtual operands
20651         and mark the new statement modified.
20652         * tree-ssa-structalias.c (may_alias_p): Remove.
20653         (set_uids_in_ptset): Take the alias set to prune with as
20654         parameter.  Fold in the alias test of may_alias_p.
20655         (compute_points_to_sets): Compute whether a ptr is dereferenced
20656         in a local sbitmap.
20657         (process_constraint): Deal with &ANYTHING on the lhs, reject all
20658         other ADDRESSOF constraints on the lhs.
20659         (get_constraint_for_component_ref): Assert that we don't get
20660         ADDRESSOF constraints from the base of the reference.
20661         Properly generate UNKNOWN_OFFSET for DEREF if needed.
20662         (struct variable_info): Remove collapsed_to member.
20663         (get_varinfo_fc): Remove.
20664         (new_var_info): Do not set collapsed_to.
20665         (dump_constraint): Do not follow cycles.
20666         (dump_constraint_graph): Likewise.
20667         (build_pred_graph): Likewise.
20668         (build_succ_graph): Likewise.
20669         (rewrite_constraints): Likewise.
20670         (do_simple_structure_copy): Remove.
20671         (do_rhs_deref_structure_copy): Remove.
20672         (do_lhs_deref_structure_copy): Remove.
20673         (collapse_rest_of_var): Remove.
20674         (do_structure_copy): Re-implement.
20675         (pta_stats): New global variable.
20676         (dump_pta_stats): New function.
20677         (struct constraint_expr): Make offset signed.
20678         (UNKNOWN_OFFSET): Define special value.
20679         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
20680         (solution_set_expand): New helper function split out from ...
20681         (do_sd_constraint): ... here.
20682         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
20683         (do_ds_constraint): Likewise.
20684         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
20685         and CALLUSED = *CALLUSED.
20686         (set_union_with_increment): Make inc argument signed.
20687         (type_safe): Remove.
20688         (get_constraint_for_ptr_offset): Handle unknown and negative
20689         constant offsets.
20690         (first_vi_for_offset): Handle offsets before start.  Bail
20691         out early for offsets beyond the variable extent.
20692         (first_or_preceding_vi_for_offset): New function.
20693         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
20694         Together with ESCAPED = *ESCAPED this properly computes reachability.
20695         (find_what_var_points_to): New function.
20696         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
20697         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
20698         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
20699         pt_solutions_intersect): New functions.
20700         (compute_call_used_vars): Remove.
20701         (compute_may_aliases): New main entry into PTA computation.
20702         * gimple.h (gimple_p): New typedef.
20703         (struct gimple_statement_base): Remove references_memory_p.
20704         (struct gimple_statement_with_memory_ops_base): Remove
20705         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
20706         members.
20707         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
20708         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
20709         gimple_set_references_memory): Remove.
20710         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
20711         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
20712         New functions.
20713         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
20714         (verify_expr): Allow RESULT_DECL.
20715         (gimple_duplicate_bb): Do not copy virtual operands.
20716         (gimple_duplicate_sese_region): Adjust.
20717         (gimple_duplicate_sese_tail): Likewise.
20718         (mark_virtual_ops_in_region): Remove.
20719         (move_sese_region_to_fn): Do not call it.
20720         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
20721         and pass_simple_dse.
20722         (execute_function_todo): Handle TODO_update_address_taken,
20723         call execute_update_addresses_taken for TODO_rebuild_alias.
20724         (execute_todo): Adjust.
20725         (execute_one_pass): Init dump files early.
20726         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
20727         call-clobbered.
20728         (create_general_new_stmt): Clear vops.
20729         * tree-ssa-reassoc.c (get_rank): Adjust.
20730         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
20731         symbols for renaming.
20732         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
20733         (PARAM_AVG_ALIASED_VOPS): Likewise.
20734         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
20735         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
20736         * tree-ssa-operands.c: Simplify for new virtual operand representation.
20737         (operand_build_cmp, copy_virtual_operands,
20738         create_ssa_artificial_load_stmt, add_to_addressable_set,
20739         gimple_add_to_addresses_taken): Remove public functions.
20740         (unlink_stmt_vdef): New function.
20741
20742 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
20743
20744         * config.gcc (powerpc-*-linux*): Merge variants.
20745
20746 2009-04-02  Chao-ying Fu  <fu@mips.com>
20747             James Grosbach  <james.grosbach@microchip.com>
20748
20749         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
20750         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
20751         cop0_sp_offset.
20752         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
20753         keep_interrupts_masked_p, use_debug_exception_return_p.
20754         (mips_attribute_table): Add interrupt, use_shadow_register_set,
20755         keep_interrupts_masked, use_debug_exception_return.
20756         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
20757         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
20758         New functions.
20759         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
20760         (mips_print_operand): Process COP0 registers to print $0 .. $31
20761         correctly for GAS to process.
20762         (mips_interrupt_extra_call_saved_reg_p): New function.
20763         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
20764         extra registers.
20765         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
20766         (mips_compute_frame_info): Add supports for interrupt context that
20767         includes doubleword accumulators and COP0 registers.
20768         (mips_for_each_saved_acc): New function.
20769         (mips_for_each_saved_gpr_and_fpr): Change the function name from
20770         mips_for_each_saved_reg.
20771         (mips_save_reg): Save accumulators.
20772         (mips_kernel_reg_p): A new for_each_rtx callback.
20773         (mips_expand_prologue): Support interrupt handlers.
20774         (mips_restore_reg): Restore accumulators.
20775         (mips_expand_epilogue): Support interrupt handlers.
20776         (mips_can_use_return_insn): Return false for interrupt handlers.
20777         (mips_epilogue_uses): New function.
20778         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
20779         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
20780         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
20781         cop0_move): New instructions.
20782         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
20783         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
20784         defines.
20785         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
20786         New defines.
20787         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
20788         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
20789         interrupt handlers, we use K0 as the temporary register.
20790         (EPILOGUE_USES): Change to a function call.
20791         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
20792         handlers, we use K0 as the temporary register.
20793
20794         * doc/extend.texi (Function Attributes): Document interrupt,
20795         use_shadow_register_set, keep_interrupts_masked,
20796         use_debug_exception_return for MIPS attributes.
20797
20798 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
20799
20800         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
20801         Remove a number of t-files from tmake_file.
20802         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
20803         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
20804         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
20805         target_prototype, not TARGET_PROTOTYPE.
20806         (LINK_OS_GNU_SPEC): Define.
20807         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
20808         and darwin-ldoubdle.c.
20809
20810 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
20811
20812         PR driver/39293
20813         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
20814         (cpp_options): Ditto.
20815         (default_compilers): Ditto.
20816         (display_help): Ditto.
20817         (process_command): Ditto.
20818         (do_spec_1): Ditto.
20819         (set_input): Use lbasename instead of duplicate code.
20820         (save_temps_prefix): New static for -save-temps=obj.
20821         (save_temps_length): Ditto.
20822
20823         * doc/invoke.texi (-save-temps=obj): Document new variant to
20824         -save-temps switch.
20825
20826 2009-04-02  Jeff Law  <law@redhat.com>
20827
20828         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
20829         variable.
20830
20831 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20832
20833         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
20834         * configure: Regenerated.
20835
20836 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20837
20838         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
20839         share the argument list.
20840
20841 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20842
20843         Merge
20844
20845         2009-02-12  Diego Novillo  <dnovillo@google.com>
20846
20847         * varpool.c (debug_varpool): New.
20848         * cgraph.h (debug_varpool): Declare.
20849
20850 2009-04-02  Jan Hubicka  <jh@suse.cz>
20851
20852         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
20853         pass.
20854
20855 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20856
20857         * config/i386/i386.c (ix86_abi): Move initialization to ...
20858         (override_options): Here.
20859
20860 2009-04-02  Christian Bruel  <christian.bruel@st.com>
20861
20862         * config/sh/sh.c (sh_dwarf_register_span): New function.
20863         (TARGET_DWARF_REGISTER_SPAN): Define.
20864         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
20865
20866 2009-04-02  Ira Rosen  <irar@il.ibm.com>
20867
20868         PR tree-optimization/39595
20869         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
20870         interleaved loads group is not  greater than the SLP group size.
20871
20872 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
20873
20874         * builtins.c (is_builtin_name): New.
20875         (called_as_built_in): Use is_builtin_name.
20876         * tree.h (is_builtin_name): New.
20877         * varasm.c (incorporeal_function_p): Use is_builtin_name
20878
20879 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
20880
20881         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
20882
20883 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
20884
20885         PR c++/26693
20886         * c-decl.c (clone_underlying_type): Move this ...
20887         * c-common.c (set_underlying_type): ... here.
20888         Also, make sure the function properly sets TYPE_STUB_DECL() on
20889         the newly created typedef variant type.
20890         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
20891         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
20892         points.
20893
20894 2009-04-02  Richard Guenther  <rguenther@suse.de>
20895
20896         PR tree-optimization/37221
20897         * tree-flow.h (degenerate_phi_result): Declare.
20898         * tree-ssa-dom.c (degenerate_phi_result): Export.
20899         * tree-scalar-evolution.c (analyze_initial_condition): If
20900         the initial condition is defined by a degenerate PHI node
20901         use the degenerate value.
20902
20903 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
20904
20905         PR rtl-optimization/39588
20906         * combine.c (merge_outer_ops): Do not set the constant when this
20907         is not necessary.
20908         (simplify_shift_const_1): Do not modify it either in this case.
20909
20910 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
20911
20912         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
20913         tuning is deprecated if -mtune value is set to an Itanium1 variant.
20914
20915 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
20916
20917         PR c/29027
20918         * c-lex.c (interpret_float): Default (no suffix) is double.
20919
20920 2009-04-1  Xinliang David Li  <davidxl@google.com>
20921
20922         * config/i386/i386.c (legitimate_constant_p): Recognize
20923         all one vector constant.
20924
20925 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20926
20927         * config/vax/vax.c: Add #includes to silence warnings.
20928         Change #include order to silence two warnings.
20929
20930 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20931
20932         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
20933         (ASM_SPEC): Pass -k to the assembler for PIC code.
20934
20935 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20936
20937         * config.gcc: Add vax-*-linux* to the switch.
20938         * config/vax/linux.h: New file. (TARGET_VERSION,
20939         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
20940
20941 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20942
20943         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
20944         Use predicate macros instead of GET_CODE() == foo.
20945         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
20946         ashlsi3, rotrsi3, <unnamed>): Likewise.
20947
20948 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20949
20950         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
20951         jbbccihi, jbbccisi): Remova trailing whitespace.
20952         * config/vax/constraints.md: Likewise.
20953         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
20954         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
20955         * config/vax/predicates.md: Likewise.
20956         * config/vax/vax.c (print_operand_address, vax_output_int_move,
20957         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
20958         * config/vax/vax.h: Likewise.
20959         * config/vax/vax.md (nonlocal_goto): Likewise.
20960
20961 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20962
20963         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
20964         (indirectable_address_p, adjacent_operands_p): Add spaces around
20965         braces.
20966         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
20967
20968 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20969
20970         * config/vax/vax.c (legitimate_constant_address_p,
20971         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
20972         index_term_p, reg_plus_index_p, legitimate_address_p,
20973         vax_mode_dependent_address_p): Update comments to match functions
20974         modified by the recent int->bool conversion.
20975
20976 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20977
20978         * config/vax/builtins.md: Update copyright message.
20979         * config/vax/constraints.md: Likewise.
20980         * config/vax/netbsd-elf.h: Likewise.
20981         * config/vax/predicates.md: Likewise.
20982         * config/vax/vax-protos.h: Likewise.
20983         * config/vax/vax.c: Likewise.
20984         * config/vax/vax.h: Likewise.
20985         * config/vax/vax.md: Likewise.
20986         * config/vax/vax.opt: Likewise.
20987
20988 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
20989
20990         * config/vax/builtins.md (ffssi2, ffssi2_internal,
20991         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
20992         * config/vax/constraints.md (B, R): Likewise.
20993         * config/vax/predicates.md (external_memory_operand,
20994         nonimmediate_addsub_di_operand): Likewise.
20995         * config/vax/vax.c (vax_output_int_add): Likewise.
20996         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
20997         untyped_call): Likewise.
20998
20999 2009-04-01  Matt Thomas  <matt@3am-software.com>
21000
21001         * config/vax/predicates.md: New file.
21002         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21003         external_const_operand, nonsymbolic_operand, external_memory_operand,
21004         indirect_memory_operand, indexed_memory_operand,
21005         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21006         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21007         predicate.
21008         * config/vax/constraints.md: New file.
21009         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21010         New constraint.
21011         * config/vax/builtins.md: New file.
21012         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21013         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21014         jbbccisi): Define.
21015         * config/vax/vax.opt (mqmath): Add option.
21016         * config/vax/vax.md (isfx): Extend with DI.
21017         (VAXintQH, VAXintQHSD): Define.
21018         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21019         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21020         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21021         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21022         (movdi): Update constraints and use vax_output_int_move().
21023         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21024         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21025         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
21026         nonlocal_goto): New.
21027         (mov<mode>): Extend accepted operand types.
21028         (subdi3_old): Rename from subdi3, change update constraints and use
21029         a new implementation.
21030         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
21031         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
21032         MOVE_RATIO, CLEAR_RATIO): Define.
21033         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
21034         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
21035         (PRINT_OPERAND): Redefine using a function instead of inlined code.
21036         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
21037         (split_quadword_operands): Make static and really allow variable
21038         splitting.
21039         (print_operand_address): Update for PIC generation.
21040         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
21041         indexable_address_p, fixup_mathdi_operand,
21042         vax_expand_addsub_di_operands, adjacent_operands_p): New.
21043         (vax_float_literal, legitimate_constant_p,
21044         indirectable_constant_address_p, index_term_p,
21045         reg_plus_index_p): Return bool instead of int.
21046         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
21047         where needed.
21048         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
21049         generation.
21050         (vax_output_conditional_branch): Indent.
21051         (legitimate_constant_address_p, indirectable_constant_address_p,
21052         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
21053         vax_mode_dependent_address_p): Return bool instead of int, update for
21054         PIC generation.
21055         * config/vax/vax-protos.h (legitimate_constant_address_p,
21056         legitimate_constant_p, legitimate_address_p,
21057         vax_mode_dependent_address_p): Change declaration to bool.
21058         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
21059         vax_expand_addsub_di_operands, vax_output_int_subtract,
21060         vax_output_movmemsi): Declare.
21061         (split_quadword_operands, vax_float_literal): Delete declaration.
21062         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
21063         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
21064         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
21065         ASM_OUTPUT_DWARF_PCREL): Define.
21066         (ASM_SPEC): Change definition to allow PIC generation.
21067
21068 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
21069
21070         * doc/sourcebuild.texi: Update front-end requirements.
21071
21072 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21073
21074         PR target/39226
21075         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
21076         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
21077         (booldi3_internal3): Use boolean_or_operator instead of
21078         boolean_operator.
21079
21080 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
21081
21082         PR c/39605
21083         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21084         declarator whose size is not an integer constant expression but
21085         folds to an integer constant, then treat it as a constant
21086         subsequently.
21087
21088 2009-04-01  Richard Guenther  <rguenther@suse.de>
21089
21090         * fold-const.c (fold_plusminus_mult_expr): Do not fold
21091         i * 4 + 2 to (i * 2 + 1) * 2.
21092
21093 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21094
21095         PR c/37772
21096         * c-parser.c (c_parser_asm_statement): Skip until close paren and
21097         return if c_parser_asm_string_literal returned NULL.
21098
21099 2009-04-01  Nick Clifton  <nickc@redhat.com>
21100
21101         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21102         already defined.
21103         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21104         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
21105         other typedefs to avoid conflicts with libgcc2.c.  Define labels
21106         to gain 16-bit bit-manipulation functions from libgcc2.c and then
21107         include it.
21108         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
21109         to gain 16-bit trapping arithmetic functions from libgcc2.c and
21110         then include it.
21111
21112 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
21113
21114         * varasm.c (default_function_rodata_section): Declare DOT as
21115         const char*.
21116
21117 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
21118             Andrey Galkin  <agalkin@hypercom.com>
21119
21120         PR/39492
21121         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21122         Make object_name unique for each process.
21123
21124 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21125
21126         PR other/39591
21127         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21128         addressable variables in the parallel that could go out of scope while
21129         running queued tasks.
21130
21131 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
21132
21133         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21134         (CASE_VALUES_THRESHOLD): Redefine.
21135         * config/avr/avr.c (avr_override_options): Remove initialization of
21136         avr_case_values_threshold variable.
21137         (avr_case_values_threshold): Remove variable. Add new function.
21138         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21139         * config/avr/avr.opt (mno-tablejump): Remove option.
21140         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21141
21142 2009-04-01  DJ Delorie  <dj@redhat.com>
21143
21144         * varasm.c (default_function_rodata_section): Don't assume
21145         anything about where the first '.' in the section name is.
21146
21147 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
21148
21149         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21150         rs6000_emit_stack_tie.
21151
21152 2009-03-31  Ian Lance Taylor  <iant@google.com>
21153
21154         * tree-eh.c (tree_remove_unreachable_handlers): Compare
21155         gimple_code with GIMPLE_RESX, not RESX.
21156
21157 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21158
21159         * c-common.c (c_get_ident): New.
21160         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21161
21162 2009-04-01  Ben Elliston  <bje@au.ibm.com>
21163
21164         * config/rs6000/sysv4.opt (msdata): Improve option description.
21165
21166 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
21167
21168         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21169         (divdf3_internal_lat): Remove.
21170         (divxf3_internal_lat): Remove.
21171         (divxf3_internal_thr): Remove.
21172         (divxf): Use divxf3_internal.
21173         * config/ia64/div.md (divsf3_internal_lat): New.
21174         (divdf3_internal_lat): New.
21175         (divxf3_internal): New.
21176
21177 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21178
21179         PR c/448
21180         * Makefile.in (USE_GCC_STDINT): Define.
21181         (stmp-int-hdrs): Install stdint.h if applicable.
21182         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21183         if known.
21184         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21185         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21186         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): Define.
21193         (c_common_nodes_and_builtins): Initialize
21194         underlying_wchar_type_node.  Do not initialize
21195         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
21196         nodes for new types.
21197         (c_stddef_cpp_builtins): Define macros for new types.
21198         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21199         Remove.
21200         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21201         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21202         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21203         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21204         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21205         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21206         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21207         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21208         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21209         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21210         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21211         int16_type_node, int32_type_node, int64_type_node,
21212         uint8_type_node, uint16_type_node, c_uint32_type_node,
21213         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21214         int_least32_type_node, int_least64_type_node,
21215         uint_least8_type_node, uint_least16_type_node,
21216         uint_least32_type_node, uint_least64_type_node,
21217         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21218         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21219         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21220         uintptr_type_node): Define.
21221         * c-cppbuiltin.c (builtin_define_constants,
21222         builtin_define_type_minmax): New.
21223         (builtin_define_stdint_macros): Define more macros.
21224         (c_cpp_builtins): Define more limit macros.
21225         (type_suffix): New.
21226         (builtin_define_type_max): Define in terms of
21227         builtin_define_type_minmax.  Remove is_long parameter.  All
21228         callers changed.
21229         * config.gcc (use_gcc_stdint): Define.
21230         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21231         Add newlib-stdint.h for generic targets.
21232         * config/glibc-stdint.h, config/newlib-stdint.h,
21233         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21234         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21235         * config/score/score.h (UINTPTR_TYPE): Define.
21236         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21237         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21238         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21239         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21240         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21241         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21242         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21243         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21244         * config/spu/spu.h (STDINT_LONG32): Define.
21245         * configure.ac (use_gcc_stdint): Substitute.
21246         * configure: Regenerate.
21247         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21248         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
21249         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
21250         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
21251         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
21252         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
21253         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
21254         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
21255         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
21256         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
21257         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
21258         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
21259         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
21260         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
21261         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
21262         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
21263         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
21264         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
21265         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
21266         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
21267         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
21268         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
21269         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21270         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21271         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21272         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21273         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21274         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21275         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
21276
21277 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
21278
21279         * loop-iv.c (suitable_set_for_replacement): Renamed from
21280         simplify_using_assignment; changed to return bool and to accept new
21281         args DEST and SRC.  Return true iff we find a source/destination pair
21282         that can be used to make a replacement, and fill SRC and DEST if so.
21283         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
21284         changed.
21285         (simplify_using_initial_values): Deal with altered regs here and track
21286         more precisely the effect they have on the validity of our expression.
21287
21288         * loop-iv.c (simplify_using_condition): A condition of the form
21289         (EQ REG CONST) can be used to simply make a substitution.
21290         (simplify_using_initial_values): Keep track of conditions we have seen
21291         and keep using them to simplify new expressions, while applying the
21292         same substitutions to them as to the expression.
21293
21294         * simplify-rtx.c (simplify_relational_operation_1): Simplify
21295         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
21296         GEU/LTU reversed.
21297
21298         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
21299         changed.  Use this when trying to improve the upper bound.
21300         Generate the comparison by using simplify_gen_relational.
21301
21302         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
21303
21304         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
21305         functions.
21306         (simplify_using_assignment, simplify_using_initial_values): Call
21307         replace_in_expr to make replacements.  Call replace_single_def_regs
21308         once on the initial version of the expression.
21309
21310 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21311
21312         PR target/27237
21313         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
21314
21315 2009-03-31  Richard Guenther  <rguenther@suse.de>
21316
21317         PR middle-end/31029
21318         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
21319         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
21320
21321 2009-03-31  Richard Guenther  <rguenther@suse.de>
21322
21323         * tree.h (div_if_zero_remainder): Declare.
21324         * fold-const.c (div_if_zero_remainder): Export.
21325         * tree-ssa-forwprop.c
21326         (forward_propagate_addr_into_variable_array_index): Handle
21327         constant array index addition outside of the variable index.
21328
21329 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21330
21331         PR target/39592
21332         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
21333         define_splits, floatunssi<mode>2): Require x87 conversions from
21334         DImode to be permitted.
21335
21336 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21337
21338         PR preprocessor/15638
21339         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
21340
21341 2009-03-31  Richard Guenther  <rguenther@suse.de>
21342
21343         PR middle-end/23401
21344         PR middle-end/27810
21345         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
21346         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
21347         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
21348         a separate statement.
21349         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
21350         (lookup_tmp_var): Likewise.
21351         (is_gimple_formal_tmp_or_call_rhs): Remove.
21352         (is_gimple_reg_or_call_rhs): Rename to ...
21353         (is_gimple_reg_rhs_or_call): ... this.
21354         (is_gimple_mem_or_call_rhs): Rename to ...
21355         (is_gimple_mem_rhs_or_call): ... this.
21356         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
21357         DECL_GIMPLE_REG_P only if is_formal is true.
21358         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
21359         for non-proper post-modify expression gimplification.
21360         (gimplify_self_mod_expr): For post-modify expressions gimplify
21361         the lvalue to a minimal lvalue.
21362         (rhs_predicate_for): Remove formal temp case.
21363         (gimplify_modify_expr_rhs): Likewise.
21364         (gimplify_addr_expr): Use is_gimple_reg.
21365         (gimplify_expr): Remove formal temp cases.
21366         (gimple_regimplify_operands): Likewise.
21367         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
21368         and FILTER_EXPR like constants.
21369         * gimple.c (walk_gimple_op): Fix val_only initialization, use
21370         is_gimple_reg.
21371         (is_gimple_formal_tmp_rhs): Remove.
21372         (is_gimple_reg_rhs): Remove special casing.
21373         (is_gimple_mem_rhs): Fix.
21374         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
21375         (is_gimple_formal_tmp_var): Remove.
21376         (is_gimple_formal_tmp_reg): Likewise.
21377         (is_gimple_min_lval): Allow invariant component ref parts.
21378         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
21379         is_gimple_formal_tmp_reg): Remove declarations.
21380         * tree-cfg.c (verify_expr): Verify that variables with address
21381         taken do not have DECL_GIMPLE_REG_P set.
21382         * tree-mudflap.c (mf_build_check_statement_for): Use
21383         force_gimple_operand instead of gimplify_expr.
21384
21385 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
21386
21387         * modulo-sched.c (sms_schedule_by_order): Pass the actual
21388         schedulable rows to compute_split_row.
21389
21390 2009-03-31  Ben Elliston  <bje@au.ibm.com>
21391
21392         PR target/31635
21393         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
21394         OPT_mvrsave.
21395
21396 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21397
21398         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
21399         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
21400         * configure: Regenerate.
21401         * config.in: Regenerate.
21402         * config/rs6000/rs6000.opt (mtls-markers): Add.
21403         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
21404         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
21405         (tls_ld_aix, tls_ld_sysv): Likewise.
21406         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
21407         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
21408
21409 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21410
21411         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
21412
21413 2009-03-30  Jan Hubicka  <jh@suse.cz>
21414
21415         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
21416         out of RESX.
21417         (tree_remove_unreachable_handlers): Cleanup EH predecestor
21418         detection and label handling.
21419
21420 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21421
21422         * ira-int.h (ira_allocno): Rename left_conflicts_num to
21423         left_conflicts_size.
21424         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
21425         ALLOCNO_LEFT_CONFLICTS_SIZE.
21426
21427         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
21428         remove_allocno_from_bucket_and_push,
21429         allocno_spill_priority_compare, push_allocnos_to_stack,
21430         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21431         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
21432         (setup_allocno_left_conflicts_num): Ditto.  Rename to
21433         setup_allocno_left_conflicts_size.
21434         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21435         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
21436         setup_allocno_left_conflicts_size instead of
21437         setup_allocno_left_conflicts_num.
21438
21439         * ira-build.c (ira_create_allocno): Use
21440         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
21441         ALLOCNO_LEFT_CONFLICTS_NUM.
21442
21443 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21444
21445         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21446         instead of DF_LR_OUT.
21447
21448         * ira-lives.c (process_bb_node_lives): Ditto.
21449
21450         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21451         instead of DF_LR_{OUT,IN}.
21452
21453         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21454
21455         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21456
21457 2009-03-30  Jan Hubicka  <jh@suse.cz>
21458
21459         * except.c (label_to_region_map): Fix thinko.
21460
21461 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
21462
21463         PR middle-end/38237
21464         * tree.h (tree_find_value): New declaration.
21465         * tree.c (tree_find_value): New function.
21466         * varasm.c (assemble_external): Avoid duplicate entries on lists.
21467
21468 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
21469
21470         PR debug/39563
21471         * c-decl.c (struct c_binding): Add locus field.
21472         (bind): Add locus argument, set locus field from it.
21473         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
21474         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
21475         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
21476         implicitly_declare, undeclared_variable, lookup_label,
21477         declare_label, c_make_fname_decl, c_builtin_function,
21478         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
21479         bind callers.
21480
21481 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21482
21483         PR target/38781
21484         * config/i386/i386.c (classify_argument): Check total size of
21485         structure.
21486
21487 2009-03-30  Martin Jambor  <mjambor@suse.cz>
21488
21489         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
21490         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
21491         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
21492         respectively.
21493
21494         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
21495         seen_variable_array_ref while also traversing a union.
21496
21497         * tree-inline.c (optimize_inline_calls): Do not call
21498         cgraph_node_remove_callees.
21499         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
21500         (pass_remove_cgraph_callee_edges): New variable.
21501         * passes.c (init_optimization_passes): Add
21502         pass_remove_cgraph_callee_edges after early inlining and before all
21503         late intraprocedural passes.
21504
21505         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
21506
21507 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21508
21509         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
21510         Fix typos in names.
21511
21512 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21513
21514         * combine.c (simplify_comparison): Use have_insn_for.
21515         * dojump.c (do_jump): Likewise.
21516
21517 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21518
21519         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
21520         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
21521         sparc_compare_op0 like sparc_compare_emitted used to be handled.
21522         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
21523         instead of sparc_compare_emitted.
21524         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
21525         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
21526         instead of sparc_compare_emitted.
21527
21528 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21529
21530         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
21531         enter/exit cfglayout mode.
21532         (pass_partition_block): Require it.
21533         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
21534         (combine_instructions): Track basic blocks instead of labels.
21535         (update_cfg_for_uncondjump): New.
21536         (try_combine): Use it.  Update jumps after rescanning.
21537         (pass_combine): Require PROP_cfglayout.
21538         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
21539
21540 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21541
21542         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
21543         Provide/destroy PROP_cfglayout respectively.
21544         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
21545         * tree-pass.h (PROP_cfglayout): New.
21546
21547 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21548
21549         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
21550         fold_convert_const_fixed_from_fixed,
21551         fold_convert_const_fixed_from_int,
21552         fold_convert_const_fixed_from_real, fold_negate_const): Do not
21553         set TREE_CONSTANT_OVERFLOW.
21554         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
21555         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
21556
21557 2009-03-30  Ira Rosen  <irar@il.ibm.com>
21558
21559         * tree-vect-loop-manip.c: New file.
21560         * tree-vectorizer.c: Update documentation and included files.
21561         (vect_loop_location): Make extern.
21562         (rename_use_op): Move to tree-vect-loop-manip.c
21563         (rename_variables_in_bb, rename_variables_in_loop,
21564         slpeel_update_phis_for_duplicate_loop,
21565         slpeel_update_phi_nodes_for_guard1,
21566         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
21567         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
21568         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
21569         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
21570         find_loop_location): Likewise.
21571         (new_stmt_vec_info): Move to tree-vect-stmts.c.
21572         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
21573         get_vectype_for_scalar_type, vect_is_simple_use,
21574         supportable_widening_operation, supportable_narrowing_operation):
21575         Likewise.
21576         (bb_in_loop_p): Move to tree-vect-loop.c.
21577         (new_loop_vec_info, destroy_loop_vec_info,
21578         reduction_code_for_scalar_code, report_vect_op,
21579         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
21580         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
21581         (vect_supportable_dr_alignment): Likewise.
21582         * tree-vectorizer.h (tree-data-ref.h): Include.
21583         (vect_loop_location): Declare.
21584         Reorganize function declarations according to the new file structure.
21585         * tree-vect-loop.c: New file.
21586         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
21587         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
21588         * tree-vect-data-refs.c: New file.
21589         * tree-vect-patterns.c (timevar.h): Don't include.
21590         * tree-vect-stmts.c: New file.
21591         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
21592         tree-vect-slp.c, tree-vect-loop.c.
21593         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
21594         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
21595         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
21596         (tree-vect-analyze.o): Remove.
21597         (tree-vect-transform.o): Likewise.
21598         (tree-vect-data-refs.o): Add rule.
21599         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
21600         tree-vect-slp.o): Likewise.
21601         (tree-vect-patterns.o): Remove redundant dependencies.
21602         (tree-vectorizer.o): Likewise.
21603         * tree-vect-slp.c: New file.
21604
21605 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21606
21607         * optc-gen.awk: Warn if an option flag has multiple different
21608         help strings.
21609
21610 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
21611
21612         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
21613         -floop-block): Document dependences on PPL, CLooG and Graphite.
21614
21615 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21616
21617         PR rtl-optimization/323
21618         * c-common.c (c_fully_fold, convert_and_check,
21619         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
21620         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
21621         * c-common.def (EXCESS_PRECISION_EXPR): New.
21622         * c-cppbuiltin.c (builtin_define_float_constants): Define
21623         constants with enough digits for long double.
21624         * c-lex.c (interpret_float): Interpret constant with excess
21625         precision where appropriate.
21626         * c-opts.c (c_common_post_options): Set
21627         flag_excess_precision_cmdline.  Give an error for
21628         -fexcess-precision=standard for C++ for processors where the
21629         option is significant.
21630         * c-parser.c (c_parser_conditional_expression): Handle excess
21631         precision in condition.
21632         * c-typeck.c (convert_arguments): Handle arguments with excess
21633         precision.
21634         (build_unary_op): Move excess precision outside operation.
21635         (build_conditional_expr): Likewise.
21636         (build_compound_expr): Likewise.
21637         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
21638         (build_modify_expr): Handle excess precision in RHS.
21639         (convert_for_assignment): Handle excess precision in converted
21640         value.
21641         (digest_init, output_init_element, process_init_element): Handle
21642         excess precision in initializer.
21643         (c_finish_return): Handle excess precision in return value.
21644         (build_binary_op): Handle excess precision in operands and add
21645         excess precision as needed for operation.
21646         * common.opt (-fexcess-precision=): New option.
21647         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
21648         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
21649         For standard excess precision, output explicit conversion to and
21650         truncation from XFmode.
21651         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
21652         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
21653         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
21654         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
21655         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
21656         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
21657         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
21658         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
21659         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
21660         define_splits, sqrt<mode>2): Disable where appropriate for
21661         standard excess precision.
21662         * convert.c (convert_to_real): Do not shorten arithmetic to type
21663         for which excess precision would be used.
21664         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
21665         * doc/invoke.texi (-fexcess-precision=): Document option.
21666         (-mfpmath=): Correct index entry.
21667         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
21668         flag_excess_precision): New.
21669         * langhooks.c (lhd_post_options): Set
21670         flag_excess_precision_cmdline.
21671         * opts.c (common_handle_option): Handle -fexcess-precision=.
21672         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
21673         init_excess_precision): New.
21674         (lang_dependent_init_target): Call init_excess_precision.
21675         * tree.c (excess_precision_type): New.
21676         * tree.h (excess_precision_type): Declare.
21677
21678 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21679
21680         PR c/35235
21681         * c-typeck.c (build_component_ref): Do not copy qualifiers from
21682         non-lvalue to component.
21683
21684 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21685
21686         PR preprocessor/34695
21687         * Makefile.in (c-opts.o): Depend on c-tree.h.
21688         * c-common.c: Move down include of diagnostic.h.
21689         (done_lexing, c_cpp_error): New.
21690         * c-common.h (done_lexing): Declare.
21691         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
21692         (parse_in).
21693         * c-opts.c: Include c-tree.h.
21694         (c_common_init_options): Set preprocessor error callback.
21695         (c_common_handle_option): Do not set preprocessor
21696         inhibit_warnings, warnings_are_errors, warn_system_headers,
21697         pedantic_errors or inhibit_warnings flags.
21698         (c_common_post_options): Do not check cpp_errors (parse_in).
21699         (c_common_finish): Do not output dependencies if there were
21700         errors.  Do not check return value of cpp_finish.
21701         * c-ppoutput.c (pp_file_change): Set input_location.
21702         * c-tree.h (c_cpp_error): Declare.
21703         * diagnostic.c (diagnostic_set_info_translated): Also initialize
21704         override_column.
21705         (diagnostic_build_prefix): Check override_column.
21706         * diagnostic.h (diagnostic_info): Add override_column field.
21707         (diagnostic_override_column): Define.
21708
21709 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
21710
21711         * c-common.c (c_expand_expr, c_staticp): Remove.
21712         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
21713         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
21714         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
21715         * c-gimplify.c (gimplify_compound_literal_expr,
21716         optimize_compound_literals_in_ctor): Remove.
21717         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
21718         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
21719         * c-semantics.c (emit_local_var): Remove.
21720
21721         * langhooks-def.h (lhd_expand_expr): Remove.
21722         * langhooks.c (lhd_expand_expr): Remove.
21723         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
21724
21725         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
21726         handling from c-semantics.c; don't call into langhook.
21727         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
21728         * gimplify.c (gimplify_compound_literal_expr,
21729         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
21730         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
21731         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
21732         as was done in c-gimplify.c.
21733         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
21734         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
21735         Move from c-common.h.
21736         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
21737
21738         * tree.c (staticp): Do not call langhook.
21739         * langhooks.c (lhd_staticp): Delete.
21740         * langhooks-def.h (lhd_staticp): Delete prototype.
21741         (LANG_HOOKS_STATICP): Delete.
21742         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
21743
21744         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
21745         instead of DECL_STMTs.
21746
21747 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21748
21749         PR c/456
21750         PR c/5675
21751         PR c/19976
21752         PR c/29116
21753         PR c/31871
21754         PR c/35198
21755         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
21756         void_type_node.
21757         (fold_call_expr): Return a NOP_EXPR from folding rather than the
21758         contained expression.
21759         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
21760         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
21761         conditional expressions for C.
21762         (decl_constant_value_for_optimization): Move from
21763         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
21764         whether optimizing and that the expression is a VAR_DECL not of
21765         array type instead of doing such checks in the caller.  Do not
21766         check pedantic.  Call gcc_unreachable for C++.
21767         * c-common.def (C_MAYBE_CONST_EXPR): New.
21768         * c-common.h (c_fully_fold, c_save_expr,
21769         decl_constant_value_for_optimization): New prototypes.
21770         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
21771         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
21772         EXPR_INT_CONST_OPERANDS): Define.
21773         * c-convert.c (convert): Strip nops from expression.
21774         * c-decl.c (groktypename): Take extra parameters expr and
21775         expr_const_operands.  Update call to grokdeclarator.
21776         (start_decl): Update call to grokdeclarator.  Add statement for
21777         expressions used in type of decl.
21778         (grokparm): Update call to grokdeclarator.
21779         (push_parm_decl): Update call to grokdeclarator.
21780         (build_compound_literal): Add parameter non_const and build a
21781         C_MAYBE_COSNT_EXPR if applicable.
21782         (grokdeclarator): Take extra parameters expr and
21783         expr_const_operands.  Track expressions used in declaration
21784         specifiers and declarators.  Fold array sizes and track whether
21785         they are constant expressions and whether they are integer
21786         constant expressions.
21787         (parser_xref_tag): Set expr and expr_const_operands fields in
21788         return value.
21789         (grokfield): Update call to grokdeclarator.
21790         (start_function): Update call to grokdeclarator.
21791         (build_null_declspecs): Set expr and expr_const_operands fields in
21792         return value.
21793         (declspecs_add_type): Handle expressions in typeof specifiers.
21794         * c-parser.c (c_parser_declspecs): Set expr and
21795         expr_const_operands fields for declaration specifiers.
21796         (c_parser_enum_specifier): Likewise.
21797         (c_parser_struct_or_union_specifier): Likewise.
21798         (c_parser_typeof_specifier): Likewise.  Update call to
21799         groktypename.  Fold expression as needed.  Return expressions with
21800         type instead of adding statements.
21801         (c_parser_attributes): Update calls to c_parser_expr_list.
21802         (c_parser_statement_after_labels): Fold expression before passing
21803         to objc_build_throw_stmt.
21804         (c_parser_condition): Fold expression.
21805         (c_parser_asm_operands): Fold expression.
21806         (c_parser_conditional_expression): Use c_save_expr.  Update call
21807         to build_conditional_expr.
21808         (c_parser_alignof_expression): Update call to groktypename.
21809         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
21810         original_code.  Fold expression argument of va_arg.  Create
21811         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
21812         argument to va_arg.  Update calls to groktypename.  Fold array
21813         index for offsetof.  Verify that first argument to
21814         __builtin_choose_expr has integer type.
21815         (c_parser_postfix_expression_after_paren_type): Update calls to
21816         groktypename and build_compound_literal.  Handle expressions with
21817         side effects in type name.
21818         (c_parser_postfix_expression_after_primary): Update call to
21819         c_parser_expr_list.  Set original_code for calls to
21820         __builtin_constant_p.
21821         (c_parser_expr_list): Take extra parameter fold_p.  Fold
21822         expressions if requested.
21823         (c_parser_objc_type_name): Update call to groktypename.
21824         (c_parser_objc_synchronized_statement): Fold expression.
21825         (c_parser_objc_receiver): Fold expression.
21826         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
21827         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
21828         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
21829         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
21830         (struct c_typespec): Add elements expr and expr_const_operands.
21831         (struct c_declspecs): Add elements expr and expr_const_operands.
21832         (groktypename, build_conditional_expr, build_compound_literal):
21833         Update prototypes.
21834         (in_late_binary_op): Declare.
21835         * c-typeck.c (note_integer_operands): New function.
21836         (in_late_binary_op): New variable.
21837         (decl_constant_value_for_broken_optimization): Move to c-common.c
21838         and rename to decl_constant_value_for_optimization.
21839         (default_function_array_conversion): Do not strip nops.
21840         (default_conversion): Do not call
21841         decl_constant_value_for_broken_optimization.
21842         (build_array_ref): Do not fold result.
21843         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
21844         result when operand is a VLA.
21845         (c_expr_sizeof_type): Update call to groktypename.  Handle
21846         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
21847         result when operand names a VLA type.
21848         (build_function_call): Update call to build_compound_literal.
21849         Only fold result for calls to __builtin_* functions.  Strip
21850         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
21851         the function designator.
21852         (convert_arguments): Fold arguments.  Update call to
21853         convert_for_assignment.
21854         (build_unary_op): Handle increment and decrement of
21855         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
21856         decrement earlier.  Fold operand of increment and decrement.
21857         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
21858         built for integer operand.  Wrap returns that are INTEGER_CSTs
21859         without being integer constant expressions or that have integer
21860         constant operands without being INTEGER_CSTs.
21861         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
21862         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
21863         result is an integer constant expression or can be used in
21864         unevaluated parts of one and avoid folding and wrap as
21865         appropriate.  Fold operands before possibly doing -Wsign-compare
21866         warnings.
21867         (build_compound_expr): Wrap result for C99 if operands can be used
21868         in integer constant expressions.
21869         (build_c_cast): Update call to digest_init.  Do not ignore
21870         overflow from casting floating-point constants to integers.  Wrap
21871         results that could be confused with integer constant expressions,
21872         null pointer constants or floating-point constants.
21873         (c_cast_expr): Update call to groktypename.  Handle expressions
21874         included in type name.
21875         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
21876         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
21877         Update calls to convert_for_assignment.
21878         (convert_for_assignment): Take new parameter
21879         null_pointer_constant.  Do not strip nops or call
21880         decl_constant_value_for_broken_optimization.  Set
21881         in_late_binary_op for conversions to boolean.
21882         (store_init_value): Update call to digest_init.
21883         (digest_init): Take new parameter null_pointer_constant.  Do not
21884         call decl_constant_value_for_broken_optimization.  pedwarn for
21885         initializers not constant expressions.  Update calls to
21886         convert_for_assignment.
21887         (constructor_nonconst): New.
21888         (struct constructor_stack): Add nonconst element.
21889         (really_start_incremental_init, push_init_level, pop_init_level):
21890         Handle constructor_nonconst and nonconst element.
21891         (set_init_index): Call constant_expression_warning for array
21892         designators.
21893         (output_init_element): Fold value.  Set constructor_nonconst as
21894         applicable.  pedwarn for initializers not constant expressions.
21895         Update call to digest_init.  Call constant_expression_warning
21896         where constant initializers are required.
21897         (process_init_element): Use c_save_expr.
21898         (c_finish_goto_ptr): Fold expression.
21899         (c_finish_return): Fold return value.  Update call to
21900         convert_for_assignment.
21901         (c_start_case): Fold switch expression.
21902         (c_process_expr_stmt): Fold expression.
21903         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
21904         ensure statement expression is not evaluated in constant expression.
21905         (build_binary_op): Track whether results are integer constant
21906         expressions or may occur in such, disable folding and wrap results
21907         as applicable.  Fold operands for -Wsign-compare warnings unless
21908         in_late_binary_op.
21909         (c_objc_common_truthvalue_conversion): Handle results folded to
21910         integer constants that are not integer constant expressions.
21911         * doc/extend.texi: Document when typeof operands are evaluated,
21912         that condition of __builtin_choose_expr is an integer constant
21913         expression, and more about use of __builtin_constant_p in
21914         initializers.
21915
21916 2009-03-29  Richard Guenther  <rguenther@suse.de>
21917
21918         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
21919         propagate addresses of array references.
21920
21921 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
21922
21923         * regmove.c (perhaps_ends_bb_p): Remove.
21924         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
21925         from INSN and check that the main loop stays within that basic block.
21926         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
21927         (regmove_forward_pass): Split out from regmove_optimize.  Use
21928         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
21929         (regmove_backward_pass): Split out from regmove_optimize.  Use
21930         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
21931         (regmove_optimize): Simplify.
21932
21933 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
21934
21935         PR target/39545
21936         * config/i386/i386.c (classify_argument): Ignore flexible array
21937         member in struct and warn ABI change.
21938
21939 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
21940
21941         * config/i386/i386-protos.h (ix86_agi_dependent): New.
21942
21943         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
21944         (ix86_adjust_cost): Updated.
21945
21946 2009-03-29  Jan Hubicka  <jh@suse.cz>
21947
21948         PR middle-end/28850
21949         * tree-pass.h (pass_cleanup_eh): New function.
21950         (remove_unreachable_regions): Break code handling RTL
21951         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
21952         that can not be reached by runtime.
21953         (can_be_reached_by_runtime): New function.
21954         (label_to_region_map): New function.
21955         (num_eh_regions): New function.
21956         (rtl_remove_unreachable_regions): New function.
21957         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
21958         (remove_eh_region): New function.
21959         * except.h: Include sbitmap and vecprim.
21960         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
21961         num_eh_regions): Declare.
21962         * passes.c (init_optimization_passes): Schedule cleanup_eh.
21963         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
21964         * tree-eh.c (tree_remove_unreachable_handlers): New function.
21965         (tree_empty_eh_handler_p): New function.
21966         (cleanup_empty_eh): New function.
21967         (cleanup_eh): New function.
21968         (pass_cleanup_eh): New function.
21969
21970 2009-03-29  Jan Hubicka  <jh@suse.cz>
21971
21972         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
21973         for removed regions.
21974
21975 2009-03-29  Jan Hubicka  <jh@suse.cz>
21976
21977         * except.c (dump_eh_tree): Dump all datastructures.
21978
21979 2009-03-29  Jan Hubicka  <jh@suse.cz>
21980
21981         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
21982         (duplicate_eh_regions_1): Likewise.
21983         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
21984         vector; call EH verification.
21985         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
21986         Be ready for region being removed.
21987
21988 2009-03-29  Jan Hubicka  <jh@suse.cz>
21989
21990         * bitmap.c (bitmap_last_set_bit): New function.
21991         * bitmap.h (bitmap_last_set_bit): Declare.
21992
21993 2009-03-29  David Ayers  <ayers@fsfe.org>
21994
21995         PR objc/27377
21996         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
21997         by calling objc_compare_types and surpress warnings about
21998         incompatible C pointers that are compatible ObjC pointers.
21999
22000 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
22001
22002         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22003         call initialize_inline_failed.
22004         (initialize_inline_failed): Move it from here ...
22005         * cgraph.c (initialize_inline_failed): ... to here.
22006         (cgraph_create_edge): Call initialize_inline_failed rather than
22007         setting inline_failed directly.
22008
22009 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22010
22011         PR target/32542
22012         * sysv4.opt (msdata): Improve comment.
22013         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22014         * sysv4.h (SVR4_ASM_SPEC): Likewise.
22015
22016 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22017
22018         PR target/30451
22019         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22020         load and store attributes.
22021
22022 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22023
22024         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22025         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
22026         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
22027         * doc/extend.texi (X86 Built-in Functions): Add index entries for
22028         __builtin_infq and __builtin_huge_valq.
22029
22030 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
22031
22032         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
22033         atmega8m1 devices.
22034         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22035         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
22036
22037 2009-03-28  Xinliang David Li  <davidxl@google.com>
22038
22039         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
22040         (do_dbg_cnt): New function.
22041
22042 2009-03-28  Jan Hubicka  <jh@suse.cz>
22043
22044         Merge from pretty-ipa:
22045
22046         2009-03-27  Jan Hubicka  <jh@suse.cz>
22047
22048         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22049         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
22050         * passes.c (function_called_by_processed_nodes_p): New.
22051         * ipa-pure-const.c (check_call): Fix handling of operands.
22052         (analyze_function): Dump debug output for skipped bodies.
22053         (local_pure_const): Use function_called_by_processed_nodes_p.
22054         * dwarf2out.c (reference_to_unused): Use output.
22055         * passes.c (do_per_function_toporder): Likewise.
22056
22057         2008-11-12  Jan Hubicka  <jh@suse.cz>
22058
22059         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
22060         * ipa-pure-const.c (funct_state_d): Add can throw field; make
22061         state_set_in_source enum
22062         (check_decl): Ignore memory tags; do not set fake looping flags;
22063         dump diagnostics.
22064         (check_operand, check_tree, check_rhs_var, check_lhs_var,
22065         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
22066         (check_call, analyze_function): Rewrite.
22067         (check_stmt): New.
22068         (add_new_function): Update call of analyze_function.
22069         (generate_summary): Add call of analyze_function.
22070         (propagate): Propagate can_throw; handle state_set_in_source correctly.
22071         (local_pure_const): New function.
22072         (pass_local_pure_const): New pass.
22073         * ipa-inline.c (inline_transform): Set after_inlining.
22074         * tree-eh.c (stmt_can_throw_external): New.
22075         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
22076         work with aliasing built.
22077         * tree-flow.h (stmt_can_throw_external): New.
22078         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
22079         and local pure/const pass in early and late optimization queue.
22080
22081 2009-03-28  Martin Jambor  <mjambor@suse.cz>
22082
22083         * fold-const.c (get_pointer_modulus_and_residue): New parameter
22084         allow_func_align.
22085         (fold_binary): Allow function decl aligment consideration is the
22086         second argument is integer constant one.
22087         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22088         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22089         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22090
22091 2009-03-28  Jan Hubicka  <jh@suse.cz>
22092
22093         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22094         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22095         * function.h (rtl_data): Add nothrow flag.
22096         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22097         set DECL_NOTHROW for AVAILABLE functions.
22098
22099 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
22100
22101         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22102         following vector keyword has expansion starting with pixel or bool
22103         keyword, expand vector to __vector and pixel or bool to __pixel or
22104         __bool.
22105
22106         PR c++/39554
22107         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22108         warn_if_disallowed_function_p): Removed.
22109         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22110         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22111         warning_if_disallowed_function_p.
22112         * flags.h (warn_if_disallowed_function_p,
22113         warn_disallowed_functions): Removed.
22114         * common.opt (Wdisallowed-function-list=): Removed.
22115         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22116
22117 2009-03-28  Richard Guenther  <rguenther@suse.de>
22118
22119         PR tree-optimization/38723
22120         * tree-ssa-pre.c (compute_avail): Add all default definitions to
22121         the entry block.
22122
22123 2009-03-28  Jan Hubicka  <jh@suse.cz>
22124
22125         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22126         test introduced by my previous patch.
22127
22128 2009-03-28  Richard Guenther  <rguenther@suse.de>
22129
22130         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22131         the PHIs value undefined.
22132
22133 2009-03-28  Jan Hubicka  <jh@suse.cz>
22134
22135         * tree-pass.h (pass_fixup_cfg): New pass.
22136         * ipa-inline.c (inline_transform): Set
22137         always_inline_functions_inlined/after_inlining.
22138         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22139         (pass_fixup_cfg): New pass.
22140         * passes.c (init_optimization_passes): Add fixup_cfg.
22141
22142 2009-03-28  Richard Guenther  <rguenther@suse.de>
22143
22144         PR tree-optimization/38458
22145         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22146         argument use the arguments copy-of value.
22147
22148 2009-03-28  Richard Guenther  <rguenther@suse.de>
22149
22150         PR tree-optimization/38180
22151         * tree-ssa-ccp.c (get_default_value): Simplify.
22152         (likely_value): Likewise.
22153         (surely_varying_stmt_p): Properly handle VOP case.
22154         (ccp_initialize): Likewise.
22155         (ccp_fold): Handle propagating through *&.
22156         (fold_const_aggregate_ref): Also handle decls.
22157
22158 2009-03-28  Jan Hubicka  <jh@suse.cz>
22159
22160         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22161         * cgraph.h (cgraph_node): Likewise.
22162         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22163         (cgraph_reset_node): Use process flag.
22164         (cgraph_mark_functions_to_output): Likewise.
22165         (cgraph_expand_function): Likewise.
22166         (cgraph_expand_all_functions): Likewise.
22167         (cgraph_output_in_order): Likewise.
22168         * dwarf2out.c (reference_to_unused): Likewise.
22169         * passes.c do_per_function_toporder): Likewise.
22170
22171 2009-03-28  Jan Hubicka  <jh@suse.cz>
22172
22173         Bring from lto-branch:
22174
22175         2008-09-03  Doug Kwan  <dougkwan@google.com>
22176
22177         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22178         enums instead of reason strings.
22179         * cgraph.c (cgraph_create_edge): Same.
22180         (cgraph_inline_failed_string): New function.
22181         * cgraph.h (cgraph_inline_failed_t): New enum type.
22182         (cgraph_inline_failed_string): New prototype.
22183         (struct cgraph_edge): Change type of INLINED_FAILED from constant
22184         char pointer to cgraph_inline_failed_t.
22185         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22186         (cgraph_default_inline_p): Ditto.
22187         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22188         to cgraph_inline_failed_t pointer.
22189         * cif-code.def: New file.
22190         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22191         reason string.
22192         (cgraph_check_inline_limits): Change type of REASON to pointer to
22193         cgraph_inline_failed_t.  Replace reason strings with enums.
22194         (cgraph_default_inline_p): Ditto.
22195         (cgraph_recursive_inlining_p): Ditto.
22196         (update_caller_keys): Change type of FAILED_REASON to
22197         cgraph_inline_failed_t.
22198         (cgraph_set_inline_failed): Change type of REASON to pointer to
22199         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
22200         convert enums to strings for text output.
22201         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22202         to be of type cgraph_inline_failed_t.  Replace reason strings with
22203         enums.  Call cgraph_inline_failed_string to covert enums
22204         to strings for text output.
22205         (cgraph_decide_inlining): Replace reason strings with enums.
22206         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22207         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
22208         for text output.
22209         * tree-inline.c (expand_call_inline): Change type of REASON
22210         to cgraph_inline_failed_t.  Replace reason strings with enums.
22211         Call cgraph_inline_failed_string for text output.
22212         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22213         (cgraph.o): Ditto.
22214
22215 2009-03-28  Jan Hubicka  <jh@suse.cz>
22216
22217         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22218         cgraph_clone_node): Remove master clone handling.
22219         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22220         * cgraph.h (master_clone): Remove.
22221         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22222         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22223         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22224
22225 2009-03-28  Jan Hubicka  <jh@suse.cz>
22226
22227         * cgraph.c (cgraph_function_body_availability): Functions declared
22228         inline are always safe to assume that it is not going to be replaced.
22229
22230 2009-03-28  Richard Guenther  <rguenther@suse.de>
22231
22232         PR tree-optimization/38513
22233         * tree-ssa-pre.c (eliminate): Remove redundant stores.
22234         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22235         EXC_PTR_EXPR and FILTER_EXPR.
22236         (get_ref_from_reference_ops): Likewise.
22237
22238 2009-03-28  Richard Guenther  <rguenther@suse.de>
22239
22240         PR tree-optimization/38968
22241         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22242         Use FLOOR_MOD_EXPR to compute misalignment.
22243
22244 2009-03-28  Richard Guenther  <rguenther@suse.de>
22245
22246         PR tree-optimization/37795
22247         * tree.h (combine_comparisons): Declare.
22248         * fold-const.c (combine_comparisons): Export.
22249         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
22250         comparisons.
22251         (ifcombine_iforif): Use combine_comparisons.
22252
22253 2009-03-28  Jan Hubicka  <jh@suse.cz>
22254
22255         * tree-eh.c (inlinable_call_p): New function.
22256         (make_eh_edges): Use it.
22257         (verify_eh_edges): Use it.
22258         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
22259         * except.c (reachable_next_level): Add inlinable_function argument
22260         (sjlj_find_directly_reachable_regions): Update.
22261         (add_reachable_handler): Do not set saw_any_handlers.
22262         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
22263         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22264         Add new inlinable call parameter.
22265         (can_throw_internal, can_throw_external): Update.
22266         * except.h (can_throw_internal_1, can_throw_external_1,
22267         foreach_reachable_handler): Update declaration.
22268
22269 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
22270
22271         * config/arm/t-arm-coff, config/h8300/coff.h,
22272         config/i386/i386-aout.h, config/i386/i386-coff.h,
22273         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
22274         config/pdp11/2bsd.h, config/rs6000/aix41.h,
22275         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
22276         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
22277         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
22278         sys-types.h: Remove.
22279         * Makefile.in: Remove protoize and fixproto support and references
22280         in comments.
22281         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
22282         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
22283         Remove.
22284         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
22285         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
22286         unprotoize$(exeext).
22287         (rest.encap): Don't depend on $(STMP_FIXPROTO)
22288         (.PHONY): Don't depend on proto.
22289         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
22290         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
22291         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
22292         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
22293         build/gen-protos.o, build/scan.o, xsys-protos.h,
22294         build/fix-header$(build_exeext), build/fix-header.o,
22295         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
22296         stmp-install-fixproto): Remove.
22297         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
22298         SYSCALLS.c or fixproto files.
22299         (install-common): Don't install protoize.
22300         (install-headers-tar, install-headers-cpio, install-headers-cp):
22301         Don't depend on $(STMP_FIXPROTO).
22302         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
22303         install fixproto files or write out fixproto settings.
22304         (uninstall): Don't uninstall protoize.
22305         * config.gcc (use_fixproto): Remove.
22306         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
22307         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
22308         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
22309         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
22310         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
22311         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
22312         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
22313         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
22314         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
22315         * config/t-vxworks (STMP_FIXPROTO): Remove.
22316         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
22317         STMP_FIXPROTO): Remove.
22318         * config.in, configure: Regenerate.
22319         * crtstuff.c (gid_t, uid_t): Don't undefine.
22320         * doc/install.texi: Change m68k-coff to m68k-elf in example.
22321         (arm-*-coff, arm-*-aout: Remove target entries.
22322         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
22323         Remove mention of AIX 4.1.
22324         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
22325         * doc/invoke.texi (Running Protoize): Remove.
22326         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
22327         (Protoize Caveats): Remove.
22328         * tsystem.h: Update comments on headers assumed to exist.
22329
22330 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
22331
22332         * genautomata.c: Add a new year to the copyright.  Add a new
22333         reference.
22334         (struct insn_reserv_decl): Add comments for member bypass_list.
22335         (find_bypass): Remove.
22336         (insert_bypass): New.
22337         (process_decls): Use insert_bypass.
22338         (output_internal_insn_latency_func): Output all bypasses with the
22339         same input insn in one switch case.
22340
22341         * rtl.def (define_bypass): Describe bypass choice.
22342         * doc/md.texi (define_bypass): Ditto.
22343
22344 2009-03-27  Richard Guenther  <rguenther@suse.de>
22345
22346         * gimplify.c (mark_addressable): Export.
22347         * tree-flow.h (mark_addressable): Declare.
22348         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
22349         * tree-ssa.c (verify_phi_args): Verify that address taken
22350         variables have TREE_ADDRESSABLE set.
22351
22352 2009-03-27  Richard Guenther  <rguenther@suse.de>
22353
22354         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
22355         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
22356         Do not mark decls TREE_ADDRESSABLE.
22357         (build_fold_addr_expr): Adjust.
22358         (fold_addr_expr): Remove.
22359         (fold_unary): Use build_fold_addr_expr.
22360         (fold_comparison): Likewise.
22361         (split_address_to_core_and_offset): Likewise.
22362         * coverage.c (tree_coverage_counter_addr): Mark the array decl
22363         TREE_ADDRESSABLE.
22364         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
22365         (gimplify_modify_expr_to_memcpy): Mark source and destination
22366         addressable.
22367         * omp-low.c (create_omp_child_function): Mark the object decl
22368         TREE_ADDRESSABLE.
22369         (lower_rec_input_clauses): Mark the var we take the address of
22370         TREE_ADDRESSABLE.
22371         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
22372
22373 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22374
22375         PR middle-end/39315
22376         * cfgexpand.c (expand_one_stack_var_at): Change alignment
22377         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
22378
22379 2009-03-27  Richard Guenther  <rguenther@suse.de>
22380
22381         PR tree-optimization/39120
22382         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
22383         constraints.
22384         (handle_lhs_call): Process return constraints.  Add escape
22385         constraints if necessary.
22386         (handle_const_call): Fill out return constraints.  Make nested
22387         case more precise.  Avoid consttmp if possible.
22388         (handle_pure_call): Fill out return constraints.  Avoid
22389         callused if possible.
22390         (find_func_aliases): Simplify call handling.
22391
22392 2009-03-27  Richard Guenther  <rguenther@suse.de>
22393
22394         PR tree-optimization/39120
22395         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
22396         as a representative.
22397         (solve_graph): Do propagate CALLUSED.
22398         (handle_pure_call): Use a scalar constraint from CALLUSED for
22399         the return value.
22400         (find_what_p_points_to): CALLUSED shall not appear in poins-to
22401         solutions.
22402
22403 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22404
22405         PR c/39323
22406         * c-common.c (handle_aligned_attribute): Properly check alignment
22407         overflow.  Use (1U << i) instead of (1 << i).
22408
22409         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
22410
22411         * expr.h (get_mem_align_offset): Updated.
22412
22413         * tree.h (tree_decl_common): Change align to "unsigned int" and
22414         move it before pointer_alias_set.
22415
22416 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22417             Jakub Jelinek  <jakub@redhat.com>
22418
22419         PR target/38034
22420         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
22421         gr_register_operand with gr_reg_or_0_operand.
22422         (cmpxchg_rel_di): Likewise.
22423         (sync_lock_test_and_set<mode>): Likewise.
22424
22425 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22426
22427         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
22428         (true_regnum): Likewise.
22429
22430         * rtlanal.c (subreg_info): Moved to ...
22431         * rtl.h (subreg_info): Here.  New.
22432         (subreg_get_info): New.
22433
22434         * rtlanal.c (subreg_get_info): Make it extern.
22435
22436 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22437
22438         PR target/39472
22439         * config/i386/i386.c (ix86_abi): New.
22440         (override_options): Handle -mabi=.
22441         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
22442         (ix86_call_abi_override): Likewise.
22443         (init_cumulative_args): Likewise.
22444         (function_arg_advance): Likewise.
22445         (function_arg_64): Likewise.
22446         (function_arg): Likewise.
22447         (ix86_pass_by_reference): Likewise.
22448         (ix86_function_value_regno_p): Likewise.
22449         (ix86_build_builtin_va_list_abi): Likewise.
22450         (setup_incoming_varargs_64): Likewise.
22451         (is_va_list_char_pointer): Likewise.
22452         (ix86_init_machine_status): Likewise.
22453         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
22454         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
22455         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
22456         (ix86_function_abi): Make it static and return enum calling_abi.
22457         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
22458         with ix86_abi.
22459         (ix86_fn_abi_va_list): Updated.
22460
22461         * config/i386/i386.h (ix86_abi): New.
22462         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
22463         (CONDITIONAL_REGISTER_USAGE): Likewise.
22464         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
22465         (machine_function): Likewise.
22466
22467         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
22468         with ix86_abi.
22469         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
22470         (STACK_BOUNDARY): Likewise.
22471         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
22472
22473         * config/i386/i386.opt (mabi=): New.
22474
22475         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
22476         return enum calling_abi.
22477         (ix86_function_type_abi): Likewise.
22478         (ix86_function_abi): Removed.
22479
22480         * doc/invoke.texi: Document -mabi= option for x86.
22481
22482 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22483
22484         * builtins.c (real_dconstp): Delete.
22485         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
22486
22487 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
22488             Jakub Jelinek  <jakub@redhat.com>
22489
22490         PR debug/37959
22491         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
22492         (gen_subprogram_die): When a function is explicit, generate the
22493         DW_AT_explicit attribute.
22494         * langhooks.h (struct lang_hooks_for_decls): Add
22495         function_decl_explicit_p langhook.
22496         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
22497         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
22498
22499 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
22500
22501         * builtins.c (fold_builtin_memory_op): Optimize memmove
22502         into memcpy if we can prove source and destination don't overlap.
22503
22504         * tree-inline.c: Include gt-tree-inline.h.
22505         (clone_fn_id_num): New variable.
22506         (clone_function_name): New function.
22507         (tree_function_versioning): Use it.
22508         * Makefile.in (GTFILES): Add tree-inline.c.
22509
22510 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
22511
22512         * BASE-VER: Change to 4.5.0.
22513
22514 2009-03-27  Xinliang David Li  <davidxl@google.com>
22515
22516         PR tree-optimization/39557
22517         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
22518
22519 2009-03-27  Xinliang David Li  <davidxl@google.com>
22520
22521         PR tree-optimization/39548
22522         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
22523         candidate check.
22524
22525 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22526
22527         * c-common.c (pointer_int_sum): Use %wd on return from
22528         tree_low_cst.
22529
22530 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22531
22532         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
22533         on return from tree_low_cst.
22534
22535 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22536
22537         PR c++/36799
22538         * ginclude/stdarg.h (va_copy): Define also for
22539         __GXX_EXPERIMENTAL_CXX0X__.
22540
22541 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22542
22543         PR c++/35652
22544         * builtins.h (c_strlen): Do not warn here.
22545         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22546         * c-common.c (pointer_int_sum): Take an explicit location.
22547         Warn about offsets out of bounds.
22548         * c-common.h (pointer_int_sum): Adjust declaration.
22549
22550 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22551
22552         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
22553         markup glitch.
22554
22555 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
22556
22557         PR c++/39554
22558         * opts.c (warn_if_disallowed_function_p): Don't assume
22559         get_callee_fndecl must return non-NULL.
22560
22561 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
22562
22563         PR rtl-optimization/39522
22564         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
22565         when reg_reloaded_valid is set.
22566
22567 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22568
22569         * config/spu/divv2df3.c: New file.
22570         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
22571         (DPBIT_FUNCS): Filter out _div_df.
22572
22573 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
22574
22575         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
22576         a jump insn, count that jump in the distance to the loop start.
22577
22578 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
22579
22580         PR target/39523
22581         * config/sh/sh.c (calc_live_regs): Fix condition for global
22582         registers except PIC_OFFSET_TABLE_REGNUM.
22583
22584 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
22585
22586         PR/39518
22587         * doc/invoke.texi (-mconsole): New.
22588         (-mcygwin): New.
22589         (-mno-cygwin): New.
22590         (-mdll): New.
22591         (-mnop-fun-dllimport): New.
22592         (-mthread): New.
22593         (-mwin32): New.
22594         (-mwindows): New.
22595         (sub section "i386 and x86-64 Windows Options"): New.
22596
22597 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
22598
22599         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
22600         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
22601
22602 2009-03-25  Richard Guenther  <rguenther@suse.de>
22603
22604         PR middle-end/39497
22605         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
22606         of -Wno-error.
22607
22608 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
22609
22610         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
22611         neither of haifa/selective schedulers are working.
22612
22613 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22614
22615         * doc/invoke.texi (Debugging Options): Fix description of
22616         -fno-merge-debug-strings.
22617
22618 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
22619
22620         * config/cris/libgcc.ver: New version-script.
22621         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
22622
22623         * configure.ac <GAS features, nop mnemonic>: Add pattern
22624         crisv32-*-* for "nop".
22625         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
22626         * configure: Regenerate.
22627
22628 2009-03-24  Ira Rosen  <irar@il.ibm.com>
22629
22630         PR tree-optimization/39529
22631         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
22632         mark_sym_for_renaming for the tag copied to the new vector
22633         pointer.
22634
22635 2009-03-24  Arthur Loiret  <aloiret@debian.org>
22636
22637         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
22638         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
22639         EXTRA_SPEC_FUNCTIONS.
22640         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
22641         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
22642         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
22643         -march and -mtune options.
22644
22645 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
22646
22647         * config/m68k/t-rtems: Add m5329 multilib.
22648
22649 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
22650             Jakub Jelinek  <jakub@redhat.com>
22651
22652         PR debug/39524
22653         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
22654         nodes.
22655
22656 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22657
22658         PR c/39495
22659         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
22660         instead of c_parser_expression_conv, if original_code isn't one of the
22661         4 allowed comparison codes, fail.
22662
22663 2009-03-23  Richard Guenther  <rguenther@suse.de>
22664
22665         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
22666         * tree.h (struct tree_type): Likewise.
22667         * reload.h (struct insn_chain): Likewise.
22668         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
22669         * function.h (struct function): Likewise.
22670         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
22671
22672 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22673
22674         PR tree-optimization/39516
22675         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
22676
22677 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
22678
22679         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
22680         should be set true if BITS_PER_WORD of target is bigger than 32
22681
22682 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
22683
22684         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
22685         Translate -B-options to -rpath-link.  Correct existing
22686         rpath-link and conditionalize on !nostdlib.
22687
22688 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22689
22690         * doc/extend.texi (Function Attributes, Variable Attributes):
22691         Fix typos.
22692         * doc/invoke.texi (Debugging Options, Optimize Options)
22693         (i386 and x86-64 Options, MCore Options): Likewise.
22694
22695 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
22696
22697         PR debug/37890
22698         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
22699         it for block local namespace aliases.
22700         (gen_decl_die): Pass context_die to gen_namespace_die.
22701
22702 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22703
22704         PR c/39495
22705         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
22706         minimum or maximum value.
22707
22708 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
22709
22710         * reginfo.c (globalize_reg): Recompute derived reg sets.
22711
22712 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
22713
22714         PR target/39063
22715         * libgcc2.c (mprotect): Do not use signed arguments for
22716         VirtualProtect, use DWORD arguments.  Also fix the 'may
22717         be used uninitialized' warning for the np variable.
22718
22719 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22720
22721         PR target/39496
22722         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
22723         functions using regparm calling conventions when not optimizing.
22724         (ix86_function_sseregparm): Similarly for sseregparm calling
22725         conventions.
22726
22727 2009-03-19  Li Feng  <nemokingdom@gmail.com>
22728
22729         PR middle-end/39500
22730         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
22731         dependence if the first conflict is after niter iterations.
22732
22733 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
22734
22735         PR middle-end/38609
22736         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
22737         functions with dynamic stack-pointer adjustments.
22738
22739 2009-03-19  Ben Elliston  <bje@au.ibm.com>
22740
22741         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
22742         option; change to -msdata=data.
22743
22744 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22745
22746         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
22747         and -fopenmp.
22748
22749 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
22750
22751         PR target/35180
22752         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
22753
22754 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
22755
22756         * doc/invoke.texi (Code Gen Options): Expand discussion of
22757         -fno-common.
22758
22759 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
22760
22761         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
22762         * matrix-reorg.c (struct matrix_info): Likewise.
22763         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
22764         * rtl.h (struct mem_attrs): Likewise.
22765         * df.h (struct df): Likewise.
22766         * tree-data-ref.h (struct data_dependence_relation): Likewise.
22767         * ira-int.h (struct ira_allocno): Likewise.
22768         * df-scan.c (struct df_collection_rec): Likewise.
22769         * ira.c (struct equivalence): Likewise.
22770         * function.c (struct temp_slot): Likewise.
22771         * cfgloop.h (struct loop): Likewise.
22772
22773         PR debug/39485
22774         * function.c (use_register_for_decl): When not optimizing, disregard
22775         register keyword for variables with types containing methods.
22776
22777 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
22778
22779         PR middle-end/39447
22780         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
22781         (is_simple_operand): Call contains_component_ref_p before calling data
22782         reference analysis that would fail on COMPONENT_REFs.
22783
22784         * tree-vrp.c (search_for_addr_array): Fix formatting.
22785
22786 2009-03-18  Richard Guenther  <rguenther@suse.de>
22787
22788         * tree-vect-transform.c (vect_loop_versioning): Fold the
22789         generated comparisons.
22790         * tree-vectorizer.c (set_prologue_iterations): Likewise.
22791         (slpeel_tree_peel_loop_to_edge): Likewise.
22792
22793 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22794
22795         PR middle-end/37805
22796         * opts.c (print_specific_help): In addition to `undocumented',
22797         accept `separate' and `joined' flags if passed alone.  Describe
22798         output by the first matched one of those.
22799         (common_handle_option): Skip over empty strings.
22800         * gcc.c (display_help): Fix help string for `--help='.
22801         * doc/invoke.texi (Option Summary, Overall Options): With
22802         `--help=', classes and qualifiers can both be repeated, but
22803         only the latter can be negated.  One should not pass only
22804         negated qualifiers.  Fix markup and examples.
22805
22806         Revert
22807         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
22808         PR middle-end/37805
22809         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
22810         and -fhelp=separate.
22811
22812 2009-03-17  Jing Yu  <jingyu@google.com>
22813
22814         PR middle-end/39378
22815         * function.h (struct rtl_data): Move is_thunk from here...
22816         (struct function): ...to here.
22817         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
22818         * varasm.c (assemble_start_function): Change is_thunk from crtl to
22819         cfun.
22820         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
22821         cfun.
22822         (alpha_does_function_need_gp, alpha_start_function): Likewise.
22823         (alpha_output_function_end_prologue): Likewise.
22824         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
22825         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
22826         (rs6000_output_function_epilogue): Likewise.
22827         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
22828
22829 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
22830
22831         PR target/39482
22832         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
22833         from different units in a single alternative.
22834         (*truncdfsf_i387): Ditto.
22835         (*truncxfsf2_mixed): Ditto.
22836         (*truncxfdf2_mixed): Ditto.
22837
22838 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
22839
22840         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
22841         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
22842
22843         PR debug/39474
22844         * tree-ssa-live.c (remove_unused_locals): Don't remove local
22845         unused non-artificial variables when not optimizing.
22846
22847         PR debug/39471
22848         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
22849         DW_TAG_imported_module even if decl is IMPORTED_DECL with
22850         NAMESPACE_DECL in its DECL_INITIAL.
22851
22852         PR middle-end/39443
22853         * optabs.c (set_user_assembler_libfunc): New function.
22854         * expr.h (set_user_assembler_libfunc): New prototype.
22855         * c-common.c: Include libfuncs.h.
22856         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
22857         for memcmp, memset, memcpy, memmove and abort.
22858         * Makefile.in (c-common.o): Depend on libfuncs.h.
22859
22860         PR debug/39412
22861         * dwarf2out.c (gen_inlined_enumeration_type_die,
22862         gen_inlined_structure_type_die, gen_inlined_union_type_die,
22863         gen_tagged_type_instantiation_die): Removed.
22864         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
22865         do nothing.
22866
22867 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
22868
22869         PR testsuite/38526
22870         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
22871         its use.
22872         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
22873         (check-parallel-%): Ditto.
22874         (check-consistency): Ditto.
22875
22876 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
22877
22878         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
22879         local variable rhs by NULL_TREE.
22880
22881 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22882
22883         PR target/39477
22884         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
22885
22886 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22887
22888         PR target/39476
22889         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
22890
22891 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
22892
22893         PR target/39473
22894         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
22895         for ms->sysv ABI calls only in 64bit mode.
22896
22897         * config/i386/i386.md (untyped_call): Support 32bit.
22898
22899 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
22900
22901         * doc/extend.texi: Replace x86_65 with x86_64.
22902
22903 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
22904
22905         PR tree-optimization/39455
22906         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
22907         mismatches for POINTER_TYPE_P (type).
22908         (number_of_iterations_le): Likewise.
22909
22910 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
22911
22912         * config/picochip/picochip.c: Removed profiling support.
22913         * config/picochip/picochip.md: Removed profiling instruction.
22914         * config/picochip/picochip.h: Removed profiling builtin.
22915
22916 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
22917
22918         * doc/install.texi (--with-host-libstdcxx): Document.
22919
22920 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
22921
22922         PR target/34299
22923         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
22924         generate a warning if the function name does not begin with
22925         "__vector" and the function has either the 'signal' or 'interrupt'
22926         attribute, from here to ...
22927         (avr_declare_function_name): ...here. New function.
22928         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
22929         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
22930
22931 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
22932
22933         PR bootstrap/39454
22934         * cse.c (fold_rtx): Don't modify original const_arg1 when
22935         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
22936         separate variable instead.
22937         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
22938         from out of range shift counts.
22939         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
22940
22941 2009-03-13  Catherine Moore  <clm@codesourcery.com>
22942
22943         * config/i386/x-mingw32 (host-mingw32.o): Replace
22944         diagnostic.h with $(DIAGNOSTIC_H).
22945
22946 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
22947
22948         PR target/39431
22949         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
22950         predicate.
22951         * config/i386/sync.md (sync_compare_and_swap<mode>,
22952         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
22953         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
22954         into a register.
22955         (sync_double_compare_and_swapdi_pic,
22956         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
22957         cmpxchg8b_pic_memory_operand instead of just memory_operand.
22958
22959 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22960
22961         PR target/39445
22962         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
22963
22964 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22965
22966         PR target/39327
22967         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
22968         (avx_addsubv4df3): Likewise.
22969         (*avx_addsubv4sf3): Likewise.
22970         (sse3_addsubv4sf3): Likewise.
22971
22972 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
22973
22974         PR target/38824
22975         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
22976
22977 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
22978
22979         PR debug/39432
22980         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
22981         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22982         registers for allocnos created from user-defined variables.
22983
22984 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22985
22986         PR target/39181
22987         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
22988         of non-integer mode as well.
22989
22990 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
22991
22992         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
22993         for functions for which the parameter types are unknown.
22994
22995 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
22996
22997         PR target/39137
22998         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
22999         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23000         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23001         * config/i386/i386.c (ix86_local_alignment): For
23002         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23003         long long variables on the stack to avoid dynamic realignment.
23004         Allow the first argument to be a decl rather than type.
23005         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23006
23007 2009-03-11  Nick Clifton  <nickc@redhat.com>
23008
23009         PR target/5362
23010         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23011         options.
23012         Add description to mno-lsim option.
23013         * config/mcore/mcore.h: Remove comment about deprecated m4align
23014         option.
23015         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23016         * doc/invoke.texi: Add description of mno-lsim and
23017         mstack-increment options.
23018
23019         * config/fr30/fr30.opt: Document the -mno-lsim option.
23020         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23021         and -mno-lsim options.
23022
23023 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23024
23025         * fold-const.c (fold_comparison): Only call fold_inf_compare
23026         if the mode supports infinities.
23027
23028 2009-03-11  Jason Merrill  <jason@redhat.com>
23029
23030         PR debug/39086
23031         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
23032         end already did.  Notice GIMPLE_CALL modifications of the result.
23033         Don't copy debug information from an ignored decl or a decl from
23034         another function.
23035
23036 2009-03-10  Richard Guenther  <rguenther@suse.de>
23037             Nathan Froyd  <froydnj@codesourcery.com>
23038
23039         PR middle-end/37850
23040         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
23041         (__divMODE3): Likewise.
23042
23043 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
23044
23045         PR tree-optimization/39394
23046         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
23047         DECL_SIZE_UNIT of variable length FIELD_DECLs.
23048
23049 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23050
23051         * recog.c (verfiy_changes): Disallow renaming of hard regs in
23052         inline asms for register asm ("") declarations.
23053
23054 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
23055
23056         * fold-const.c (fold_unary): Fix comment.
23057
23058 2009-03-07  Jan Hubicka  <jh@suse.cz>
23059
23060         PR target/39361
23061         * tree-inline.c (setup_one_parameter): Do replacement of const
23062         argument by constant in SSA form.
23063
23064 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23065
23066         PR middle-end/38028
23067         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
23068         determine alignment passed to assign_stack_local.
23069         (assign_parms_unsplit_complex): Likewise.
23070         * except.c (sjlj_build_landing_pads): Likewise.
23071
23072 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23073
23074         PR middle-end/39360
23075         * tree-flow.h (add_referenced_var): Return bool instead of void.
23076         * tree-dfa.c (add_referenced_var): Return result of
23077         referenced_var_check_and_insert call.
23078         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
23079         of referenced_var_check_and_insert.
23080
23081         PR debug/39372
23082         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23083         (gen_variable_die): Emit DW_AT_location on abstract static variable's
23084         DIE, don't emit it if abstract origin already has it.
23085         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23086         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23087
23088 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23089
23090         * genpreds.c (needs_variable): Fix parentheses at variable name
23091         detection.
23092         (write_tm_constrs_h): Indent generated code.
23093
23094 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23095
23096         * doc/extend.texi (Function Attributes): Add documentation
23097         for isr attributes.
23098
23099 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23100
23101         PR debug/39387
23102         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23103         take locus from its DECL_SOURCE_LOCATION instead of input_location.
23104
23105 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23106
23107         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23108         the loop as bad.
23109
23110 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
23111
23112         PR debug/39379
23113         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23114         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23115
23116 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
23117
23118         * config/i386/i386.md (R8_REG, R9_REG): New constants.
23119         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23120         constants instead of magic numbers.
23121         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23122         (QI_REG_P): Ditto.
23123         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23124         (x86_64_ms_abi_int_parameter_registers): Ditto.
23125         (x86_64_int_return_registers): Ditto.
23126         (ix86_maybe_switch_abi): Ditto.
23127         (ix86_expand_call): Ditto for clobbered_registers array.
23128         (ix86_hard_regno_mode_ok): Ditto.
23129         (x86_extended_QIreg_mentioned_p): Ditto.
23130
23131 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
23132
23133         PR tree-optimization/39349
23134         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23135
23136         * combine.c (gen_lowpart_for_combine): Use omode when generating
23137         clobber.
23138
23139 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
23140
23141         PR rtl-optimization/39235
23142         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23143
23144 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23145
23146         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23147
23148 2009-03-04  Richard Guenther  <rguenther@suse.de>
23149
23150         PR tree-optimization/39362
23151         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23152         that occur in abnormal PHIs should be varying.
23153
23154 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23155
23156         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23157         Extend comments.
23158         (simple_iv):  Take loop as an argument instead of statement.
23159         * tree-scalar-evolution.h (simple_iv): Declaration changed.
23160         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23161         to simple_iv.
23162         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23163         Ditto.
23164         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23165         * matrix-reorg.c (analyze_transpose): Ditto.
23166         * tree-data-ref.c (dr_analyze_innermost): Ditto.
23167         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23168         * tree-predcom.c (ref_at_iteration): Ditto.
23169         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23170
23171 2009-03-04  Richard Guenther  <rguenther@suse.de>
23172
23173         PR tree-optimization/39358
23174         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23175         escaped_id and callused_id.
23176         (solve_graph): Likewise.
23177
23178 2009-03-04  Richard Guenther  <rguenther@suse.de>
23179
23180         PR tree-optimization/39339
23181         * tree-sra.c (try_instantiate_multiple_fields): Make it
23182         no longer ICE on the above.
23183
23184 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
23185
23186         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23187         that fits within Pmode.
23188
23189 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23190
23191         PR middle-end/10109
23192         * tm.texi (LIBCALL_VALUE): Update description.
23193
23194 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23195
23196         PR middle-end/34443
23197         * doc/extend.texi (section): Update description.
23198
23199 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
23200
23201         PR middle-end/39345
23202         * tree-inline.c (remapped_type): New.
23203         (can_be_nonlocal): Call remapped_type instead of remap_type.
23204
23205 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23206
23207         PR fortran/39354
23208         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23209         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23210
23211 2009-03-03  Richard Guenther  <rguenther@suse.de>
23212
23213         PR middle-end/39272
23214         * tree.c (tree_nonartificial_location): New function.
23215         * tree.h (tree_nonartificial_location): Declare.
23216         * builtins.c (expand_builtin_memory_chk): Provide location
23217         of the call location for artificial function pieces.
23218         (maybe_emit_chk_warning): Likewise.
23219         (maybe_emit_sprintf_chk_warning): Likewise.
23220         (maybe_emit_free_warning): Likewise.
23221         * expr.c (expand_expr_real_1): Likewise.
23222
23223 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23224
23225         PR tree-optimization/39343
23226         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23227         COMPONENT_REF t has ARRAY_TYPE.
23228
23229 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23230
23231         PR middle-end/39335
23232         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23233         when the type precision of the induction variable should be
23234         larger than the type precision of nit.
23235         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23236         * graphite.c (graphite_loop_normal_form): Same.
23237         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23238
23239 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23240
23241         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23242         (*call_1_rex64_ms_sysv): Use named constants instead of magic
23243         numbers to describe clobbered registers.
23244         (*call_value_0_rex64_ms_sysv): Ditto.
23245         * config/i386/mmx.md (mmx_emms): Ditto.
23246         (mmx_femms): Ditto.
23247
23248 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
23249
23250         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
23251         of ABI_64.
23252
23253 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23254
23255         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
23256         (spu_section_type_flags): New function.
23257
23258 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23259
23260         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
23261         reg_class_contents of FLOAT_REGS into a temporary.
23262
23263 2009-03-02  Richard Guenther  <rguenther@suse.de>
23264             Ira Rosen  <irar@il.ibm.com>
23265
23266         PR tree-optimization/39318
23267         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
23268         information to the vectorized statement.
23269
23270 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
23271
23272         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
23273         variable.  Use defined names instead of magic constants for REX SSE
23274         registers.
23275
23276 2009-03-01  Richard Guenther  <rguenther@suse.de>
23277
23278         PR tree-optimization/39331
23279         * omp-low.c (lower_send_shared_vars): Do not receive new
23280         values for the reference of DECL_BY_REFERENCE parms or results.
23281
23282 2009-03-01  Jan Hubicka  <jh@suse.cz>
23283
23284         PR debug/39267
23285         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
23286         BLOCK_NONLOCALIZED_VAR): New macros.
23287         (tree_block): Add nonlocalized_vars.
23288         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
23289         gen_decl_die): Add origin argument.  Allow generation of die with
23290         origin at hand only.
23291         (gen_member_die, gen_type_die_with_usage, force_decl_die,
23292         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
23293         of gen_*.
23294         (gen_block_die): Fix checking for unused blocks.
23295         (process_scope_var): Break out from .... ; work with origins only.
23296         (decls_for_scope) ... here; process nonlocalized list.
23297         (dwarf2out_ignore_block): Look for nonlocalized vars.
23298         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
23299         vars.
23300         (dump_scope_block): Dump them.
23301         * tree-inline.c (remap_decls): Handle nonlocalized vars.
23302         (remap_block): Likewise.
23303         (can_be_nonlocal): New predicate.
23304         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
23305
23306 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23307
23308         * configure: Regenerate.
23309
23310 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23311
23312         * optc-gen.awk: No need to duplicate option flags twice.
23313         Reuse help texts for duplicate options which do not have any.
23314
23315         * gcc.c (display_help): Document --version.
23316
23317         * gcc.c (main): If print_help_list and verbose_flag, ensure
23318         driver output comes before subprocess output.
23319
23320         * optc-gen.awk: Assign all remaining fields to help string,
23321         space-separated, for multi-line help in *.opt.
23322
23323         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
23324         -Wno-pedantic-ms-format is for MinGW targets only.
23325
23326         * doc/options.texi (Option file format): Fix bad indentation,
23327         restoring dropped sentence.
23328
23329 2009-02-28  Jan Hubicka  <jh@suse.cz>
23330
23331         * tree-inline.c (tree_function_versioning): Output debug info.
23332
23333 2009-02-28  Jan Hubicka  <jh@suse.cz>
23334
23335         PR debug/39267
23336         * tree-inline.c (setup_one_parameter): Do not copy propagate
23337         arguments when not optimizing.
23338
23339 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
23340
23341         PR target/39327
23342         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23343         (avx_addsubv4df3): Likewise.
23344         (*avx_addsubv4sf3): Likewise.
23345         (sse3_addsubv4sf3): Likewise.
23346         (*avx_addsubv2df3): Likewise.
23347         (sse3_addsubv2df3): Likewise.
23348         (avx_unpckhps256): Correct item selectors.
23349         (avx_unpcklps256): Likewise.
23350         (avx_unpckhpd256): Likewise.
23351         (avx_unpcklpd256): Likewise.
23352
23353 2009-02-28  Jan Hubicka  <jh@suse.cz>
23354
23355         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
23356         static vars.
23357         (copy_arguments_for_versioning): If var is declared don't declare it.
23358         (tree_function_versioning): First setup substitutions and then copy
23359         args.
23360
23361 2009-02-27  Jan Hubicka  <jh@suse.cz>
23362
23363         PR debug/39267
23364         * cgraph.h (varpool_output_debug_info): Remove.
23365         * cgraphunit.c (varpool_output_debug_info): Remove.
23366         * dwarf2out.c (deferred_locations_struct): New struct
23367         (deferred_locations): New type.
23368         (deferred_locations_list): New static var.
23369         (deffer_location): New function.
23370         (gen_variable_die): Use it.
23371         (decls_for_scope): Output info on local static vars.
23372         (dwarf2out_finish): Process deferred locations.
23373         * varpool.c (varpool_output_debug_info): Remove.
23374
23375 2009-02-27  Jan Hubicka  <jh@suse.cz>
23376
23377         PR debug/39267
23378         * tree.h (TREE_PROTECTED): Fix comment.
23379         (BLOCK_HANDLER_BLOCK): Remove.
23380         (struct tree_block): Remove handler_block add body_block.
23381         (inlined_function_outer_scope_p): New.
23382         (is_body_block): Remove.
23383         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
23384         * dwarf2out.c (is_inlined_entry_point): Remove.
23385         (add_high_low_attributes): Use inlined_function_outer_scope_p.
23386         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
23387         code.
23388         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
23389         * gimplify.c (gimplify_expr): Gimplify body blocks.
23390         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
23391         block with multiple subblocks.
23392         (dump_scope_block): Prettier output; dump more flags and info.
23393         (dump_scope_blocks): New.
23394         (remove_unused_locals): Use dump_scope_blocks.
23395         * tree-flow.h (dump_scope_blocks): Declare.
23396         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
23397         * stmt.c (is_body_block): Remove.
23398         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
23399         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
23400
23401 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
23402
23403         PR middle-end/39308
23404         * graphite.c (graphite_loop_normal_form): Do not call
23405         number_of_iterations_exit from a gcc_assert.
23406
23407 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23408
23409         * config/s390/s390.c (s390_swap_cmp): Look for conditional
23410         jumps if COND is NULL.
23411         (find_cond_jump): New function.
23412         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
23413         * config/s390/s390.md: Remove z10_cobra attribute value.
23414
23415 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
23416
23417         * config/alpha/alpha.h (alpha_expand_mov): Return false if
23418         force_const_mem returns NULL_RTX.
23419
23420 2009-02-26  Jan Hubicka  <jh@suse.cz>
23421
23422         PR debug/39267
23423         * cgraph.h (varpool_output_debug_info): Remove.
23424         * cgraphunit.c (varpool_output_debug_info): Remove.
23425         * dwarf2out.c (deferred_locations_struct): New struct
23426         (deferred_locations): New type.
23427         (deferred_locations_list): New static var.
23428         (deffer_location): New function.
23429         (gen_variable_die): Use it.
23430         (decls_for_scope): Output info on local static vars.
23431         (dwarf2out_finish): Process deferred locations.
23432         * varpool.c (varpool_output_debug_info): Remove.
23433
23434 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
23435
23436         PR rtl-optimization/39241
23437         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
23438         to subreg_offset_representable_p.
23439
23440 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23441
23442         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
23443         execute function prototype.  Get f and nregs from max_reg_num
23444         and get_insns.  Remove the first backward pass as it's dead,
23445         guard the forward pass by flag_expensive_optimizations.
23446         (rest_of_handle_regmove): Delete.
23447         (pass_regmove): Replace it with regmove_optimize.
23448
23449 2009-02-25  Martin Jambor  <mjambor@suse.cz>
23450
23451         PR tree-optimization/39259
23452         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
23453         calls_alloca function flags.
23454         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
23455         calls are detected.
23456
23457 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23458
23459         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
23460         flags_set_1_rtx, flags_set_1_set): Delete.
23461         (regmove_optimize): Do not call mark_flags_life_zones.
23462
23463 2009-02-24  Julian Brown  <julian@codesourcery.com>
23464
23465         PR target/35965
23466         * config/arm/arm.c (require_pic_register): Only set
23467         cfun->machine->pic_reg once per function.
23468
23469 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
23470
23471         * doc/invoke.texi (Link Options): Document an easier way to pass
23472         options that take arguments to the GNU linker using -Xlinker and -Wl.
23473
23474 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
23475
23476         PR target/33785
23477         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
23478
23479 2009-02-24  Richard Guenther  <rguenther@suse.de>
23480
23481         PR debug/39285
23482         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
23483
23484 2009-02-24  Richard Guenther  <rguenther@suse.de>
23485             Zdenek Dvorak  <ook@ucw.cz>
23486
23487         PR tree-optimization/39233
23488         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
23489         from converting them to a generic type.
23490
23491 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
23492
23493         PR tree-optimization/39260
23494         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
23495         contains a condition with a real type.
23496         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
23497
23498 2009-02-23  Jason Merrill  <jason@redhat.com>
23499
23500         PR c++/38880
23501         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
23502         narrowing_initializer_constant_valid_p.
23503         (narrowing_initializer_constant_valid_p): Don't return
23504         null_pointer_node for adding a pointer to itself.
23505
23506 2009-02-23  Jan Hubicka  <jh@suse.cz>
23507
23508         PR c/12245
23509         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
23510         resizing.
23511
23512 2009-02-23  Jan Hubicka  <jh@suse.cz>
23513
23514         PR tree-optimization/37709
23515         * tree.c (block_ultimate_origin): Move here from dwarf2out.
23516         * tree.h (block_ultimate_origin): Declare.
23517         * dwarf2out.c (block_ultimate_origin): Move to tree.c
23518         * tree-ssa-live.c (remove_unused_scope_block_p):
23519         Eliminate blocks containig no instructions nor live variables nor
23520         nested blocks.
23521         (dump_scope_block): New function.
23522         (remove_unused_locals): Enable removal of dead blocks by default;
23523         enable dumping at TDF_DETAILS.
23524
23525 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23526
23527         * config/i386/i386.c (classify_argument): Don't allow COImode
23528         and OImode.
23529         (function_arg_advance_32): Don't allow OImode.
23530         (function_arg_32): Likewise.
23531         (function_value_32): Likewise.
23532         (return_in_memory_32): Likewise.
23533         (function_arg_64): Remove OImode comment.
23534
23535 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23536
23537         PR target/39261
23538         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
23539         ix86_expand_vector_set for V4DImode in 64bit mode only.
23540         (ix86_expand_vector_init_one_var): Likewise.
23541
23542 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
23543
23544         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
23545
23546 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23547
23548         PR bootstrap/39257
23549         * loop-iv.c: Revert last change.
23550         * emit-rtl.c: Likewise.
23551
23552 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23553
23554         PR target/39256
23555         * config/i386/i386.c (type_natural_mode): Remove an extra
23556         space in the warning message.
23557         (function_value_32): Handle 32-byte vector modes.
23558         (return_in_memory_32): Likewise.
23559
23560 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23561
23562         * loop-iv.c (truncate_value): New function.
23563         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
23564         of lowpart_subreg.
23565         (lowpart_subreg): Move to...
23566         * emit-rtl.c: ...here.
23567
23568 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
23569
23570         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
23571         accidental and undocumented change at revision 140860.
23572
23573 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
23574
23575         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
23576         take gimple_seq * arguments.
23577         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
23578         types_compatible_p langhook.
23579
23580 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
23581             Joseph Myers  <joseph@codesourcery.com>
23582
23583         * config/arm/arm.c (arm_builtin_va_list): New function.
23584         (arm_expand_builtin_va_start): Likewise.
23585         (arm_gimplify_va_arg_expr): Likewise.
23586         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
23587         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
23588         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
23589         (va_list_type): New variable.
23590         (arm_mangle_type): Mangle va_list_type appropriately.
23591
23592 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23593
23594         PR middle-end/39157
23595         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
23596         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
23597         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
23598         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
23599         parameter to 1000 for -O1 by default.
23600         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
23601         parameter.
23602         * loop-invariant.c: Include params.h.
23603         (move_loop_invariants): Don't call move_single_loop_invariants on
23604         very large loops.
23605
23606 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
23607
23608         * calls.c (emit_library_call_value_1): Use slot_offset instead of
23609         offset when calculating bounds for indexing stack_usage_map.  Fixes
23610         a buffer overflow with certain target setups.
23611
23612 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23613
23614         PR target/39240
23615         * calls.c (expand_call): Clear try_tail_call if caller and callee
23616         disagree in promotion of function return value.
23617
23618 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
23619
23620         PR target/39175
23621         * c-common.c (c_determine_visibility): If visibility changed and
23622         DECL_RTL has been already set, call make_decl_rtl to update symbol
23623         flags.
23624
23625 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
23626
23627         PR c++/39188
23628         * varasm.c (assemble_variable): Don't check DECL_NAME when
23629         globalizing a variable.
23630
23631 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
23632
23633         PR c/38483
23634         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
23635         expression before any __builtin_trap call.
23636         * c-typeck.c (build_function_call): Convert and check function
23637         arguments before generating a call to a trap.  Evaluate the
23638         function arguments before the trap.
23639
23640 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
23641
23642         PR target/39228
23643         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
23644         (UNSPEC_FXAM_MEM): New unspec.
23645         (fxam<mode>2_i387_with_temp): New insn and split pattern.
23646         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
23647         memory using fxam<mode>2_i387_with_temp to remove excess precision.
23648
23649 2009-02-19  Richard Guenther  <rguenther@suse.de>
23650
23651         PR tree-optimization/39207
23652         PR tree-optimization/39074
23653         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
23654         storedanything_tree): New.
23655         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
23656         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
23657         (build_succ_graph): Add edges from STOREDANYTHING to all
23658         non-direct nodes.
23659         (init_base_vars): Initialize STOREDANYTHING.
23660         (compute_points_to_sets): Free substitution info after
23661         building the succ graph.
23662         (ipa_pta_execute): Likewise.
23663
23664         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
23665         field.
23666         (do_ds_constraint): Do not add to special var or non-pointer
23667         field solutions.
23668         (type_could_have_pointers): Split out from ...
23669         (could_have_pointers): ... here.  For arrays use the element type.
23670         (create_variable_info_for): Initialize may_have_pointers.
23671         (new_var_info): Likewise.
23672         (handle_lhs_call): Make the HEAP variable unknown-sized.
23673         (intra_create_variable_infos): Use a type with pointers for
23674         PARM_NOALIAS, make it unknown-sized.
23675
23676 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23677
23678         PR target/39224
23679         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
23680
23681 2009-02-18  Jason Merrill  <jason@redhat.com>
23682
23683         PR target/39179
23684         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
23685         value if DECL_EXTERNAL.
23686         * tree-sra.c (sra_walk_gimple_assign): Likewise.
23687         * target.h (gcc_target::binds_local_p): Clarify "module".
23688         * tree.h (TREE_PUBLIC): Clarify "module".
23689
23690 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
23691
23692         PR target/38891
23693         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
23694         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
23695
23696 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
23697
23698         PR target/39082
23699         * c.opt (Wabi): Support C and ObjC.
23700         (Wpsabi): New.
23701
23702         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
23703
23704         * config/i386/i386.c (classify_argument): Warn once about the ABI
23705         change when passing union with long double.
23706
23707         * doc/invoke.texi: Update -Wabi for warning psABI changes.
23708
23709 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
23710
23711         PR c/35447
23712         * c-parser.c (c_parser_compound_statement): Always enter and leave
23713         a scope.
23714
23715 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23716
23717         PR target/34587
23718         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
23719
23720 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
23721
23722         PR tree-optimization/36922
23723         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
23724         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
23725         Likewise.
23726
23727 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23728
23729         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
23730         to 0 for EABI64.
23731
23732 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23733
23734         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
23735
23736 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23737
23738         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
23739         tree sharing.
23740
23741 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
23742             Richard Sandiford  <rdsandiford@googlemail.com>
23743
23744         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
23745         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
23746         (loongson_biadd): ...this.
23747
23748 2009-02-17  Richard Guenther  <rguenther@suse.de>
23749
23750         PR tree-optimization/39202
23751         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
23752         a var make sure to follow existing collapses.
23753
23754 2009-02-17  Richard Guenther  <rguenther@suse.de>
23755
23756         PR middle-end/39214
23757         * langhooks.c (lhd_print_error_function): Check for NULL block.
23758
23759 2009-02-17  Richard Guenther  <rguenther@suse.de>
23760
23761         PR tree-optimization/39204
23762         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
23763         of the PHI arg.
23764
23765 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
23766
23767         * config/soft-fp/double.h: Update from glibc CVS.
23768
23769 2009-02-17  Richard Guenther  <rguenther@suse.de>
23770
23771         PR tree-optimization/39207
23772         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
23773         strict-aliasing warnings for pointers pointing to NULL.
23774
23775 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
23776
23777         PR c/35446
23778         * c-parser.c (c_parser_braced_init): Call pop_init_level when
23779         skipping until next close brace.
23780
23781 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
23782
23783         PR target/37049
23784         * config/i386/i386.c (ix86_expand_push): Set memory alignment
23785         to function argument boundary.
23786
23787 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23788
23789         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
23790         in the lea_add. Reload eventually constraints it properly.
23791         * config/picochip/constraints.md: Remove the target constraint
23792         "b", since it is not needed anymore.
23793
23794 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
23795
23796         * gthr-dce.h: Uglify function parameter and local variable names.
23797         * gthr-gnat.h: Likewise.
23798         * gthr-mipssde.h: Likewise.
23799         * gthr-nks.h: Likewise.
23800         * gthr-posix95.h: Likewise.
23801         * gthr-posix.h: Likewise.
23802         * gthr-rtems.h: Likewise.
23803         * gthr-single.h: Likewise.
23804         * gthr-solaris.h: Likewise.
23805         * gthr-tpf.h: Likewise.
23806         * gthr-vxworks.h: Likewise.
23807         * gthr-win32.h: Likewise.
23808
23809 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
23810
23811         PR target/39196
23812         * config/i386/i386.md: Restrict the new peephole2 to move
23813         between MMX/SSE registers.
23814
23815 2009-02-15  Richard Guenther  <rguenther@suse.de>
23816
23817         Revert
23818         2009-02-13  Richard Guenther  <rguenther@suse.de>
23819
23820         * configure.ac: Enable LFS.
23821         * configure: Re-generate.
23822         * config.in: Likewise.
23823
23824 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23825
23826         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
23827         spu_srqwbyte, spu_srqwbytebc): Define.
23828         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
23829         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
23830         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
23831         "shrqby_<mode>"): New insn-and-split patterns.
23832         * config/spu/spu.c (expand_builtin_args): Determine and return
23833         number of operands using spu_builtin_description data.
23834         (spu_expand_builtin_1): Use it.
23835
23836 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
23837
23838         PR target/38056
23839         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
23840         TARGET_CONST_GP.
23841
23842 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23843
23844         PR target/39149
23845         * config/i386/i386.c (override_options): Correct warning
23846         messages for -malign-loops, -malign-jumps and -malign-functions.
23847
23848 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23849
23850         PR target/39152
23851         * config/i386/i386.md: Restrict the new peephole2 to move
23852         between the general purpose registers.
23853
23854 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
23855
23856         PR target/39162
23857         * config/i386/i386.c (type_natural_mode): Add a new argument.
23858         Return the original mode and warn ABI change if vector size is 32byte.
23859         (function_arg_advance): Updated.
23860         (function_arg): Likewise.
23861         (ix86_function_value): Likewise.
23862         (ix86_return_in_memory): Likewise.
23863         (ix86_sol10_return_in_memory): Likewise.
23864         (ix86_gimplify_va_arg): Likewise.
23865         (function_arg_32): Don't warn ABX ABI change here.
23866         (function_arg_64): Likewise.
23867
23868 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
23869
23870         * loop-iv.c (implies_p): In the final case, test that operands 0
23871         of the two comparisons match.
23872
23873         * config/bfin/bfin.c (find_prev_insn_start): New function.
23874         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
23875         (find_next_insn_start): Move.
23876
23877 2009-02-13  Richard Guenther  <rguenther@suse.de>
23878
23879         * configure.ac: Enable LFS.
23880         * configure: Re-generate.
23881         * config.in: Likewise.
23882
23883 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
23884
23885         PR c/35444
23886         * c-parser.c (c_parser_parms_list_declarator): Discard pending
23887         sizes on syntax error after some arguments have been parsed.
23888
23889 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
23890
23891         * doc/invoke.texi (-fira): Remove.
23892
23893 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23894
23895         * caller-save.c: Replace regclass.c with reginfo.c in comments.
23896         * recog.c: Likewise.
23897         * rtl.h: Likewise.
23898
23899 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
23900
23901         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
23902         (umul_ppmm): Likewise.
23903         (count_leading_zeros): Likewise.
23904         (count_trailing_zeros): Likewise.
23905         (UMUL_TIME): Likewise.
23906
23907 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23908
23909         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
23910         soft-fp/t-softfp to tmake_file.
23911
23912         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
23913         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
23914         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
23915         IA64_BUILTIN_INFQ]: New.
23916         (ia64_init_builtins): Initialize __builtin_infq,
23917         __builtin_fabsq and __builtin_copysignq if not HPUX.
23918         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
23919         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
23920
23921         * config/ia64/lib1funcs.asm (__divtf3): Define only if
23922         SHARED is defined.
23923         (__fixtfti): Likewise.
23924         (__fixunstfti): Likewise.
23925         (__floattitf): Likewise.
23926
23927         * config/ia64/libgcc-glibc.ver: New.
23928         * config/ia64/t-fprules-softfp: Likewise.
23929         * config/ia64/sfp-machine.h: Likewise.
23930
23931         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
23932         (LIBGCC2_TF_CEXT): Likewise.
23933         (TF_SIZE): Likewise.
23934         (TARGET_INIT_LIBFUNCS): Likewise.
23935
23936         * config/ia64/t-glibc (SHLINB_MAPFILES):
23937         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
23938
23939 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
23940
23941         * config/i386/i386.c (construct_container): Rewrite processing
23942         BLKmode with X86_64_SSE_CLASS.
23943
23944 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
23945
23946         PR target/39152
23947         * config/i386/i386.md: Replace simplify_replace_rtx with
23948         replace_rtx in the new peephole2.
23949
23950 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
23951
23952         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
23953         loop unrolling do not happen at -O2.
23954
23955 2009-02-12  Michael Matz  <matz@suse.de>
23956
23957         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
23958
23959 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
23960
23961         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
23962         for -g3.
23963
23964 2009-02-12  Ben Elliston  <bje@au.ibm.com>
23965
23966         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
23967         patterns when updating the back chain.  Missed in the 2009-02-10
23968         change.
23969
23970 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
23971
23972         * doc/extend.texi (Decimal Floating Types): Update identifier of
23973         draft TR and list of missing support.
23974
23975 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
23976
23977         PR middle-end/39154
23978         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
23979         bit to variable length decl's flags, add it also to its
23980         pointer replacement variable.
23981
23982 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
23983             Jakub Jelinek  <jakub@redhat.com>
23984
23985         PR target/39118
23986         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
23987         (memory_blockage): New expander.
23988         (*memory_blockage): New insn pattern.
23989         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
23990         instead of general blockage at the end of function prologue when
23991         frame pointer is used to access red zone area.  Do not emit blockage
23992         when profiling, it is emitted in generic code.
23993         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
23994         function epilogue when frame pointer is used to access red zone area.
23995
23996 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
23997
23998         PR target/38824
23999         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24000         by arithmetic with memory operands.
24001         * config/i386/predicates.md (commutative_operator): New.
24002
24003 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
24004
24005         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24006         bulleted lists.
24007
24008 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
24009
24010         * alias.h (record_alias_subset): Declare.
24011         * alias.c (record_alias_subset): Make global.
24012
24013 2009-02-10  Nick Clifton  <nickc@redhat.com>
24014
24015         * tree-parloops.c: Change license to GPLv3.
24016         * ipa-struct-reorg.c: Change license to GPLv3.
24017         * ipa-struct-reorg.h: Change license to GPLv3.
24018
24019 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
24020
24021         PR c/39084
24022         * c-decl.c (start_struct): Return NULL on error.
24023
24024 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
24025
24026         PR middle-end/39124
24027         * cfgloopmanip.c (remove_path): Call remove_bbs after
24028         cancel_loop_tree, not before it.
24029
24030         PR target/39139
24031         * function.h (struct function): Add has_local_explicit_reg_vars bit.
24032         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
24033         VAR_DECLs were seen.
24034         * tree-ssa-live.c (remove_unused_locals): Recompute
24035         cfun->has_local_explicit_reg_vars.
24036         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
24037         copies or clearings if cfun->has_local_explicit_reg_vars.
24038
24039 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
24040
24041         PR target/39118
24042         * config/i386/i386.c (expand_prologue): Emit blockage at the end
24043         of function prologue when frame pointer is used to access
24044         red zone area.
24045
24046 2009-02-10  Richard Guenther  <rguenther@suse.de>
24047
24048         PR middle-end/39127
24049         * gimplify.c (gimple_regimplify_operands): Always look if
24050         we need to create a temporary.
24051
24052 2009-02-10  Richard Guenther  <rguenther@suse.de>
24053
24054         PR tree-optimization/39132
24055         * tree-loop-distribution.c (todo): New global var.
24056         (generate_memset_zero): Trigger TODO_rebuild_alias.
24057         (tree_loop_distribution): Return todo.
24058
24059 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
24060
24061         PR target/39119
24062         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
24063         (x86_64_reg_class_name): Removed.
24064         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
24065         first one isn't X86_64_SSE_CLASS or any other ones aren't
24066         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
24067         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
24068         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
24069         and 3 X86_64_SSEUP_CLASS.
24070         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
24071         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
24072
24073 2009-02-10  Ben Elliston  <bje@au.ibm.com>
24074
24075         * config/rs6000/rs6000.md (allocate_stack): Always use an update
24076         form instruction to update the stack back chain word, even if the
24077         user has disabled the generation of update instructions.
24078         (movdi_<mode>_update_stack): New.
24079         (movsi_update_stack): Likewise.
24080         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
24081         always use an update form instruction to update the stack back
24082         chain word.
24083
24084 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
24085
24086         PR middle-end/38953
24087         * graphite.c (if_region_set_false_region): After moving a region in
24088         the false branch of a condition, remove the empty dummy basic block.
24089         (gloog): Remove wrong fix for PR38953.
24090
24091 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24092
24093         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24094         generation due to implicit sign extension.
24095
24096 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
24097
24098         PR middle-end/38981
24099         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24100         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24101
24102 2009-02-09  Richard Guenther  <rguenther@suse.de>
24103
24104         PR middle-end/35202
24105         * convert.c (convert_to_real): Disable (float)fn((double)x)
24106         to fnf(x) conversion if errno differences may occur and
24107         -fmath-errno is set.
24108
24109 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
24110
24111         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24112         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24113         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24114
24115 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24116
24117         PR c/35434
24118         * c-common.c (handle_alias_attribute): Disallow attribute for
24119         anything not a FUNCTION_DECL or VAR_DECL.
24120
24121 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
24122
24123         PR c/39035
24124         * real.c (do_compare): Special-case compare of zero against
24125         decimal float value.
24126
24127 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24128
24129         PR c/36432
24130         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24131         as indicating flexible array members unless the field itself is
24132         being declarared as the incomplete array.
24133
24134 2009-02-06  Jan Hubicka  <jh@suse.cz>
24135
24136         PR tree-optimization/38844
24137         * ipa-inline.c (try_inline): Stop inlining recursion when edge
24138         is already inlined.
24139
24140 2009-02-06  Richard Guenther  <rguenther@suse.de>
24141
24142         PR middle-end/38977
24143         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24144         fork because we may expand it as __gcov_fork.
24145
24146 2009-02-06  Nick Clifton  <nickc@redhat.com>
24147
24148         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24149
24150 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
24151
24152         PR tree-optimization/35659
24153         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24154         vn_phi_eq): Shortcut if hashcode does not match.
24155         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24156         NULL operands.
24157         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24158         and avoid iterative_hash_expr.
24159         (FOR_EACH_VALUE_ID_IN_SET): New.
24160         (value_id_compare): Remove.
24161         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24162         sort expressions by value id.
24163
24164 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
24165
24166         PR target/38991
24167         * config/sh/predicates.md (general_movsrc_operand): Don't check
24168         the subreg of system registers here.
24169
24170 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
24171
24172         PR c++/39106
24173         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24174         on the copied decl.
24175
24176 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
24177
24178         PR rtl-optimization/39110
24179         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24180         addresses, not aligned ones.
24181
24182 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
24183             Richard Guenther  <rguenther@suse.de>
24184
24185         PR tree-optimization/39100
24186         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24187         comment says and add edges.
24188
24189 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
24190
24191         PR c/35435
24192         * c-common.c (handle_tls_model_attribute): Ignore attribute for
24193         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24194
24195 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
24196
24197         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24198         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24199         register_bb_in_sese, new_sese, free_sese): Moved.
24200         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24201         outermost_loop_in_scop, build_scop_iteration_domain,
24202         expand_scalar_variables_ssa_name, get_vdef_before_scop,
24203         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24204         Use loop_in_sese_p instead of loop_in_scop_p.
24205         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24206         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24207         (scopdet_basic_block_info): Fix bug in scop detection.
24208         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24209         eq_loop_to_cloog_loop): Remove.
24210         (nb_loops_around_loop_in_scop, nb_loop
24211         ref_nb_loops): Moved here...
24212         * graphite.h (ref_nb_loops): ... from here.
24213         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24214         (loop_domain_dim, loop_iteration_vector_dim): Remove.
24215         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24216         * testsuite/gcc.dg/graphite/scop-19.c: New
24217
24218 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
24219             Hans-Peter Nilsson  <hp@axis.com>
24220
24221         PR rtl-optimization/37889
24222         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24223         Move offset handling from PLUS to before the switch.  Use new
24224         arguments when considering SYMBOL_REFs too.
24225         (rtx_addr_can_trap_p): Pass dummy offset and size.
24226         (enum may_trap_p_flags): Remove.
24227         (may_trap_p_1): Pass size from MEM_SIZE.
24228
24229         PR rtl-optimization/38921
24230         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24231         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24232         * rtlanal.c (may_trap_after_code_motion_p): Delete.
24233         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24234
24235 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
24236
24237         AVX Programming Reference (January, 2009)
24238         * config/i386/sse.md (*vpclmulqdq): New.
24239
24240 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
24241
24242         PR tree-optimization/38977
24243         PR gcov-profile/38292
24244         * calls.c (special_function_p): Disregard __builtin_ prefix.
24245
24246 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
24247
24248         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24249         non-indexable addresses even before reload.
24250
24251 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24252
24253         PR c/29129
24254         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
24255         as having variable size.  Do not give an error for unnamed
24256         parameters with [*] declarators.  Give a warning for type names
24257         with [*] declarators and mark them as variable size.
24258         * c-parser.c (c_parser_sizeof_expression): Do not give an error
24259         for sizeof applied to [*] type names.
24260
24261 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24262
24263         PR C++/36607
24264         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
24265
24266 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24267
24268         * gcc.c (process_command): Update copyright notice dates.
24269         * gcov.c (print_version): Likewise.
24270         * gcov-dump.c (print_version): Likewise.
24271         * mips-tfile.c (main): Likewise.
24272         * mips-tdump.c (main): Likewise.
24273
24274 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24275
24276         PR c/35433
24277         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
24278         for composite type involving a zero-length array type.
24279
24280 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24281
24282         PR target/35318
24283         * function.c (match_asm_constraints_1): Skip over
24284         initial optional % in the constraint.
24285
24286         PR inline-asm/39059
24287         * c-parser.c (c_parser_postfix_expression): If fixed point is not
24288         supported, don't accept FIXED_CSTs.
24289         * c-decl.c (finish_declspecs): Error if fixed point is not supported
24290         and _Sat is used without _Fract/_Accum.  Set specs->type to
24291         integer_type_node for cts_fract/cts_accum if fixed point is not
24292         supported.
24293
24294 2009-02-02  Catherine Moore  <clm@codesourcery.com>
24295
24296         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
24297
24298 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
24299
24300         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
24301         (ABI_HAS_64BIT_SYMBOLS): Use it.
24302         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
24303
24304 2009-02-02  Paul Brook  <paul@codesourcery.com>
24305
24306         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
24307
24308 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
24309
24310         PR inline-asm/39058
24311         * recog.h (asm_operand_ok): Add constraints argument.
24312         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
24313         recurse on matching constraint.
24314         (check_asm_operands): Pass constraints as 3rd argument to
24315         asm_operand_ok.  Don't look up matching constraint here.
24316         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
24317         to asm_operand_ok.
24318
24319 2009-02-02  Ben Elliston  <bje@au.ibm.com>
24320
24321         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
24322         TARGET_NARROW_VOLATILE_BITFIELD macro names.
24323
24324 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24325
24326         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
24327         information.  Remove some obsolete information.  Reorganize.
24328
24329         * config/pa/fptr.c: Revert license to GPL 2.
24330         * config/pa/milli64.S: Likewise.
24331
24332 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24333
24334         PR target/38904
24335         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
24336         LIBRARY name in, instead of hard-coding it.
24337         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
24338         extra target make frag to tmake_files according to EH model.
24339         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
24340         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
24341         frags that define makefile variable EH_MODEL appropriately.
24342         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
24343         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
24344         to "-sjlj" according to type of EH configured.
24345         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24346         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
24347         to "_sjlj" according to type of EH configured.
24348         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24349         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
24350         (SHLIB_LINK):  Add missing semicolon to if-else construct.
24351         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24352         string value of "pe_dll" command-line option.
24353         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
24354         (SHLIB_SONAME):  Use it when overriding t-cygming default.
24355         (SHLIB_IMPLIB):  Override t-cygming default.
24356         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24357         string value of "pe_dll" command-line option.
24358
24359 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24360
24361         PR target/38952
24362         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
24363         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
24364
24365 2009-01-31  Richard Guenther  <rguenther@suse.de>
24366
24367         PR tree-optimization/38937
24368         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
24369         computing the transitive closure.
24370
24371 2009-01-30  Richard Guenther  <rguenther@suse.de>
24372
24373         PR tree-optimization/39041
24374         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24375         Propagate variable indices only if the types match for this stmt.
24376
24377 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
24378
24379         PR target/39013
24380         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
24381         inline but never defined.
24382
24383 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
24384
24385         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
24386         (*insv_h_di_reg_extimm): New insn.
24387         (*insv_l<mode>_reg_extimm): New insn.
24388
24389 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24390
24391         * config/picochip/picochip.c (flag_conserve_stack): set
24392         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
24393         fconserve-stack. Reduce call-overhead used by inliner.
24394
24395 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24396
24397         PR/38157
24398         * common.opt (flag_conserve_stack): Initialised to zero.
24399
24400 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
24401
24402         PR/39002
24403         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
24404         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
24405         method.
24406
24407 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
24408
24409         * ira-color.c (allocno_reload_assign): Update comments.
24410         * regmove.c (regmove_optimize): Likewise.
24411
24412         * ra.h: Removed.
24413
24414 2009-01-29  Robert Millan  <rmh@aybabtu.com>
24415
24416         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
24417         * config/i386/kopensolaris-gnu.h: New file.  Undefine
24418         `MD_UNWIND_SUPPORT'.
24419         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
24420
24421 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
24422
24423         PR tree-optimization/39007
24424         * tree-loop-distribution.c (generate_builtin): Use
24425         recompute_dominator to compute the immediate dominator of the
24426         basic block just after the loop.
24427
24428 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
24429
24430         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
24431         (ASM_OUTPUT_DWARF_PCREL): Define.
24432
24433 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
24434
24435         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
24436         * doc/passes.texi: Remove entries about regclass, local-alloc, and
24437         global.  Modify entries about regmove and IRA.
24438
24439         * ra-conflict.c: Remove the file.
24440
24441         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
24442
24443         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
24444         (pass_regclass_init): Rename to pass_reginfo_init.
24445
24446         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
24447
24448         * toplev.h (flag_ira): Remove.
24449
24450         * caller-save.c (setup_save_areas): Remove flag_ira.
24451
24452         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
24453
24454         * global.c: Remove the file.
24455
24456         * opts.c (decode_options): Remove flag_ira.
24457
24458         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
24459
24460         * regmove.c: Modify file description.
24461         (find_use_as_address, try_auto_increment): Define them only if
24462         AUTO_INC_DEC is defined.
24463         (replacement_quality, replace_in_call_usage, fixup_match_1,
24464         stable_and_no_regs_but_for_p): Remove.
24465         (reg_set_in_bb): Make it static.
24466         (regmove_optimize): Remove flag_ira and code which worked for
24467         !flag_ira.
24468
24469         * local-alloc.c: Remove the file.
24470
24471         * common.opt (fira): Remove.
24472
24473         * ira.c: Include except.h.
24474         (eliminable_regset): Move from global.c.
24475         (mark_elimination): Ditto.  Remove flag_ira.
24476         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
24477         equiv_mem_modified, validate_equiv_mem_from_store,
24478         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
24479         contains_replace_regs, memref_referenced_p, memref_used_between_p,
24480         no_equiv, recorded_label_ref): Move from local-alloc.c.
24481         (update_equiv_regs): Ditto.  Make it static.
24482         (print_insn_chain, print_insn_chains): Move it from global.c.
24483         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
24484         (build_insn_chain): Ditto.  Make it static.
24485         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
24486         Rename to init_live_subregs.
24487         (gate_ira): Remove flag_ira.
24488
24489         * regclass.c: Rename reginfo.c.  Change file description.
24490         (FORBIDDEN_INC_DEC_CLASSES): Remove.
24491         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
24492         (init_reg_sets_1): Remove code for evaluation of
24493         reg_class_superclasses and losing_caller_save_reg_set.
24494         (init_regs): Remove init_reg_autoinc.
24495         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
24496         ok_for_base_p_nonstrict): Remove.
24497         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
24498         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
24499         corresponding entries.
24500         (dump_regclass, record_operand_costs, scan_one_insn,
24501         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
24502         record_address_regs, auto_inc_dec_reg_p): Remove.
24503         (gt-regclass.h): Rename to gt-reginfo.h.
24504
24505         * rtl.h (dump_global_regs, retry_global_alloc,
24506         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
24507
24508         * Makefile.in (RA_H): Remove.
24509         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
24510         Rename regclass.o to reginfo.o.
24511         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
24512         gt-reginfo.h.
24513         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
24514         (GTFILES): Rename regclass.c to reginfo.c.
24515
24516         * passes.c (init_optimization_passes): Remove pass_local_alloc and
24517         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
24518
24519         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
24520         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
24521         Remove flag_ira.
24522         (finish_spills): Ditto.  Remove code for !flag_ira.
24523
24524 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
24525
24526         PR middle-end/35854
24527         * doc/invoke.texi (rtl debug options): Complete rewrite.
24528         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
24529         to auto_inc_dec".
24530         * mode-switching.c (pass_mode_switching): Rename pass from
24531         "mode-sw" to "mode_sw".
24532         * except.c (pass_convert_to_eh_ranges): Rename pass from
24533         "eh-ranges" to "eh_ranges".
24534         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
24535         to "subreg1".
24536
24537
24538 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
24539             Alexander Monakov  <amonakov@ispras.ru>
24540
24541         PR middle-end/38857
24542         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
24543         register.
24544         (move_exprs_to_boundary): Change return type and pass through
24545         should_move from move_op.  Relax assert.  Update usage ...
24546         (schedule_expr_on_boundary): ... here.  Use should_move instead of
24547         cant_move.
24548         (move_op_orig_expr_found): Indicate that insn was disconnected from
24549         stream.
24550         (code_motion_process_successors): Do not call after_merge_succs
24551         callback if original expression was not found when traversing any of
24552         the branches.
24553         (code_motion_path_driver): Change return type.  Update prototype.
24554         (move_op): Update comment.  Add a new parameter (should_move).  Update
24555         prototype.  Set *should_move based on indication provided by
24556         move_op_orig_expr_found.
24557
24558 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
24559
24560         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
24561         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
24562         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
24563         * config/rs6000/rs6000.c (rs6000_override_options): Default
24564         avoid-indexed-addresses on for Power6, off for everything else.
24565         (avoiding_indexed_address_p): New function.
24566         (rs6000_legitimize_address): Use it.
24567         (rs6000_legitimate_address): Likewise.
24568         * config/rs6000/rs6000.md (movXX_updateX): Likewise
24569
24570 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
24571
24572         PR tree-optimization/38997
24573         * tree-loop-distribution.c (generate_memset_zero): Use
24574         POINTER_PLUS_EXPR for a pointer addition.
24575
24576 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
24577
24578         * config/s390/s390.md (bswap<mode>2): New pattern added.
24579
24580 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24581
24582         * config/s390/s390.md (*tls_load_31): Added type attribute.
24583
24584 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24585
24586         * config/s390/s390.md: Fix a few comments.
24587
24588 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24589
24590         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
24591         (*tm<mode>_full): Fixed z10prop attribute.
24592         (*tst<mode>_extimm): Fixed z10prop attribute.
24593         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
24594         (*tstqiCCT_cconly): Fixed z10prop attribute.
24595         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
24596         (*movsi_larl): Fixed z10prop attribute.
24597         (*movsi_zarch): Fixed z10prop attribute.
24598         (*movsi_eas): Fixed z10prop attribute.
24599         (*movhi): Fixed z10prop attribute.
24600         (*movqi): Fixed z10prop attribute.
24601         (*movstrictqi): Fixed z10prop attribute.
24602         (*mov<mode>): Fixed z10prop attribute.
24603         (*movcc): Fixed z10prop attribute.
24604         (*sethighpartdi_64): Fixed z10prop attribute.
24605         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
24606         (*negdi2_sign_cc): Fixed z10prop attribute.
24607         (*negdi2_sign): Fixed z10prop attribute.
24608         (*absdi2_sign_cc): Fixed z10prop attribute.
24609         (*absdi2_sign): Fixed z10prop attribute.
24610         (*negabsdi2_sign_cc): Fixed z10prop attribute.
24611         (*negabsdi2_sign): Fixed z10prop attribute.
24612         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
24613         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
24614         (doloop_si64): Fixed z10prop attribute.
24615         (doloop_si31): Fixed z10prop attribute.
24616         (doloop_long): Fixed z10prop attribute.
24617         (indirect_jump): Fixed z10prop attribute.
24618         (nop): Fixed z10prop attribute.
24619         (main_base_64): Fixed z10prop attribute.
24620         (reload_base_64): Fixed z10prop attribute.
24621
24622 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24623
24624         PR rtl-optimization/38740
24625         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
24626         if !optimize.
24627         * config/mips/mips.c (mips_reorg): Likewise.
24628
24629 2009-01-28  Richard Guenther  <rguenther@suse.de>
24630
24631         PR tree-optimization/38926
24632         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
24633         with the correct value id to a value.
24634         (do_regular_insertion): Use the value number of edoubleprime
24635         for the value number of the expr.
24636
24637         Revert
24638         2008-08-21  Richard Guenther  <rguenther@suse.de>
24639
24640         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
24641         a PHI ask VN if it is already available.
24642         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
24643         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
24644
24645 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24646
24647         PR middle-end/38934
24648         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
24649         set to varying whenever max has TREE_OVERFLOW set, similarly
24650         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
24651
24652 2009-01-28  Richard Guenther  <rguenther@suse.de>
24653
24654         PR middle-end/38908
24655         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
24656         uninitialized aggregate uses in call arguments.
24657
24658 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
24659
24660         PR tree-optimization/38984
24661         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
24662         the nothing_id variable if -fno-delete-null-pointer-checks.
24663
24664 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
24665
24666         PR target/38988
24667         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
24668         (set_got_offset_rex64): Ditto.
24669
24670 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
24671
24672         PR target/38941
24673         * doc/extend.texi: Improve local variable with asm reg.
24674
24675 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
24676
24677         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
24678         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
24679         was not supplied then set warn_packed_bitfield_compat to the
24680         default value of 1.
24681         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
24682         against 1.
24683
24684 2009-01-27  Richard Guenther  <rguenther@suse.de>
24685
24686         PR tree-optimization/38503
24687         * cfgexpand.c (expand_gimple_basic_block): Ignore
24688         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
24689         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
24690         variables that cannot have TBAA applied.
24691         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
24692         statements.
24693
24694 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
24695
24696         PR middle-end/38969
24697         * calls.c (initialize_argument_information): Do not wrap complex
24698         arguments in SAVE_EXPR.
24699
24700 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
24701
24702         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
24703         (INSTALL_LIBGCC): Revert typo commit.
24704
24705 2009-01-26  Richard Guenther  <rguenther@suse.de>
24706
24707         PR tree-optimization/38745
24708         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
24709         from special handling.
24710
24711 2009-01-26  Richard Guenther  <rguenther@suse.de>
24712
24713         PR tree-optimization/38745
24714         * tree-ssa.c (execute_update_addresses_taken): Do not include
24715         variables that cannot possibly be a register in not_reg_needs.
24716         Do not clear TREE_ADDRESSABLE on vars that may not become
24717         registers.
24718         * tree-ssa.c (update_alias_info_1): Include those in the set
24719         of addressable vars.
24720
24721 2009-01-26  Richard Guenther  <rguenther@suse.de>
24722
24723         PR middle-end/38851
24724         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
24725         * tree-ssa-dse.c: Include langhooks.h
24726         (execute_simple_dse): Remove stores with zero size.
24727
24728 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
24729
24730         PR c/38957
24731         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
24732         as PLUS_EXPR.
24733
24734 2009-01-24  Julian Brown  <julian@codesourcery.com>
24735
24736         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
24737         config/arm/linux-atomic.c.
24738         * config/arm/linux-atomic.c: New.
24739
24740 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
24741
24742         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
24743         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
24744         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
24745
24746 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
24747
24748         PR c/38938
24749         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
24750         properly.
24751
24752 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
24753
24754         PR tree-optimization/38953
24755         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
24756         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
24757         (gloog): Split the exit of the scop when the scop exit is a loop exit.
24758         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
24759         changed the CFG.
24760
24761 2009-01-24  Paul Brook  <paul@codesourcery.com>
24762
24763         * config/arm/neon.md (neon_type): Move to arm.md.
24764         (neon_mov<VSTRUCT>): Add neon_type attribute.
24765         * config/arm/arm.md (neon_type): Move to here.
24766         (conds): Add "unconditioal" and use as default for NEON insns.
24767
24768 2009-01-24  Ben Elliston  <bje@au.ibm.com>
24769
24770         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
24771         void *' warning from -Wc++-compat.
24772         * Makefile.in (dominance.o-warn): Remove.
24773
24774 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
24775
24776         PR tree-optimization/38932
24777         * fold-const.c (fold_unary_ignore_overflow): New.
24778         * tree.h (fold_unary_ignore_overflow): Declare.
24779         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
24780         * tree-ssa-sccvn.c (visit_reference_op_load,
24781         simplify_unary_expression): Likewise.
24782
24783 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
24784
24785         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
24786         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
24787         regardless of their type.
24788         * c-common.c (handle_packed_attribute): Don't ignore packed on
24789         bitfields.
24790         * c.opt (Wpacked-bitfield-compat): New warning option.
24791         * stor-layout.c (place_field): Warn if offset of a field changed.
24792         * doc/extend.texi (packed): Mention the ABI change.
24793         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
24794         (Warning Options): Add it to the list.
24795
24796 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
24797
24798         * c-opts.c (c_common_post_options): Fix a typo in comments.
24799
24800 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
24801
24802         PR middle-end/38615
24803         * gimplify.c (gimplify_init_constructor): Fix promotion of const
24804         variables to static.
24805         * doc/invoke.texi (-fmerge-all-constants): Update description.
24806
24807 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
24808
24809         PR target/38931
24810         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
24811         (*movdi_1_rex64): Use type "mmx" for alternative 5.
24812
24813 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
24814
24815         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
24816         a word boundary.
24817         (LOCAL_ALIGNMENT): Similarly.
24818
24819 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
24820             Joseph Myers  <joseph@codesourcery.com>
24821
24822         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
24823         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
24824         * config/arm/arm-tune.md: Regenerate.
24825         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
24826         -march=iwmmxt2.
24827
24828 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
24829
24830         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
24831         version number to five.
24832
24833 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
24834
24835         PR c++/38930
24836         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
24837         * c-common.c (set_underlying_type): Likewise.
24838         (is_typedef_decl ): Likewise
24839         * tree.h: Likewise
24840         (set_underlying_type): Likewise.
24841         (is_typedef_type): Likewise.
24842
24843 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
24844
24845         PR middle-end/38587
24846         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
24847         crossing setjmps.
24848
24849 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
24850
24851         PR bootstrap/37660
24852         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
24853         (LIBGCC_SPEC):  Don't define.
24854         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
24855
24856 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
24857
24858         PR rtl-optimization/38879
24859         * alias.c (base_alias_check): Unaligned access via AND address can
24860         alias all surrounding object types except those with sizes equal
24861         or wider than the size of unaligned access.
24862
24863 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
24864
24865         PR c++/26693
24866         * c-decl.c (clone_underlying_type): Move this ...
24867         * c-common.c (set_underlying_type): ... here.
24868         Also, make sure the function properly sets TYPE_STUB_DECL() on
24869         the newly created typedef variant type.
24870         (is_typedef_decl ): New entry point.
24871         * tree.h: Added a new member member_types_needing_access_check to
24872         struct tree_decl_non_common.
24873         (set_underlying_type): New entry point.
24874         (is_typedef_type): Likewise.
24875
24876 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
24877
24878         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
24879         Check whether two instructions have memory references that
24880         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
24881         are helper functions for traversing.
24882         * alias.h (insn_alias_sets_confilict_p): New prototypes.
24883         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
24884         not to draw dependency edge for instructions with non-conflicting
24885         alias sets.
24886
24887 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
24888
24889         PR other/38758
24890         * longlong.h: Update copyright years.  Use soft-fp license notice.
24891         Sync __clz_tab declaration with glibc.
24892
24893 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
24894
24895         PR target/30687
24896         * doc/extend.texi (syscall_linkage): New.
24897         (version_id): Modify.
24898
24899 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24900             Richard Guenther  <rguenther@suse.de>
24901
24902         PR tree-optimization/38747
24903         PR tree-optimization/38748
24904         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
24905         conversion if the base address is an indirect reference and the
24906         aliasing sets could cause issues.
24907
24908 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
24909
24910         * common.opt (fgraphite, fgraphite-identity): Add comment for
24911         explaining why these options are not documented.
24912
24913 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
24914
24915         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
24916         gimple_call_lhs is NULL.
24917
24918 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
24919
24920         PR target/38868
24921         * emit-rtl.c (adjust_address_1): Make sure memref is never
24922         overwritten.
24923
24924 2009-01-20  Ben Elliston  <bje@au.ibm.com>
24925
24926         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
24927         const qualifier from arg parameter. Remove unnecessary cast to char *.
24928         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
24929         const qualifier from arg 2.
24930
24931 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
24932
24933         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
24934
24935 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
24936
24937         PR c/38869
24938         * rtl.h (reinit_regs): New prototype.
24939         * regclass.c: Include ira.h.
24940         (reinit_regs): New.
24941         * Makefile.in (regclass.o): Add ira.h.
24942         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
24943
24944 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
24945
24946         PR target/38736
24947         * c-common.c (handle_aligned_attribute): Use
24948         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
24949         default alignment value.
24950
24951         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
24952
24953         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
24954         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
24955
24956         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
24957         __BIGGEST_ALIGNMENT__.
24958
24959         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
24960
24961 2009-01-18  Richard Guenther  <rguenther@suse.de>
24962
24963         PR tree-optimization/38819
24964         * tree-flow.h (operation_could_trap_helper_p): Declare.
24965         * tree-eh.c (operation_could_trap_helper_p): Export.
24966         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
24967         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
24968         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
24969         are about to insert a possibly trapping instruction and fail
24970         in this case.
24971
24972 2009-01-18  Andreas Schwab  <schwab@suse.de>
24973
24974         * doc/install.texi (Configuration): Remove obsolete paragraph
24975         about use of --with-gnu-ld with --with-gnu-as.
24976
24977 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
24978
24979         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
24980         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
24981         Follow spelling conventions.
24982
24983 2009-01-18  Ben Elliston  <bje@au.ibm.com>
24984
24985         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
24986         C++ warning about implicit conversion from void * to struct
24987         bitmap_head_def *.
24988         (bitmap_obstack_free): Likewise for bitmap_element *.
24989         * Makefile.in (bitmap.o-warn): Remove.
24990
24991 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
24992
24993         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
24994
24995 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
24996             Tobias Grosser  <tobi.grosser@amd.com>
24997
24998         * graphite.c (graphite_trans_scop_block): Do not block single
24999         nested loops.
25000
25001 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
25002
25003         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25004         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25005         test with assertion.
25006
25007 2009-01-16  Richard Guenther  <rguenther@suse.de>
25008
25009         PR tree-optimization/38835
25010         PR middle-end/36227
25011         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25012         and INT + PTR -> (INT)(PTR p+ INT) folding.
25013         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25014
25015 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
25016
25017         PR target/38554
25018         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25019         the subreg from a lowpart subreg if it is also casting the value.
25020
25021 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25022             Tobias Grosser  <tobi.grosser@amd.com>
25023
25024         * graphite.c (compare_prefix_loops): New.
25025         (build_scop_canonical_schedules): Rewritten.
25026         (graphite_transform_loops): Move build_scop_canonical_schedules
25027         after build_scop_iteration_domain.
25028
25029 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25030             Tobias Grosser  <tobi.grosser@amd.com>
25031
25032         * graphite.c (add_conditions_to_domain): Add the loops to
25033         the dimension of the iteration domain.  Do copy the domain
25034         only when it exists.
25035         (build_scop_conditions_1): Do not call add_conditions_to_domain.
25036         (add_conditions_to_constraints): New.
25037         (can_generate_code_stmt, can_generate_code): Removed.
25038         (gloog): Do not call can_generate_code.
25039         (graphite_transform_loops): Call add_conditions_to_constraints
25040         after building the iteration domain.
25041
25042 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
25043
25044         PR tree-optimization/38789
25045         * tree-ssa-threadedge.c
25046         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
25047         __builtin_constant_p.
25048
25049 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
25050
25051         * dce.c (delete_unmarked_insns): Reversed the order that insns are
25052         examined before deleting them.
25053
25054 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
25055
25056         * function.c (aggregate_value_p): Correctly extract the function
25057         type from CALL_EXPR_FN lookup.
25058
25059 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25060
25061         * config/picochip/picochip.c (picochip_override_options): Revert
25062         CFI asm flag disable commited previously.
25063
25064 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25065             Tobias Grosser  <tobi.grosser@amd.com>
25066             Jan Sjodin  <jan.sjodin@amd.com>
25067
25068         * graphite.c (scan_tree_for_params): On substractions negate
25069         all the coefficients of the term.
25070         (clast_to_gcc_expression_red): New.  Handle reduction expressions
25071         of more than two operands.
25072         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
25073         (get_vdef_before_scop): Handle also the case of default definitions.
25074
25075 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
25076
25077         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
25078         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
25079         Also use them when walking CALL_INSN_FUNCTION_USAGE.
25080
25081 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
25082             Joey Ye  <joey.ye@intel.com>
25083
25084         PR middle-end/37843
25085         * cfgexpand.c (expand_stack_alignment): Don't update stack
25086         boundary nor check incoming stack boundary here.
25087         (gimple_expand_cfg): Update stack boundary and check incoming
25088         stack boundary here.
25089
25090 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
25091
25092         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25093
25094 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
25095
25096         PR rtl-optimization/38245
25097         * calls.c (expand_call): Add stack arguments to
25098         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25099         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25100         in regs and partially in memory or BLKmode arguments.
25101         (emit_library_call_value_1): Add stack arguments to
25102         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25103         ACCUMULATE_OUTGOING_ARGS).
25104         * dce.c: Include tm_p.h.
25105         (find_call_stack_args): New function.
25106         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
25107         argument.
25108         (mark_insn): Call find_call_stack_args for CALL_Ps.
25109         (prescan_insns_for_dce): Walk insns backwards in bb rather than
25110         forwards.  Allocate and free arg_stores bitmap if needed, pass it
25111         down to deletable_insn_p, don't mark stores set in arg_stores
25112         bitmap, clear the bitmap at the beginning of each bb.
25113         * Makefile.in (dce.o): Depend on $(TM_P_H).
25114
25115 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
25116
25117         PR target/22599
25118         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25119         to make sure the insn is a conditional test (bug 22599).  Reformat a
25120         few long lines.
25121
25122 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
25123
25124         PR middle-end/38431
25125         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25126         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25127         (gloog): Do not call cleanup_tree_cfg.
25128         (graphite_transform_loops): Call cleanup_tree_cfg after all
25129         scops have been code generated.
25130
25131 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
25132         * doc/gty.texi (Invoking the garbage collector): Added new node
25133         and section documenting ggc_collect.
25134
25135 2009-01-14  Richard Guenther  <rguenther@suse.de>
25136
25137         PR tree-optimization/38826
25138         PR middle-end/38477
25139         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25140         initialization notes only if we actually emitted a warning.
25141         (intra_create_variable_infos): Add constraints for a result decl
25142         that is passed by hidden reference.
25143         (build_pred_graph): Mark all related variables non-direct on
25144         address-taking.
25145
25146 2009-01-14  Nick Clifton  <nickc@redhat.com>
25147
25148         * ira-conflicts.c: Include addresses.h for the definition of
25149         base_reg_class.
25150         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25151         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25152
25153 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
25154
25155         PR target/38811
25156         * Makefile.in (ira-lives.o): Add except.h.
25157
25158         * ira-lives.c: Include except.h.
25159         (process_bb_node_lives): Process can_throw_internal.
25160
25161 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
25162
25163         PR rtl-optimization/38774
25164         * combine.c (simplify_set): When undoing cc_use change, don't do
25165         PUT_CODE on the newly created comparison, but instead put back the
25166         old comparison.
25167
25168 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
25169
25170         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25171         values.  Remove duplicate arm8 entry.
25172
25173 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25174
25175         PR tree-optimization/38786
25176         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25177         the SSA_NAME case of expand_scalar_variables_expr.
25178         Set the type of an expression to the type of its assign statement.
25179         (expand_scalar_variables_expr): Also gather the scalar computation
25180         used to index the memory access.  Do not pass loop_p.
25181         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
25182         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25183         the gimple_stmt_iterator where it inserts new code.
25184         Do not pass loop_p.
25185         (copy_bb_and_scalar_dependences): Do not pass loop_p.
25186         (translate_clast): Update call to copy_bb_and_scalar_dependences.
25187
25188 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25189
25190         * graphite.h (debug_value): Removed.
25191         * graphite.c (debug_value): Removed.
25192
25193 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25194
25195         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25196         ldrd/strd with two 32-bit instructions.
25197
25198 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25199
25200         * config/arm/arm.c (struct processors): Pass for speed down into
25201         cost helper functions.
25202         (const_ok_for_op): Handle COMPARE and inequality nodes.
25203         (arm_rtx_costs_1): Rewrite.
25204         (arm_size_rtx_costs): Update prototype.
25205         (arm_rtx_costs): Pass speed down to helper functions.
25206         (arm_slowmul_rtx_costs): Rework cost calculations.
25207         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25208         (arm_9e_rtx_costs): Likewise.
25209
25210 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
25211
25212         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25213         relocations of local symbols wider than UNITS_PER_WORD are not valid.
25214         (alpha_legitimize_address): Do not split local symbols wider than
25215         UNITS_PER_WORD into HIGH/LO_SUM parts.
25216
25217 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
25218
25219         PR bootstrap/38580
25220         * gcc.c (process_command): Replace call to execvp with calls
25221         to pex_one and exit.
25222
25223 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
25224
25225         PR target/29141
25226         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25227         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25228         variant for devices with 3-byte PC.
25229         (__tablejump_elpm__): New.
25230
25231 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25232
25233         PR c/32041
25234         * c-parser.c (c_parser_postfix_expression): Allow `->' in
25235         offsetof member-designator, handle it as `[0].'.
25236
25237 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25238
25239         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25240         function when not using named sections on targets with named sections
25241         if branch distance is less than 262132.
25242
25243 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
25244
25245         * combine.c (combine_instructions):  Recompute
25246         optimize_this_for_speed_p  for each BB in the main combine loop.
25247
25248 2009-01-12  Tomas Bily  <tbily@suse.cz>
25249
25250         PR middlend/38385
25251         * tree-loop-distribution.c (prop_phis): New function.
25252         (generate_builtin): Call prop_phis.
25253         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
25254
25255 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25256
25257         PR tree-optimization/38807
25258         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
25259         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
25260
25261 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
25262
25263         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
25264         subreg of op0 to the original op0.
25265
25266 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
25267
25268         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
25269
25270 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
25271
25272         PR debug/7055
25273         * mips-tfile.c (parse_def): Fix parsing of def strings
25274         starting with digits.
25275
25276 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
25277
25278         PR target/38695
25279         * config/arm/arm.c (arm_is_long_call_p): Don't call
25280         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
25281
25282 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
25283
25284         * regrename.c (regrename_optimize): Fix dumping.
25285         (find_oldest_value_reg): Preserve REG_POINTER.
25286         (copy_hardreg_forward_1): Likewise.
25287
25288 2009-01-09  Diego Novillo  <dnovillo@google.com>
25289
25290         * gimple.h (struct gimple_statement_base) <uid>: Document
25291         the restrictions on its use.
25292         (gimple_uid): Tidy.
25293         (gimple_set_uid): Tidy.
25294
25295 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25296
25297         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
25298         zero guard even if align_bytes != 0 and count is smaller than
25299         size_needed.
25300
25301 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
25302
25303         PR rtl-optimization/38495
25304         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
25305         (add_range_and_copies_from_move_list): Print all added ranges.
25306         Add ranges to memory optimized destination.
25307
25308 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25309
25310         PR target/38686
25311         PR target/38708
25312         * config/i386/i386.c (override_options): Reject
25313         -mstringop-strategy=rep_8byte with -m32.
25314         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
25315         to 1.  Do count comparison against epilogue_size_needed at compile
25316         time even when count_exp was constant forced into register.  For
25317         size_needed don't jump to epilogue, instead just avoid aligning
25318         and invoke the body algorithm.  If need_zero_guard, add zero guard
25319         even if count is non-zero, but smaller than size_needed + number of
25320         bytes that could be stored for alignment.
25321         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
25322         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
25323         but smaller than size_needed + number of bytes that could be stored
25324         for alignment.  Compare size_needed with epilogue_size_needed instead
25325         of desired_align - align, don't adjust size_needed, pass
25326         epilogue_size_needed to the epilogue expanders.
25327
25328         PR c/35742
25329         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
25330
25331 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25332
25333         * pa.c (last_address): Change to unsigned.
25334         (update_total_code_bytes): Change argument to unsigned.  Don't
25335         check if insn addresses are set.
25336         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
25337         addresses are not set.
25338         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
25339
25340 2009-01-09  Nick Clifton  <nickc@redhat.com>
25341
25342         * config/sh/symbian.c: Replace uses of DECL_INLINE with
25343         DECL_DECLARED_INLINE_P.
25344
25345 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25346
25347         PR middle-end/38347
25348         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
25349         GET_MODE (op0) in operand_subword_force calls.
25350
25351         PR middle-end/38771
25352         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
25353         fold_convert arg0 operands to TREE_TYPE (op0) first.
25354
25355 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
25356
25357         * params.def (ira-max-conflict-table-size): Decrease default value
25358         to 1000.
25359
25360 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
25361
25362         PR tree-optimization/37031
25363         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
25364         on parameter_set.
25365         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
25366         allocate it using gc instead of heap, use VEC_quick_push instead of
25367         VEC_safe_push.
25368         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
25369         instead of heap, use VEC_quick_push instead of VEC_safe_push.
25370         * tree-data-ref.h (struct access_matrix): Change matrix to gc
25371         allocated vector from heap allocated.
25372         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
25373         * tree-loop-linear.c (linear_transform_loops): Allocate nest
25374         vector only after perfect_loop_nest_depth call.
25375
25376 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
25377             Jan Sjodin  <jan.sjodin@amd.com>
25378
25379         PR tree-optimization/38559
25380         * graphite.c (debug_value, copy_constraint,
25381         swap_constraint_variables, scale_constraint_variable, ): New.
25382         (get_lower_bound, get_upper_bound): Removed.
25383         (graphite_trans_bb_strip_mine): Clean up this code that works
25384         only for constant number of iterations.  Fully copy upper and
25385         lower bound constraints, not only the constant part of them.
25386         * graphite.h (debug_value): Declared.
25387
25388 2009-01-08  Ira Rosen  <irar@il.ibm.com>
25389
25390         PR tree-optimization/37194
25391         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
25392         Don't add the cost of cost model guard in prologue to scalar
25393         outside cost in case of known number of iterations.
25394
25395 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25396             Alan Modra  <amodra@bigpond.net.au>
25397
25398         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
25399         non-word-aligned REG+CONST addressing.
25400
25401 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25402
25403         PR target/38706
25404         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
25405         free_after_compilation when outputting a thunk.
25406         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
25407         Do not call free_after_compilation here.
25408
25409 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25410
25411         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
25412         (ix86_valid_target_attribute_inner_p): Ditto.
25413
25414 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
25415
25416         PR tree-optimization/38492
25417         PR tree-optimization/38498
25418         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
25419         * tree-chrec.h (scev_is_linear_expression): Declared.
25420         * graphite.c (graphite_cannot_represent_loop_niter): New.
25421         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
25422         (graphite_loop_normal_form): Use gcc_assert.
25423         (scan_tree_for_params): Use CASE_CONVERT.
25424         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
25425         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
25426         Use gcc_assert.  Discard scops that contain unhandled cases.
25427         (build_scop_conditions): Return a boolean status for unhandled cases.
25428         (strip_mine_profitable_p): Print the loop number, not its depth.
25429         (is_interchange_valid): Pass the depth of the loop nest, don't
25430         recompute it wrongly.
25431         (graphite_trans_bb_block): Same.
25432         (graphite_trans_bb_block): Print tentative of loop blocking.
25433         (graphite_trans_scop_block): Do not print that the loop has been
25434         blocked.
25435         (graphite_transform_loops): Do not handle scops that contain condition
25436         scalar phi nodes.
25437
25438 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
25439
25440         AVX Programming Reference (December, 2008)
25441         * config/i386/avxintrin.h (_mm256_stream_si256): New.
25442         (_mm256_stream_pd): Likewise.
25443         (_mm256_stream_ps): Likewise.
25444
25445         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
25446         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
25447         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
25448         (bdesc_special_args): Add __builtin_ia32_movntdq256,
25449         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
25450         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
25451         (ix86_expand_special_args_builtin): Likewise.
25452
25453         * config/i386/sse.md (AVXMODEDI): New.
25454         (avx_movnt<mode>): Likewise.
25455         (avx_movnt<mode>): Likewise.
25456         (<sse>_movnt<mode>): Remove AVX support.
25457         (sse2_movntv2di): Likewise.
25458
25459 2009-01-07  Richard Guenther  <rguenther@suse.de>
25460
25461         PR middle-end/38751
25462         * fold-const.c (extract_muldiv): Remove obsolete comment.
25463         (fold_plusminus_mult_expr): Undo MINUS_EXPR
25464         to PLUS_EXPR canonicalization for the canonicalization.
25465
25466 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
25467
25468         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
25469         hosted cross-compilers generating less efficient code.
25470
25471 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25472
25473         * function.h (rtl_data): Add a dbr_scheduled_p field.
25474         * reorg.c (dbr_schedule): Set it.
25475         (gate_handle_delay_slots): Check it.
25476         * config/mips/mips.c (mips_base_delayed_branch): Delete.
25477         (mips_reorg): Check flag_delayed_branch instead of
25478         mips_base_delayed_branch.
25479         (mips_override_options): Don't set mips_base_delayed_branch
25480         or flag_delayed_branch.
25481
25482 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25483
25484         PR rtl-optimization/38426.
25485         * ira.c (ira): Set current_function_is_leaf earlier.
25486
25487 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
25488
25489         PR rtl-optimization/38722
25490         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
25491         too early, only set a flag and modify after last possible
25492         undo_all point.
25493
25494 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
25495
25496         PR c/34252
25497         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
25498         * real.c (decimal_single_format): Correct values of emin and emax.
25499         (decimal_double_format): Ditto.
25500         (decimal_quad_format): Ditto.
25501         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
25502         computation of DECnn_MIN and DECnn_MAX for corrected values of
25503         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
25504         __DECnn_MIN__, and adjust its computation for the corrected value
25505         of emin.
25506
25507 2009-01-06  Jan Hubicka  <jh@suse.cz>
25508
25509         PR target/38744
25510         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
25511
25512 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
25513
25514         * doc/contrib.texi (Contributors): Slightly adjust the end note.
25515         Add Robert Clark to the list of testers.
25516
25517 2009-01-06  Jan Hubicka  <jh@suse.cz>
25518             Kai Tietz  <kai.tietz@onevision.com>
25519
25520         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
25521         * config/i386/i386.c (ix86_expand_call): Add clobbers.
25522
25523 2009-01-06  Jan Hubicka  <jh@suse.cz>
25524             Kai Tietz  <kai.tietz@onevision.com>
25525
25526         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
25527         for w64 ABI.
25528         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
25529         (ix86_nsaved_regs): Count only general purpose regs.
25530         (ix86_nsaved_sseregs): New.
25531         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
25532         to 16 for w64; compute padding and size of sse reg save area.
25533         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
25534         general purpose regs.
25535         (ix86_emit_save_sse_regs_using_mov): New.
25536         (ix86_expand_prologue): Save SSE regs if needed.
25537         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
25538         (ix86_emit_restore_sse_regs_using_mov): New.
25539         (ix86_expand_epilogue): Save SSE regs if needed.
25540
25541 2009-01-06  Jan Hubicka  <jh@suse.cz>
25542             Kai Tietz  <kai.tietz@onevision.com>
25543
25544         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
25545         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
25546         functions when accumulate outgoing args is off.
25547
25548 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25549
25550         PR bootstrap/38742
25551         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
25552         before using pseudos_have_intersected_live_ranges_p.
25553
25554         * ira-int.h (ira_assert): Always define.
25555
25556 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25557
25558         AVX Programming Reference (December, 2008)
25559         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
25560         (_mm256_permute2_pd): Likewise.
25561         (_mm_permute2_ps): Likewise.
25562         (_mm256_permute2_ps): Likewise.
25563         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
25564         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
25565
25566         * config/i386/i386.c (ix86_builtins): Remove
25567         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
25568         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
25569         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
25570         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
25571         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
25572         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
25573         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
25574         __builtin_ia32_vpermil2ps256.
25575         (ix86_init_mmx_sse_builtins): Updated.
25576         (ix86_expand_args_builtin): Likewise.
25577
25578 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25579
25580         * pa.c (output_call): Relocate non-jump insns in the delay slot of
25581         long absolute calls when generating PA 2.0 code.
25582
25583 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
25584
25585         PR rtl-optimization/38583
25586         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
25587
25588         * params.def (ira-max-conflict-table-size): New.
25589
25590         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
25591
25592         * ira.h (ira_conflicts_p): New external definition.
25593
25594         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
25595         table.  Report this.  Return result of building.
25596         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
25597         building conflict table.
25598
25599         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
25600         (ira_color): Use ira_conflicts_p.
25601
25602         * global.c: Include ira.h.
25603         (pseudo_for_reload_consideration_p, build_insn_chain): Use
25604         ira_conflicts_p.
25605
25606         * Makefile.in (global.o): Add ira.h.
25607
25608         * ira-build.c (mark_all_loops_for_removal,
25609         propagate_some_info_from_allocno): New.
25610         (remove_unnecessary_allocnos): Call
25611         propagate_some_info_from_allocno.
25612         (remove_low_level_allocnos): New.
25613         (remove_unnecessary_regions): Add parameter.  Call
25614         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
25615         parameter to remove_unnecessary_regions.
25616         (ira_build): Remove all regions but root if the conflict table was
25617         not built.  Update conflict hard regs for allocnos crossing calls.
25618
25619         * ira.c (ira_conflicts_p): New global.
25620         (ira): Define and use ira_conflicts_p.
25621
25622         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25623         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
25624         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
25625
25626 2009-01-06  Ben Elliston  <bje@au.ibm.com>
25627
25628         * gengtype-lex.l (YY_NO_INPUT): Define.
25629
25630 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25631
25632         PR c/34911
25633         * c-common.c (handle_vector_size_attribute): Also reject
25634         BOOLEAN_TYPE types.
25635
25636 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
25637
25638         PR tree-optimization/38492
25639         * graphite.c (rename_map_elt, debug_rename_elt,
25640         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
25641         rename_map_elt_info, eq_rename_map_elts,
25642         get_new_name_from_old_name, bb_in_sese_p): Moved around.
25643         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
25644         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
25645         (sese_build_livein_liveouts): New.
25646         (new_sese, free_sese): New.
25647         (new_scop): Call new_sese.
25648         (free_scop): Call free_sese.
25649         (rename_variables_from_edge, rename_phis_end_scop): Removed.
25650         (register_old_new_names): Renamed register_old_and_new_names.
25651         (register_scop_liveout_renames, add_loop_exit_phis,
25652         insert_loop_close_phis, struct igp,
25653         default_liveout_before_guard, add_guard_exit_phis,
25654         insert_guard_phis, copy_renames): New.
25655         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
25656         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
25657         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
25658         (scop_adjust_phis_for_liveouts): New.
25659         (gloog): Call scop_adjust_phis_for_liveouts.
25660
25661         * graphite.h (struct sese): Documented.  Added fields liveout,
25662         num_ver and livein.
25663         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
25664         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
25665         (struct scop): Added field liveout_renames.
25666         (SCOP_LIVEOUT_RENAMES): New.
25667
25668 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25669
25670         PR tree-optimization/38510
25671         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
25672         (translate_clast): Call recompute_all_dominators before
25673         graphite_verify.
25674         (gloog): Call recompute_all_dominators before graphite_verify.
25675
25676 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25677             Jan Sjodin  <jan.sjodin@amd.com>
25678
25679         PR tree-optimization/38500
25680         * graphite.c (create_sese_edges): Call fix_loop_structure after
25681         splitting blocks.
25682
25683 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
25684
25685         * config.gcc: Add m32r*-*-rtems*.
25686         * config/m32r/rtems.h: New file.
25687
25688 2009-01-05  Ben Elliston  <bje@au.ibm.com>
25689
25690         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
25691         (.po.pox): Likewise.
25692         (po/gcc.pot): Likewise.
25693
25694 2009-01-04  David S. Miller  <davem@davemloft.net>
25695
25696         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
25697         (STARTING_FRAME_OFFSET): Always set to zero.
25698
25699 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25700
25701         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
25702         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
25703         fixed-point types, and vectors of the same.
25704
25705 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25706
25707         * config/mips/sync.md (*mb_barrier): Rename to...
25708         (*memory_barrier): ...this.
25709
25710 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
25711
25712         * doc/extend.texi (Function Attributes): Move @cindex after @item
25713         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
25714         and put in alphabetical order. Fix 'target' name and put in order.
25715         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
25716         typos.
25717
25718 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
25719
25720         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
25721         (memory_barrier): Expand as unspec instead of unspec_volatile.
25722         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25723         (*memory_barrier): Define as unspec instead of unspec_volatile.
25724         Use (match_dup 0) as input operand.
25725
25726         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
25727         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
25728         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
25729         scratch register.  Remove operand 1.
25730         (*stbar): Define as unspec instead of unspec_volatile.
25731         Use (match_dup 0) as input operand, remove (const_int 8).
25732         (*membar): Define as unspec instead of unspec_volatile.
25733         Use (match_dup 0) as input operand, remove input operand 2.
25734
25735         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
25736         (memory_barrier): Expand as unspec instead of unspec_volatile.
25737         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25738         (*memory_barrier): Define as unspec instead of unspec_volatile.
25739         Use (match_dup 0) as input operand.
25740
25741         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
25742         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25743         Set volatile flag on operand 0.
25744         (*memory_barrier): New insn pattern.
25745
25746         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
25747         insn operands.
25748         (*memory_barrier): Use (match_dup 0) as input operand.
25749
25750         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
25751         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25752         Set volatile flag on operand 0.
25753         (*mb_internal): New insn pattern.
25754
25755         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
25756
25757 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
25758
25759         PR middle-end/38586
25760         * function.c (struct temp_slot): Move to the section of the file
25761         that deals with temp slots.  Remove field 'address'.
25762         (temp_slot_address_table): New hash table of address -> temp slot.
25763         (struct temp_slot_address_entry): New struct, items for the table.
25764         (temp_slot_address_compute_hash, temp_slot_address_hash,
25765         temp_slot_address_eq, insert_temp_slot_address): Support functions
25766         for the new table.
25767         (find_temp_slot_from_address): Rewrite to use the new hash table.
25768         (remove_unused_temp_slot_addresses): Remove addresses of temp
25769         slots that have been made available.
25770         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
25771         worker function for remove_unused_temp_slot_addresses.
25772         (assign_stack_temp_for_type): Don't clear the temp slot address list.
25773         Add the temp slot address to the address -> temp slot map.
25774         (update_temp_slot_address): Update via insert_temp_slot_address.
25775         (free_temp_slots): Call remove_unused_temp_slot_addresses.
25776         (pop_temp_slots): Likewise.
25777         (init_temp_slots): Allocate the address -> temp slot map, or empty
25778         the map if it is already allocated.
25779         (prepare_function_start): Initialize temp slot processing.
25780
25781 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
25782
25783         PR middle-end/38584
25784         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
25785         Calculate the size of all stack vars assuming no packing of stack
25786         vars will happen, replacing a quadratic algorithm with a linear one.
25787
25788 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
25789
25790         PR target/38707
25791         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
25792         can't be used.
25793
25794 2009-01-03  Diego Novillo  <dnovillo@google.com>
25795
25796         * doc/contrib.texi: Update contributions.
25797
25798 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
25799
25800         PR c++/38705
25801         * builtins.c (fold_builtin_memory_op): Give up if either operand
25802         is volatile.  Set srctype or desttype to non-qualified version
25803         of the other type.
25804
25805         PR c/38700
25806         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
25807         and FUNCTION_DECLs.
25808
25809 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
25810
25811         PR rtl-optimization/35805
25812         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
25813         problem if fast dce is able to remove any instructions.
25814         * dce.c (dce_process_block): Fix dump message.
25815
25816 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
25817
25818         PR 33649
25819         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
25820
25821 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
25822
25823         PR middle-end/38690
25824         * tree-flow.h (op_code_prio, op_prio): New prototypes.
25825         * tree-pretty-print.c (op_code_prio): New function.
25826         (op_prio): No longer static.  Use op_code_prio.
25827         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
25828         Use op_prio and op_code_prio to determine if () should be
25829         printed around operand(s) or not.
25830
25831         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
25832         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
25833         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
25834         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
25835         pp_character instead of pp_string for single letter printing.
25836
25837 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
25838
25839         * doc/extend.texi: Fix '#pragma GCC option' typo.
25840
25841 2009-01-02  Richard Guenther  <rguenther@suse.de>
25842
25843         * doc/install.texi (--enable-checking): Mention different
25844         default for stage1.
25845         (--enable-stage1-checking): Document.
25846
25847 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
25848
25849         PR middle-end/30142
25850         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
25851         case to be an error.
25852
25853 2009-01-02  Ben Elliston  <bje@au.ibm.com>
25854
25855         * config/fp-bit.h (pack_d): Constify argument.
25856         * config/fp-bit.c (makenan): Constify return type. Remove casts.
25857         (isnan): Constify argument.
25858         (isinf): Likewise.
25859         (iszero): Likewise.
25860         (pack_d): Likewise.
25861         (_fpadd_parts): Constify return type.
25862         (_fpmul_parts): Likewise.
25863         (_fpdiv_parts): Likewise.
25864
25865 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
25866
25867         PR c/36489
25868         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
25869         warn about overwriting initializer with side-effects or
25870         -Woverride-init if !IMPLICIT.
25871         (output_init_element): Likewise.  Pass IMPLICIT down to
25872         add_pending_init.
25873         (process_init_element): Add IMPLICIT argument.  Pass it down
25874         to output_init_element.
25875         (push_init_element, pop_init_level, set_designator): Adjust
25876         process_init_element callers.
25877         (set_nonincremental_init, set_nonincremental_init_from_string):
25878         Adjust add_pending_init callers.
25879         (output_pending_init_elements): Adjust output_init_element callers.
25880         * c-tree.h (process_init_element): Adjust prototype.
25881         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
25882         process_init_element callers.
25883
25884 \f
25885 Copyright (C) 2009 Free Software Foundation, Inc.
25886
25887 Copying and distribution of this file, with or without modification,
25888 are permitted in any medium without royalty provided the copyright
25889 notice and this notice are preserved.