OSDN Git Service

* config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-22  Richard Guenther  <rguenther@suse.de>
2
3         PR middle-end/41395
4         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
5         arrays really properly.
6
7 2009-09-22  Richard Henderson  <rth@redhat.com>
8
9         PR target/41246
10         * target.h (struct gcc_target): Add asm_out.trampoline_template,
11         calls.static_chain, calls.trampoline_init,
12         calls.trampoline_adjust_address.
13         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
14         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
15         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
16         * builtins.c (expand_builtin_setjmp_receiver): Use
17         targetm.calls.static_chain; only clobber registers.
18         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
19         set up memory attributes properly for the trampoline block.
20         (expand_builtin_adjust_trampoline): Use
21         targetm.calls.trampoline_adjust_address.
22         * calls.c (prepare_call_address): Add fndecl argument.  Use
23         targetm.calls.static_chain.
24         * df-scan.c (df_need_static_chain_reg): Remove.
25         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
26         consolodate static chain handling.
27         * doc/tm.texi: Document new hooks.
28         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
29         (init_emit_regs): Don't initialize them.
30         * expr.h (prepare_call_address): Update decl.
31         * final.c (profile_function): Use targetm.calls.static_chain.
32         * function.c (expand_function_start): Likewise.
33         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
34         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
35         only clobber registers.
36         * targhooks.c (default_static_chain): New.
37         (default_asm_trampoline_template, default_trampoline_init): New.
38         (default_trampoline_adjust_address): New.
39         * targhooks.h: Declare them.
40         * varasm.c (assemble_trampoline_template): Use
41         targetm.asm_out.trampoline_template.  Make the memory block const
42         and set its size.
43
44         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
45         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
46         differences into the TARGET_ABI_OPEN_VMS code block.
47         (TARGET_TRAMPOLINE_INIT): New.
48         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
49         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
50         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
51         (INITIALIZE_TRAMPOLINE): Remove.
52
53         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
54         (TRAMPOLINE_TEMPLATE): Merge with ...
55         (INITIALIZE_TRAMPOLINE): ... this and move ...
56         * config/arc/arc.c (arc_trampoline_init): ... here.
57         (TARGET_TRAMPOLINE_INIT): New.
58
59         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
60         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
61         (arm_asm_trampoline_template): New.
62         (arm_trampoline_init, arm_trampoline_adjust_address): New.
63         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
64         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
65         code to arm_asm_trampoline_template.
66         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
67         arm_trampoline_adjust_address.
68         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
69         adjust for target hook parameters.
70
71         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Remove.
72
73         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
74         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
75         (bfin_trampoline_init): Rename from initialize_trampoline;
76         make static; update for target hook parameters.
77         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
78         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
79         bfin_asm_trampoline_template.
80         (INITIALIZE_TRAMPOLINE): Remove.
81
82         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
83         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
84         cris_trampoline_init): New.
85         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
86         cris_asm_trampoline_template.
87         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
88         adjust for target hook parameters.
89
90         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
91
92 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
93
94         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
95         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
96
97         * reload1.c (reload): Call wrap_constant when substituting
98         reg for equiv inside of DEBUG_INSNs.
99
100         PR bootstrap/41405
101         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
102         add_call_src_coords_attributes, add_high_low_attributes,
103         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
104         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
105         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
106         when -gdwarf-2 -gstrict-dwarf.
107         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
108         -gdwarf-[23] -gstrict-dwarf.
109         (address_of_int_loc_descriptor, loc_descriptor,
110         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
111         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
112         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
113
114 2009-09-22  Richard Guenther  <rguenther@suse.de>
115
116         PR tree-optimization/41428
117         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
118         (ccp_finalize): Pass it to substitute_and_fold.
119
120 2009-09-22  Richard Guenther  <rguenther@suse.de>
121
122         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
123         (substitute_and_fold): Adjust prototype.
124         * tree-vrp.c (vrp_evaluate_conditional): Make static.
125         (simplify_stmt_using_ranges): Likewise.
126         (fold_predicate_in): Move here from tree-ssa-propagate.c.
127         (vrp_fold_stmt): New function.
128         (vrp_finalize): Pass it to substitute_and_fold.
129         * tree-flow.h (vrp_evaluate_conditional): Remove.
130         (simplify_stmt_using_ranges): Likewise.
131         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
132         * tree-ssa-copy.c (fini_copy_prop): Likewise.
133         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
134         member.
135         (fold_predicate_in): Move to tree-vrp.c.
136         (substitute_and_fold): Use the callback instead of calling into
137         tree-vrp.c functions directly.
138
139 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
140
141         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
142         comparison warning on rs6000.
143
144         PR middle-end/41429
145         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
146         GIMPLE_EH_MUST_NOT_THROW cleanup.
147         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
148
149 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
150
151         PR middle-end/41260
152         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
153         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
154         LIB_SPEC for darwin10 and later since it always uses the unwinder in
155         libSystem which is derived from the gcc 4.2.1 unwinder.
156
157 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
158
159         PR middle-end/41357
160         * varasm.c (default_encode_section_info): Copy TLS model into
161         sym_ref flags regardless of backend support for TLS, for all
162         model types except TLS_MODEL_EMULATED.
163
164 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
165
166         PR bootstrap/41404
167         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
168         we can handle it correctly.
169
170 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
171
172         * doc/install.texi (os2): Remove section.
173
174 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
175
176         * doc/standards.texi (Objective-C): Adjust two URLs.
177
178 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
179
180         * tree-tailcall.c (process_assignment): Don't check if a multiplication
181         or an addition are already present.
182         (find_tail_calls): Combine multiple additions and multiplications.
183         (adjust_accumulator_values): Emit accumulators.
184
185 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
186
187         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
188         xmm register restore.
189
190 2009-09-21  Jan Hubicka  <jh@suse.cz>
191
192         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
193         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
194         restore at the end.
195
196 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
197
198         * stor-layout.c (layout_type): Remove obsolete code.
199
200 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
201
202         PR middle-end/41395
203         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
204
205 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
206
207         PR middle-end/30789
208         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
209         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
210         (fold_builtin_2, do_mpc_arg1): Update accordingly.
211         * fold-const.c (const_binop): Likewise.
212         * real.h (do_mpc_arg2): Update prototype.
213
214 2009-09-20  Jan Hubicka  <jh@suse.cz>
215
216         * dwarf2out.c (add_const_value_attribute): Return true if successful.
217         (add_location_or_const_value_attribute): Rewrite using loc_list_from_tree.
218         (tree_add_const_value_attribute): Return true if successful.
219         (tree_add_const_value_attribute_for_decl): Likewise.
220
221         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
222         (loc_descriptor): ... here;
223         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
224         (cst_pool_loc_descr): Break out from ...; do not reffer constant
225         pool items that was not marked for output.
226         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
227         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
228         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
229         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
230         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
231         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
232         DW_OP_stack_value to get address of items that are not available
233         as addresses.
234         (dw_loc_list): Handle single element lists correctly.
235
236 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
237             Pascal Obry  <obry@adacore.com>
238
239         * unwind-dw2-fde.c (classify_object_over_fdes):
240         Cast the constant 1 to _Unwind_Ptr.
241         (add_fdes): Likewise.
242         (linear_search_fdes): Likewise.
243
244 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
245
246         * stor-layout.c (set_sizetype): Avoid useless type copy.
247
248 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
249
250         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
251         feature check.
252         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
253         * configure, config.in: Regenerate.
254         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
255         DW_EH_PE_absptr.
256         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
257         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
258         for global data if the output could be used in a shared library.
259         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
260         to 0 if TARGET_WRITABLE_EH_FRAME.
261
262 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
263
264         PR rtl-optimization/39886
265         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
266         just when insn is equal to BB_END (bb).
267
268 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
269
270         * config/mips/mips.opt (mrelax-pic-calls): New option.
271         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
272         the file.
273         (mips_unspec_call): Change "unspec_call" expander into this.
274         (mips_strip_unspec_call): New function.
275         (mips_got_load): Call mips_unspec_call instead of
276         gen_unspec_call<mode>.
277         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
278         MIPS_CALL.
279         (mips_cfg_in_reorg): New function.
280         (mips16_lay_out_constants): Use it to decide whether to call
281         CFG-aware insn splitting.
282         (r10k_insert_cache_barriers): Move CFG set-up code from here to
283         mips_reorg.  Move DF set-up code from here ...
284         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
285         from here.
286         (mips_reorg): Call mips_df_reorg instead of
287         r10k_insert_cache_barriers.  Move CFG set-up code here from
288         r10k_insert_cache_barriers.
289         (mips_call_expr_from_insn): New function.
290         (mips_pic_call_symbol_from_set): Likewise.
291         (mips_find_pic_call_symbol): Likewise.
292         (mips_annotate_pic_call_expr): Likewise.
293         (mips_get_pic_call_symbol): Likewise.
294         (mips_annotate_pic_calls): Likewise.
295         (mips_override_options): Disable -mrelax-pic-calls unless PIC
296         calls are used.
297         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
298         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
299         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
300         directive.
301         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
302         (unspec_call<mode>): Remove it.
303         (sibcall_internal, sibcall_value_internal,
304         sibcall_value_multiple_internal, call_internal, call_split,
305         call_value_internal, call_value_split,
306         call_value_multiple_internal, call_value_multiple_split): Pass
307         SIZE_OPNO to MIPS_CALL.
308         (call_internal_direct, call_direct_split,
309         call_value_internal_direct, call_value_direct_split): Pass -1 as
310         SIZE_OPNO to MIPS_CALL.
311         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
312         * configure: Regenerate.
313         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
314         and -mno-relax-pic-calls.
315         (MIPS Options): Document -mrelax-pic-calls
316         and -mno-relax-pic-calls.
317
318 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
319
320         PR bootstrap/35619
321         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
322         in the directory this rule is called from, rather than the
323         toplevel 'gcc' directory, to fix in-tree build.
324
325 2009-09-19  Chris Demetriou  <cgd@google.com>
326
327         PR preprocessor/28435:
328         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
329         to cpplib that the preprocessor output is needed.
330
331 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
332
333         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
334         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
335         *return_and_restore_fpregs_<mode>,
336         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
337
338         PR bootstrap/41397
339         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
340         instead of assuming it has always a REG inside of it.
341
342 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
343
344         * config/freebsd.h: Update comment on types.
345         (WINT_TYPE): Define.
346
347 2009-09-18  Jason Merrill  <jason@redhat.com>
348
349         * c.opt: Add -fno-deduce-init-list.
350
351 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
352
353         * value-prof.c (interesting_stringop_to_profile_p): Added output
354         argument to indicate which parameter is the size parameter.
355         * value-prof.c (gimple_stringop_fixed_value): Use
356         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
357         * value-prof.c (gimple_stringops_transform): Update call sites to
358         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
359         * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
360
361 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
362
363         PR target/38288
364         From David Binderman <dcb314@hotmail.com>:
365         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
366         local variable f.  Remove stale comments.
367         (ix86_compute_frame_layout): Remove useless local variable total_size.
368         Remove #if 0'd code.
369         (legitimate_address_p): Remove useless local variables
370         reason_rtx and reason.
371         (ix86_split_copysign_const): Remove useless local variable op1.
372         (scale_counter): Remove useless local variable piece_size_mask.
373
374 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
375
376         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
377         output decl.
378
379 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
380
381         PR target/40913
382         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
383
384 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
385
386         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
387         TYPE_STUB_DECL.
388
389 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
390
391         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
392         DW_OP_implicit_value even without dwarf_version 4.
393
394 2009-09-17  Jan Hubicka  <jh@suse.cz>
395
396         * dwarf2out.c: Include tree-pass.h and gimple.h.
397         (loc_list_plus_const): New function.
398         (loc_descriptor_from_tree_1): Rename to ...
399         (loc_descriptor_from_tree): ... remove original.
400         (loc_list_from_tree): New function.
401         (add_AT_location_description): Accept location list.
402         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
403         (concatn_mem_loc_descriptor): Remove.
404         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
405         returning NULL.
406         (secname_for_decl): Move up.
407         (hidden_reference_p): New function; break out from ...
408         (loc_by_refernece): ... here; move up.
409         (dw_loc_list): New function.
410         (single_element_loc_list): New function.
411         (single_element_loc_list_p): New function.
412         (add_loc_descr_to_each): New function.
413         (add_loc_list): New function.
414         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
415         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
416         add diagnostics why expansion failed.
417         (add_location_or_const_value_attribute): Support location lists.
418         (add_bound_info): Likewise.
419         (descr_info_loc): Update call of loc_descriptor_from_tree.
420         (gen_variable_die): Work on location lists.
421         * final.c (pass_final): Add dump file.
422         * Makefile.in (dwarf2out.o): Add new dependencies.
423
424 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
425
426         PR c/41049
427         * real.c decimal_from_integer, decimal_integer_string): New.
428         (real_from_integer): Use them as special case for decimal float.
429         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
430         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
431         Do not append zero after the decimal point in string to convert.
432
433 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
434
435         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
436         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
437
438 2009-09-17  Martin Jambor  <mjambor@suse.cz>
439
440         * common.opt (fipa-sra): New switch.
441         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
442         * timevar.def (TV_IPA_SRA): New timevar.
443         * params.def (ipa-sra-ptr-growth-factor): New parameter.
444         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
445         * tree-sra.c: Include cgraph.c.
446         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
447         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
448         and grp_not_necessarilly_dereferenced.
449         (func_param_count): New variable.
450         (encountered_apply_args): New variable.
451         (bb_dereferences): New variable.
452         (final_bbs): New variable.
453         (no_accesses_representant): New variable.
454         (no_accesses_p): New function.
455         (dump_access): Dump the new fields.
456         (sra_initialize): Set encountered_apply_args to false.
457         (get_ssa_base_param): New function.
458         (mark_parm_dereference): New function.
459         (create_access): Caring for INIDRECT_REFs and different handling of
460         varialble length accesses in early IPA SRA.  Store the stmt - a new
461         parameter - to the new access.
462         (build_access_from_expr_1): New parameter stmt, passed to
463         create_access.  Handle INDIRECT_REFs.
464         (build_access_from_expr): Pass the current statement to
465         build_access_from_expr_1.
466         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
467         passes.
468         (build_accesses_from_assign): Pass the current statement to
469         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
470         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
471         final_bbs when necessary.  Check for calls to __builtin_apply_args.
472         Fixup EH info if anythng was changed.
473         (is_unused_scalar_param): New function.
474         (ptr_parm_has_direct_uses): New function.
475         (find_param_candidates): New function.
476         (mark_maybe_modified): New function.
477         (analyze_modified_params): New function.
478         (propagate_dereference_distances): New function.
479         (dump_dereferences_table): New function.
480         (analyze_caller_dereference_legality): New function.
481         (unmodified_by_ref_scalar_representative): New function.
482         (splice_param_accesses): New function.
483         (decide_one_param_reduction): New function.
484         (enum ipa_splicing_result): New type.
485         (splice_all_param_accesses): New function.
486         (get_param_index): New function.
487         (turn_representatives_into_adjustments): New function.
488         (analyze_all_param_acesses): New function.
489         (get_replaced_param_substitute): New function.
490         (get_adjustment_for_base): New function.
491         (replace_removed_params_ssa_names): New function.
492         (sra_ipa_reset_debug_stmts): New function.
493         (sra_ipa_modify_expr): New function.
494         (sra_ipa_modify_assign): New function.
495         (convert_callers): New function.
496         (modify_function): New function.
497         (ipa_sra_preliminary_function_checks): New function.
498         (ipa_early_sra): New function.
499         (ipa_early_sra_gate): New function.
500         (pass_early_ipa_sra): New variable.
501         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
502
503 2009-09-17  Michael Matz  <matz@suse.de>
504
505         PR middle-end/41347
506         * tree.c (build_type_attribute_qual_variant): Export.
507         * tree.h (build_type_attribute_qual_variant): Declare.
508         * tree-inline.c (remap_type_1): Use it to build variants with
509         the original qualifiers and attributes.
510
511 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
512
513         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
514         without a fallthrough edge.
515
516 2009-09-16  DJ Delorie  <dj@redhat.com>
517
518         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
519         chip and ignore the "fast_interrupt" attribute if so.
520
521 2009-09-16  Richard Henderson  <rth@redhat.com>
522
523         PR middle-end/41360
524         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
525         barrier fix.
526
527 2009-09-16  Richard Henderson  <rth@redhat.com>
528
529         PR target/41246
530         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
531         is set only if DECL_NO_STATIC_CHAIN is unset.
532         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
533         (FOR_EACH_NEST_INFO): New.
534         (walk_all_functions): Use it.
535         (finalize_nesting_tree): Likewise.
536         (unnest_nesting_tree): Likewise.
537         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
538         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
539         (convert_gimple_call): Early out if gimple_call_chain already set.
540         (convert_all_function_calls): Iterate until no new functions
541         require a static chain.
542         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
543         when building a trampoline.  Use dump_function_to_file instead
544         of dump_function.
545         (lower_nested_functions): Open dump_file.  Validate that decls
546         that have DECL_NO_STATIC_CHAIN from the front end don't have that
547         bit reset by this pass.
548
549 2009-09-16  Michael Matz  <matz@suse.de>
550
551         PR fortran/41212
552         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
553         shorten decl_common_unused.
554         (DECL_RESTRICTED_P): New accessor.
555         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
556         to disambiguate marked decls and restrict pointers.
557
558 2009-09-16  Richard Henderson  <rth@redhat.com>
559
560         PR middle-end/41360
561         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
562
563 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
564
565         * integrate.c (set_block_abstract_flags): Call
566         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
567
568 2009-09-16  Richard Guenther  <rguenther@suse.de>
569
570         PR middle-end/34011
571         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
572         as non-aliased.
573
574 2009-09-16  DJ Delorie  <dj@redhat.com>
575             Kaz Kojima  <kkojima@gcc.gnu.org>
576
577         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
578         (sh_expand_prologue): Update calls to output_stack_adjust.
579         (sh_expand_epilogue): Likewise.
580
581 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
582
583         PR bootstrap/41349
584         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
585         trying to limit the extent of searches in the insn stream.
586
587 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
588             Jakub Jelinek  <jakub@redhat.com>
589
590         PR target/41175
591         PR target/40677
592         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
593         problem.
594         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
595         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
596         (rs6000_savres_strategy): Always save FP registers inline if the
597         target doesn't support hardware double-precision.  Set the above
598         bits in return value when needed.
599         (rs6000_savres_routine_sym): Fix computation for cache selector.
600         Mark the generated symbol as a function.  Rename exitp argument to
601         lr.  Move code for determining the name of the symbol...
602         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
603         getting the names right on AIX and 64-bit Linux.
604         (savres_routine_name): New variable.
605         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
606         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
607         on what the target routine uses as a base register.  If savep && lr
608         describe saving of r0 into memory slot.
609         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
610         line calls for AIX ABI.
611         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
612         determine FP save/restore functions.
613         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
614         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
615         gen_addsi3.
616         (rs6000_emit_epilogue): Adjust computation of restore_lr.
617         Duplicate restoration of LR and execute the appropriate one
618         depending on whether GPRs are being restored inline.  Set r11 from
619         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
620         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
621         Fix out of line calls for AIX ABI.
622         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
623         New insn.
624         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
625         register 11.
626         (*restore_gpregs_spe): Likewise.
627         (*return_and_restore_gpregs_spe): Likewise.
628         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
629         Define to empty string unconditionally.
630         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
631         Define to empty string unconditionally.
632         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
633         !TARGET_64BIT.
634
635 2009-09-15  Jan Hubicka  <jh@suse.cz>
636
637         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
638         * params.def (inline-insns-auto): Likewise.
639
640 2009-09-15  Martin Jambor  <mjambor@suse.cz>
641
642         * ipa-inline.c (estimate_function_body_sizes): Dump info about
643         individual statements only at TDF_DETAILS dump level.  Format
644         source for 80 characters per line.
645
646 2009-09-15  Christian Bruel  <christian.bruel@st.com>
647
648         * regrename.c (do_replace): Update REG_DEAD notes.
649
650 2009-09-15  Revital Eres  <eres@il.ibm.com>
651
652         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
653         * targhooks.c (default_builtin_support_vector_misalignment):
654         New builtin function.
655         * targhooks.h (default_builtin_support_vector_misalignment):
656         Declare.
657         * target.h (builtin_support_vector_misalignment):
658         New field in struct gcc_target.
659         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
660         new builtin function.
661         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
662         Define.
663         * config/rs6000/rs6000.c
664         (rs6000_builtin_support_vector_misalignment): New function.
665         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
666
667 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
668
669         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
670         instead of INSN_P.
671         (bfin_optimize_loop): Likewise.
672         (bfin_gen_bundles): Likewise.
673         (workaround_speculation): Likewise.
674         (find_load): Return NULL_RTX for debug_insn.
675
676 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
677
678         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
679         (sminsf3): Ditto.
680
681 2009-09-14  DJ Delorie  <dj@redhat.com>
682
683         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
684         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
685         VLIW mode.
686
687 2009-09-14  Richard Henderson  <rth@redhat.com>
688             Jakub Jelinek  <jakub@redhat.com>
689
690         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
691         * cfgbuild.c (make_edges): Handle asm goto.
692         * cfglayout.c (fixup_reorder_chain): Likewise.
693         * cfgrtl.c (patch_jump_insn): Likewise.
694         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
695         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
696         (gimple_build_asm_vec): Add and use labels parameter.
697         (gimple_build_asm): Remove.
698         (walk_gimple_asm): Walk labels too.
699         * gimple.def (GIMPLE_ASM): Update docs.
700         * gimple.h: Update decls.
701         (struct gimple_statement_asm): Change nc to use unsigned char;
702         add nl member.
703         (gimple_asm_nlabels): New.
704         (gimple_asm_label_op, gimple_asm_set_label_op): New.
705         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
706         into gimple_build_asm_vec.
707         * jump.c (mark_jump_label_asm): New.
708         (mark_jump_label): Use it.
709         (redirect_jump_1): Handle asm goto.
710         (invert_jump_1): Soft fail if X is null.
711         * recog.c (extract_asm_operands): New.
712         (asm_noperands): Use it; handle asm labels.
713         (decode_asm_operands): Use extract_asm_operands.
714         (asm_operand_ok): Properly handle empty string.
715         * reg-stack.c (get_asm_operands_in_out): Rename from
716         get_asm_operand_n_inputs; use extract_asm_operands; return both
717         inputs and outputs by reference; update all callers.
718         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
719         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
720         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
721         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
722         (extract_asm_operands): Declare.
723         * stmt.c (expand_asm_operands): Add and use labels parameter.
724         (check_unique_operand_names): Likewise.
725         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
726         (expand_asm_stmt): Handle asm labels.
727         * tree-cfg.c (make_gimple_asm_edges): New.
728         (make_edges): Use it.
729         (cleanup_dead_labels): Handle asm labels.
730         (is_ctrl_altering_stmt): Likewise.
731         (gimple_redirect_edge_and_branch): Likewise.
732         * tree.def (ASM_EXPR): Add 5th operand.
733         * tree.h (ASM_LABELS): New.
734         (resolve_asm_operand_names): Update decl.
735
736         * c-parser.c (c_parser_asm_statement): Parse asm goto.
737         (c_parser_asm_goto_operands): New.
738         * c-tree.h (build_asm_expr): Update decl.
739         * c-typeck.c (build_asm_expr): Add and use labels parameter.
740         * doc/extend.texi: Document asm goto.
741
742 2009-09-14  Richard Henderson  <rth@redhat.com>
743
744         * except.h: Update declarations.
745         (struct pointer_map_t): Forward declare.
746         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
747         (struct eh_landing_pad_d, eh_landing_pad): New.
748         (struct eh_catch_d, eh_catch): New.
749         (struct eh_region_d): Remove next_region_sharing_label, aka,
750         label, tree_label, landing_pad, post_landing_pad, resume,
751         may_contain_throw.  Rename region_number to index.  Remove
752         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
753         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
754         (VEC(eh_landing_pad,gc)): New.
755         (struct eh_status): Remove last_region_number.  Add lp_array,
756         throw_stmt_table, ttype_data, ehspec_data.
757         (ehr_next, FOR_ALL_EH_REGION_AT): New.
758         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
759         * except.c (lang_protect_cleanup_actions): Return tree.
760         (struct ehl_map_entry): Remove.
761         (init_eh_for_function): Push zero entries for region and lp_array.
762         (gen_eh_region): Add to region_array immediately.
763         (gen_eh_region_catch): Operate on eh_catch objects.
764         (gen_eh_landing_pad): New.
765         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
766         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
767         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
768         (get_eh_landing_pad_from_number_fn): New.
769         (get_eh_landing_pad_from_number): New.
770         (get_eh_region_from_lp_number_fn): New.
771         (get_eh_region_from_lp_number): New.
772         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
773         (get_exception_pointer, get_exception_filter): Remove.
774         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
775         (current_function_has_exception_handlers): Simplify.
776         (bring_to_root, eh_region_replaceable_by_p): Remove.
777         (replace_region, hash_type_list, hash_eh_region): Remove.
778         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
779         (label_to_region_map, num_eh_regions): Remove.
780         (get_next_region_sharing_label, must_not_throw_labels): Remove.
781         (find_exception_handler_labels): Remove.
782         (duplicate_eh_regions_0, find_prev_try): Remove.
783         (struct duplicate_eh_regions_data): New.
784         (duplicate_eh_regions_1): Rewrite.
785         (duplicate_eh_regions): Return a pointer map instead of an
786         integer offset.
787         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
788         (redirect_eh_edge_to_label): Remove.
789         (eh_region_outermost): Rewrite using eh_region pointers
790         instead of integers.
791         (add_ttypes_entry): Update for ttype_data move to eh_status.
792         (add_ehspec_entry): Rewrite with VEC instead of varray.
793         (assign_filter_values): Likewise.  Export.
794         (build_post_landing_pads, connect_post_landing_pads): Remove.
795         (dw2_build_landing_pads): Rewrite to use lp_array.
796         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
797         (sjlj_assign_call_site_values): Rewrite to use lp_array.
798         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
799         (sjlj_mark_call_sites): Update for landing pad numbers.
800         (finish_eh_generation): Rewrite.
801         (gate_handle_eh): Do nothing for no eh tree.
802         (pass_rtl_eh): Move up near finish_eh_generation.
803         (remove_eh_landing_pad): New.
804         (remove_eh_handler): Export.
805         (remove_eh_region, remove_eh_handler_and_replace): Remove.
806         (for_each_eh_label): Rewrite to use lp_array.
807         (make_reg_eh_region_note): New.
808         (make_reg_eh_region_note_nothrow_nononlocal): New.
809         (insn_could_throw_p): New.
810         (copy_reg_eh_region_note_forward): New.
811         (copy_reg_eh_region_note_backward): New.
812         (check_handled, add_reachable_handler): Remove.
813         (reachable_next_level, foreach_reachable_handler): Remove.
814         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
815         (get_eh_region_and_lp_from_rtx): New.
816         (get_eh_region_from_rtx): New.
817         (can_throw_internal_1, can_throw_external_1): Remove.
818         (can_throw_internal): Use get_eh_region_from_rtx.
819         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
820         (insn_nothrow_p, can_nonlocal_goto): New.
821         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
822         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
823         (add_action_record): Use VEC not varray.
824         (collect_one_action_chain): Update for eh_region changes.
825         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
826         Use get_eh_region_and_lp_from_rtx.
827         (gate_convert_to_eh_region_ranges): New.
828         (pass_convert_to_eh_region_ranges): Use it.
829         (push_uleb128, push_sleb128): Use VEC not varray.
830         (output_one_function_exception_table): Likewise.
831         (dump_eh_tree): Update for eh_region changes.
832         (verify_eh_tree): Likewise.
833         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
834         * tree-eh.c: Include target.h.
835         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
836         Don't disallow GIMPLE_RESX; adjust argument check.
837         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
838         (record_stmt_eh_region): Update for landing pad numbers;
839         generate a landing pad if necessary.
840         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
841         (remove_stmt_from_eh_lp_fn): Similarly.
842         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
843         Update for lp numbers; don't special case missing throw_stmt_table.
844         (lookup_expr_eh_lp): Similarly.
845         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
846         (eh_seq, eh_region_may_contain_throw): New.
847         (struct leh_state): Add ehp_region.
848         (struct leh_tf_state): Remove eh_label.
849         (emit_post_landing_pad): New.
850         (emit_resx, emit_eh_dispatch): New.
851         (note_eh_region_may_contain_throw): New.
852         (frob_into_branch_around): Take eh_region not eh label;
853         emit eh code into eh_seq.
854         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
855         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
856         lower_eh_must_not_throw.  Emit code to eh_seq.
857         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
858         (lower_try_finally_onedest): Likewise.
859         (lower_try_finally_copy): Likewise.
860         (lower_try_finally_switch): Likewise.
861         (lower_try_finally): Initialize ehp_region.
862         (lower_catch): Update for eh_catch objects.
863         (lower_eh_filter): Don't handle must_not_throw.
864         (lower_eh_must_not_throw): New.
865         (lower_cleanup): Don't set eh_label.
866         (lower_eh_constructs_2): Resolve eh builtins.
867         Handle GIMPLE_EH_MUST_NOT_THROW.
868         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
869         Add eh_seq to the end of the function body.
870         (make_eh_dispatch_edges): New.
871         (make_eh_edge): Remove.
872         (make_eh_edges): Simplify for landing pads.
873         (redirect_eh_edge_1): New.
874         (redirect_eh_edge): Use it.
875         (redirect_eh_dispatch_edge): New.
876         (stmt_could_throw_p): Use a switch.  Allow RESX.
877         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
878         (stmt_can_throw_internal): Likewise.
879         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
880         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
881         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
882         (gate_refactor_eh): New.
883         (pass_refactor_eh): Use it.
884         (lower_resx, execute_lower_resx, pass_lower_resx): New.
885         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
886         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
887         (remove_unreachable_handlers): Rename from
888         tree_remove_unreachable_handlers; rewrite for landing pads;
889         call remove_eh_handler directly.
890         (remove_unreachable_handlers_no_lp): New.
891         (unsplit_eh, unsplit_all_eh): New.
892         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
893         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
894         (cleanup_empty_eh_unsplit): New.
895         (cleanup_empty_eh): Rewrite.
896         (cleanup_all_empty_eh): New.
897         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
898         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
899         (gate_cleanup_eh): New.
900         (pass_cleanup_eh): Use it.
901         (verify_eh_edges): Move later in file.  Expect one EH edge.
902         (verify_eh_dispatch_edge): New.
903
904         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
905         (gtype-desc.o): Add TARGET_H.
906         (tree.o): Use EXCEPT_H, not except.h.
907         (cfgbuild.o): Add EXPR_H.
908         (GTFILES): Add vecprim.h.
909         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
910         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
911         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
912         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
913         * calls.c (emit_call_1): Use make_reg_eh_region_note.
914         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
915         calls to can_throw_internal.
916         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
917         (make_edges): Don't handle RESX; use can_nonlocal_goto.
918         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
919         (expand_gimple_stmt): Use make_reg_eh_region_note.
920         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
921         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
922         or find_exception_handler_labels.
923         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
924         there is exacly one EH edge.  Use can_nonlocal_goto and
925         can_throw_internal.
926         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
927         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
928         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
929         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
930         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
931         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
932         * dse.c (scan_insn): Use insn_could_throw_p.
933         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
934         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
935         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
936         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
937         EXC_PTR_EXPR or FILTER_EXPR.
938         (tree_expr_nonzero_warnv_p): Likewise.
939         * function.h: Include vecprim.h, not varray.h
940         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
941         move ttype_data and ehspec_data members to struct eh_status; change
942         action_record_data member to a VEC.
943         * gcse.c (hash_scan_set): Use can_throw_internal.
944         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
945         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
946         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
947         (block_may_fallthru): Don't handle RESX_EXPR.
948         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
949         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
950         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
951         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
952         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
953         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
954         (gimple_size): Likewise.
955         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
956         (gimple_build_resx): Use gimple_build_with_ops.
957         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
958         (is_gimple_val): Likewise.
959         (is_gimple_stmt): Remove RESX_EXPR.
960         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
961         (GIMPLE_RESX): Reorder with other EH constructs.
962         * gimple.h (struct gimple_statement_eh_mnt): New.
963         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
964         (gimple_eh_filter_must_not_throw): Remove.
965         (gimple_eh_filter_set_must_not_throw): Remove.
966         (gimple_eh_must_not_throw_fndecl): New.
967         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
968         (is_gimple_resx): New.
969         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
970         Don't copy EH_FILTER_MUST_NOT_THROW.
971         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
972         * ipa-inline.c (estimate_function_body_sizes): Don't try to
973         handle must_not_throw_labels specially.
974         * ipa-pure-const.c (check_call): Update debug statement for LP.
975         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
976         * ipa-utils.c (get_base_var): Likewise.
977         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
978         * lower-subreg.c (move_eh_region_note): Remove.
979         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
980         * omp-low.c (new_omp_context): Update for eh_lp_nr.
981         (create_task_copyfn): Likewise.
982         (maybe_catch_exception): Use gimple_build_eh_filter.
983         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
984         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
985         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
986         and pass_lower_resx.
987         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
988         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
989         can_throw_internal, can_nonlocal_goto.
990         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
991         copy_reg_eh_region_note_forward.
992         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
993         (emit_output_reload_insns): Likewise.
994         (copy_eh_notes): Remove.
995         * rtl.def (RESX): Remove.
996         * rtl.h: Update declarations.
997         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
998         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
999         (update_eh_label): Remove.
1000         (cleanup_dead_labels_eh): New.
1001         (cleanup_deal_labels): Use it instead of update_eh_label.
1002         (gimple_merge_blocks): Update landing pad data structure when
1003         removing a landing pad label.
1004         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
1005         test; handle GIMPLE_EH_MUST_NOT_THROW.
1006         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
1007         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
1008         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
1009         (verify_stmt): Likewise.  Verify landing pads.
1010         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
1011         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
1012         (struct move_stmt_d): Add eh_map.
1013         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
1014         (move_stmt_r): Remap eh region numbers in builtin calls,
1015         resx and eh_dispatch.
1016         (move_block_to_fn): Remove eh_offset parameter.  Use
1017         maybe_duplicate_eh_stmt_fn.
1018         (find_outermost_region_in_block): Operate on eh_region pointers
1019         instead of region numbers.
1020         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
1021         duplicate_eh_regions.
1022         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
1023         test earlier.  Disallow EH landing pads.
1024         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
1025         * tree-flow.h: Update declarations.
1026         (struct tree_ann_common_d): Replace rn with lp_nr.
1027         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
1028         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
1029         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
1030         resx and eh_dispatch.
1031         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
1032         (copy_edges_for_bb): Use make_eh_dispatch_edges.
1033         (copy_cfg_body): Expect eh_map instead of eh_region_offset
1034         from duplicate_eh_regions.
1035         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
1036         update RESX; handle EH_DISPATCH.
1037         (expand_call_inline): Set eh_lp_nr, not eh_region.
1038         (maybe_inline_call_in_expr): Likewise.
1039         * tree-inline.h (struct copy_body_data): Replace eh_region with
1040         eh_lp_nr, eh_region_offset with eh_map.
1041         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
1042         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
1043         * tree-pretty-print.c (dump_generic_node): Don't handle
1044         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
1045         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
1046         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
1047         EXC_PTR_EXPR, FILTER_EXPR.
1048         * tree-ssa-operands.c (get_expr_operands): Likewise.
1049         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
1050         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1051         (ao_ref_init_from_vn_reference): Likewise.
1052         * tree-ssa-sink.c (statement_sink_location): Likewise.
1053         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1054         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
1055         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
1056         EXC_PTR_EXPR, FILTER_EXPR.
1057         (is_exception_related): Remove.
1058         (compute_avail): Don't call it.
1059         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
1060         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
1061         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
1062         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
1063         Build EH builtins.
1064         (build_resx): Remove.
1065         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
1066         * tree.h: Update declarations.
1067         (EH_FILTER_MUST_NOT_THROW): Remove.
1068         (struct tree_label_decl): Add eh_landing_pad_nr.
1069         (EH_LANDING_PAD_NR): New.
1070         * value-prof.c (gimple_ic): Tidy variable names.  Update for
1071         landing pad numbers.
1072         (gimple_stringop_fixed_value): Tidy variable names.  Assert
1073         that neither call stmt can throw.
1074         * vecprim.h (uchar): New.
1075         (VEC(uchar,heap), VEC(uchar,gc)): New.
1076
1077         * c-common.c (c_define_builtins): Update call to
1078         build_common_builtin_nodes.
1079         * c-parser.c (c_parse_file): Don't call
1080         default_init_unwind_resume_libfunc.
1081
1082 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1083
1084         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
1085         (mips_cprestore_address_p): Likewise.
1086         (mips_save_gp_to_cprestore_slot): Likewise.
1087         (mips_restore_gp): Rename to...
1088         (mips_restore_gp_from_cprestore_slot): ...this.
1089         (mips_must_initialize_gp_p): Declare.
1090         (mips_emit_save_slot_move): Likewise.
1091         (mips_output_load_label): Return nothing.
1092         (mips_eh_uses): Declare.
1093         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
1094         (TARGET_CPRESTORE_DIRECTIVE): New macro.
1095         (TARGET_ABSOLUTE_JUMPS): Likewise.
1096         (EH_USES): Likewise.
1097         (FIRST_PSEUDO_REGISTER): Update comment.
1098         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
1099         (MIPS_CALL): ...here.
1100         (REGISTER_NAMES): Add $cprestore.
1101         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
1102         Add load_label_length, has_inflexible_gp_insn_p,
1103         has_flexible_gp_insn_p, must_initialize_gp_p and
1104         must_restore_gp_when_clobbered_p.
1105         (mips_expand_call): Don't generate split instructions here.
1106         (mips_split_call): Update the call to mips_restore_gp after
1107         the above name change.
1108         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
1109         (mips_find_gp_ref): New function.
1110         (mips_insn_has_inflexible_gp_ref_p): Likewise.
1111         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
1112         (mips_insn_has_flexible_gp_ref_p): Likewise.
1113         (mips_cfun_has_flexible_gp_ref_p): Likewise.
1114         (mips_function_has_gp_insn): Delete.
1115         (mips_global_pointer): Drop the df_regs_ever_live_p check.
1116         Use the new functions above.  Only return INVALID_REGNUM
1117         for TARGET_ABSOLUTE_JUMPS.
1118         (mips_must_initialize_gp_p): New function.
1119         (mips_get_cprestore_base_and_offset): New function, extracted from...
1120         (mips_cprestore_slot): ...here.  Take a bool parameter.
1121         (mips_cfun_has_cprestore_slot_p): New function.
1122         (mips_cprestore_address_p): Likewise.
1123         (mips_save_gp_to_cprestore_slot): Likewise.
1124         (mips_restore_gp): Rename to...
1125         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
1126         epilogue_completed.  Update the call to mips_cprestore_slot.
1127         Test cfun->machine->must_restore_gp_when_clobbered_p.
1128         (mips_direct_save_slot_move_p): New function.
1129         (mips_emit_save_slot_move): Likewise.
1130         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
1131         of cfun->machine->global_pointer.
1132         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
1133         (mips_save_reg): Use mips_emit_save_slot_move.
1134         (mips_expand_prologue): Set must_initialize_gp_p.
1135         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
1136         for all cprestore saves.  Emit a use_cprestore instruction after
1137         setting up the cprestore slot.
1138         (mips_restore_reg): Use mips_emit_save_slot_move.
1139         (mips_process_load_label): New function.
1140         (mips_load_label_length): Likewise.
1141         (mips_output_load_label): Don't return asm: output it here instead.
1142         Use mips_process_load_label.
1143         (mips_adjust_insn_length): Adjust the length of branch instructions
1144         that have length MAX_PIC_BRANCH_LENGTH.
1145         (mips_output_conditional_branch): Update the call to
1146         mips_output_load_label.  Assume the branch target is OPERANDS[0]
1147         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
1148         (mips_output_order_conditional_branch): Swap the meaning of
1149         OPERANDS[0] and OPERANDS[1].
1150         (mips_variable_issue): Don't count ghost instructions.
1151         (mips_expand_ghost_gp_insns): New function.
1152         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
1153         (mips_output_mi_thunk): Set must_initialize_gp_p.
1154         (mips_eh_uses): New function.
1155         * config/mips/predicates.md (cprestore_save_slot_operand)
1156         (cprestore_load_slot_operand): New predicates.
1157         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
1158         (UNSPEC_MOVE_GP): Likewise.
1159         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
1160         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
1161         (CPRESTORE_SLOT_REGNUM): New register.
1162         (MAX_PIC_BRANCH_LENGTH): New constant.
1163         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
1164         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
1165         branches.  Fix commentary.
1166         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
1167         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
1168         Change type to "ghost".
1169         (loadgp_absolute_<mode>): Likewise.
1170         (loadgp_rtp_<mode>): Likewise.
1171         (copygp_mips16): Likewise.
1172         (loadgp_blockage): Remove redundant mode attribute.
1173         (potential_cprestore): New instruction.
1174         (cprestore): Turn into an unspec set.
1175         (use_cprestore): New instruction.
1176         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
1177         (*branch_fp_inverted): Likewise.
1178         (*branch_order<mode>): Likewise.
1179         (*branch_order<mode>_inverted): Likewise.
1180         (*branch_equality<mode>): Likewise.
1181         (*branch_equality<mode>_inverted): Likewise.
1182         (*branch_bit<bbv><mode>): Likewise.
1183         (*branch_bit<bbv><mode>_inverted): Likewise.
1184         (*branch_equality<mode>_mips16): Remove redundant mode.
1185         (jump): Turn into a define_expand.
1186         (*jump_absolute): New instruction.
1187         (*jump_pic): Likewise.
1188         (*jump_mips16): Rename previously-unnamed pattern.  Remove
1189         redundant mode attribute.
1190         (restore_gp): Split on epilogue_completed rather than
1191         reload_completed.  Change type to "ghost".
1192         (move_gp<mode>): New instruction.
1193         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
1194         Remove redundant mode attribute.
1195         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
1196         (bc1any4f, bc1any2t, bc1any2f): Likewise.
1197         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
1198
1199 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1200
1201         PR target/41210
1202         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
1203         are returned in the same register (vs34 or v2) that Altivec vector
1204         types are returned in.
1205         (rs6000_libcall_value): Ditto.
1206
1207         PR target/41331
1208         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
1209         instead of explicit addsi3/adddi3 calls.
1210         (rs6000_split_multireg_move): Ditto.
1211         (rs6000_emit_allocate_stack): Ditto.
1212         (rs6000_emit_prologue): Ditto.
1213         (rs6000_output_mi_thunk): Ditto.
1214
1215         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
1216         size is 64 bits if we can use 64-bit registers.
1217
1218 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1219
1220         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
1221         symbols.
1222
1223         From Jie Zhang <jie.zhang@analog.com>:
1224         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
1225         save FP and RETS with saveall attribute.
1226         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
1227         with saveall attribute.
1228
1229         * config/bfin/bfin.c (bfin_expand_builtin,
1230         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
1231         operands.
1232
1233         From Jie Zhang <jie.zhang@analog.com>:
1234         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
1235         before use in two places.
1236         * config/bfin/bfin.md (AREG): Define mode iterator.
1237         (reload_in, reload_out): Use mode iterator AREG.
1238
1239 2009-09-14  Richard Guenther  <rguenther@suse.de>
1240
1241         PR middle-end/41350
1242         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
1243         EH personality path.
1244
1245 2009-09-13  Richard Guenther  <rguenther@suse.de>
1246             Rafael Avila de Espindola  <espindola@google.com>
1247
1248         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1249         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1250         (LANG_HOOKS_INITIALIZER): Adjust.
1251         (lhd_pass_through_t): Declare.
1252         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1253         eh_personality.
1254         * langhooks.c (lhd_pass_through_t): New function.
1255         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1256         dwarf2out_begin_prologue): Use personality from current_function_decl.
1257         * expr.h (get_personality_function): Declare.
1258         * expr.c (get_personality_function): New function.
1259         (build_personality_function): Likewise.
1260         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1261         (eh_personality_libfunc): Remove.
1262         * optabs.c (build_libfunc_function): New function split out from ...
1263         (init_one_libfunc): ... here.
1264         * tree.h (DECL_FUNCTION_PERSONALITY): New.
1265         (tree_function_decl): Add personality.
1266         (lhd_gcc_personality): Declare.
1267         (build_personality_function): Likewise.
1268         * tree.c (gcc_eh_personality_decl): New.
1269         (lhd_gcc_personality): New function.
1270         * except.h (lang_eh_runtime_type): Remove.
1271         (enum eh_personality_kind): New.
1272         (build_personality_function): Declare.
1273         (function_needs_eh_personality): Declare.
1274         * except.c (lang_eh_runtime_type): Remove.
1275         (function_needs_eh_personality): New function.
1276         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1277         (sjlj_emit_function_enter, output_function_exception_table):
1278         Use personality from current_function_decl.
1279         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1280         * tree-inline.c (tree_can_inline_p): Do not inline across different
1281         EH personalities.
1282         (expand_call_inline): Likewise.  Adjust the callers EH personality.
1283         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1284         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1285         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1286         (c-parser.o): Likewise
1287         * c-tree.h (c_eh_initialized_p): Remove.
1288         (c_maybe_initialize_eh): Likewise.
1289         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1290         (finish_decl): Don't call c_maybe_initialize_eh.
1291         (c_eh_initialized_p): Remove.
1292         (c_maybe_initialize_eh): Likewise.
1293         * c-parser.c (c_parser_omp_construct): Likewise.
1294         (c_parse_file): Initialize exception handling.
1295
1296 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
1297
1298         * config.gcc (tm_file): Remove i386/biarch32.h
1299         for i?86-w64-mingw* case.
1300         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1301         support.
1302         * config.host: Set for x64 mingw the option
1303         use_long_long_for_widest_fast_int to yes.
1304
1305 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
1306
1307         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1308         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1309         (dbxout_begin_function): Likewise.
1310         * final.c (dwarf2_debug_info_emitted_p): New predicate.
1311         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1312         set on the function.
1313         (final_end_function): Likewise.
1314         (final_scan_insn): Likewise.
1315         (rest_of_handle_final): Likewise.
1316         * varasm.c (assemble_start_function): Likewise.
1317         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1318
1319 2009-09-12  Jason Merrill  <jason@redhat.com>
1320
1321         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1322         * opts.c (common_handle_option): constify.
1323
1324 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1325
1326         * doc/install.texi (avr): Remove obsolete reference site.
1327
1328 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1329         
1330         * doc/install.texi (Binaries): Adjust AIX link.
1331
1332 2009-09-12  Akim Demaille  <demaille@gostai.com>
1333
1334         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1335         Use an imperative sentence.
1336
1337 2009-09-11  Richard Henderson  <rth@redhat.com>
1338
1339         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1340         structure-name and has-tree-operands arguments; update all entries.
1341         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1342         update all entries.
1343         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1344         (gsstruct_code_size): New.
1345         (gss_for_code_): New.
1346         (gss_for_code): Remove.
1347         (gimple_size): Rewrite using gsstruct_code_size.
1348         (gimple_statement_structure): Move to gimple.h.
1349         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1350         (gss_for_code, gimple_statement_structure): New.
1351         (gimple_ops): Use new arrays; tidy.
1352
1353 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1354
1355         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1356         operand to be a PLUS expression.
1357         * config/pa/pa.c (pa_secondary_reload): Likewise.
1358
1359 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1360
1361         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1362
1363         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1364         XEXP (in_rtx, 8).
1365
1366 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1367
1368         From Jie Zhang <jie.zhang@analog.com>:
1369         * doc/extend.texi (node Function Attributes): Document l2
1370         function attribute.
1371         (node Blackfin Variable Attributes): Document l2 variable attributes.
1372
1373 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1374
1375         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1376         to match the system compiler's configuration at inflection point.
1377         Add comment to remark a remaining difference with system compiler.
1378
1379         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1380         * configure: Regenerate.
1381
1382 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1383
1384         From Jie Zhang <jie.zhang@analog.com>:
1385         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1386         (bfin_handle_l2_attribute): New.
1387         (bfin_attribute_table): Add l2 attribute.
1388
1389 2009-09-11  Michael Matz  <matz@suse.de>
1390
1391         PR middle-end/41275
1392         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1393         on the local_decls list.
1394
1395 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1396
1397         PR debug/41276
1398         PR debug/41307
1399         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1400         interface.
1401         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1402         for VALUEs, to implement the documented interface.
1403         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1404         Adjust for VALUEs and anything else, to implement the
1405         documented interface.
1406
1407 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1408
1409         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1410         with actual SPE/paired vector modes before using 64-bit alignment.
1411         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1412
1413 2009-09-10  DJ Delorie  <dj@redhat.com>
1414
1415         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1416         emitted.
1417
1418         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1419         * config/mep/mep.c (mep_legitimate_constant_p): New.
1420         * config/mep/mep-protos.h: Prototype it.
1421
1422 2009-09-10  Richard Henderson  <rth@redhat.com>
1423
1424         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1425
1426 2009-09-10  Jason Merrill  <jason@redhat.com>
1427
1428         * tree.c (chain_index): New fn.
1429         * tree.h: Declare it.
1430
1431 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1432
1433         * config/sol2-c.c (cmn_err_length_specs): Initialize
1434         scalar_identity_flag.
1435
1436 2009-09-10  Richard Henderson  <rth@redhat.com>
1437
1438         * tree.h (struct tree_decl_common): Move align member earlier;
1439         move label_decl_uid member ...
1440         (struct tree_label_decl): ... here.
1441         (LABEL_DECL_UID): Update to match.
1442
1443         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1444         not TDF_DETAILS.
1445
1446         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1447         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1448
1449         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1450         dest_prev if the edge is complex.
1451
1452         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1453
1454         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1455         loop latch tests earlier.
1456
1457         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1458         before GIMPLE_RETURN, not after its predecessor; insert
1459         before GIMPLE_RESX.
1460
1461         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1462         gimple_seq_empty_p to test for no PHI nodes.
1463         * tree-cfg.c (split_critical_edges): Likewise.
1464
1465         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1466
1467 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1468
1469         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1470         introduced by the VTA branch merge.
1471
1472 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1473
1474         * ira-conflicts.c: Use fputs or putc instead of fprintf
1475         where appropriate.
1476         * cfg.c: Ditto.
1477         * toplev.c: Ditto.
1478         * tree-switch-conversion.c: Ditto.
1479
1480 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1481
1482         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1483         introduced by the VTA branch merge.
1484
1485 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1486
1487         Revert:
1488         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1489
1490         PR rtl-optimization/39779
1491         * expr.c (convert_modes): Return when mode == oldmode after
1492         CONST_INTs are processed.
1493
1494 2009-09-10  Nick Clifton  <nickc@redhat.com>
1495
1496         * config/mep/mep.c (mep_encode_section_info): Copy weakness
1497         attribute and referring decl when creating renamed symbol.
1498
1499 2009-09-10  Richard Guenther  <rguenther@suse.de>
1500
1501         PR middle-end/41257
1502         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1503         reachable nodes.
1504         (cgraph_finalize_compilation_unit): Compute reachability
1505         before emitting thunks.  Properly process aliases before
1506         possibly removing unreachable nodes.
1507
1508 2009-09-10  Richard Guenther  <rguenther@suse.de>
1509
1510         PR middle-end/41254
1511         * tree.c (struct free_lang_data_d): Add worklist member.
1512         (find_decls_types_r): Push onto the worklist instead of recursing.
1513         Handle TREE_BINFOs properly.
1514         (find_decls_types): New function wrapped around find_decls_types_r
1515         to process the worklist.
1516         (find_decls_types_in_eh_region): Use it.
1517         (find_decls_types_in_node): Likewise.
1518         (find_decls_types_in_var): Likewise.
1519         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
1520         * tree.h (RECORD_OR_UNION_TYPE_P): New.
1521         (AGGREGATE_TYPE_P): Adjust.
1522
1523 2009-09-09  Jason Merrill  <jason@redhat.com>
1524
1525         * configure.ac: Check glibc version even if we have an in-tree
1526         assembler.
1527
1528 2009-09-09  Anthony Green  <green@moxielogic.com>
1529
1530         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1531         the constant 0 when appropriate.
1532         * config/moxie/constraints.md: Add constraint O.
1533
1534         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1535         to pass up to 6 32-bit argument values in registers.
1536         (moxie_function_arg): Ditto.
1537         (moxie_arg_partial_bytes): Ditto.
1538         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1539         (REG_PARM_STACK_SPACE): Ditto.
1540         (FUNCTION_ARG_REGNO_P): Ditto.
1541
1542         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1543         instruction to allocate stack space.
1544
1545 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1546
1547         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1548         unnecessarily stringent constraints.  Fix address
1549         calculation in the splitters.
1550
1551 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1552
1553         PR rtl-optimization/39779
1554         * expr.c (convert_modes): Return when mode == oldmode after
1555         CONST_INTs are processed.
1556
1557 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
1558
1559         PR/41315
1560         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1561         (ix86_expand_prologue): Take frame.padding0 into logic of
1562         to_allocate checks.
1563         (ix86_expand_epilogue): Likewise.
1564
1565 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
1566
1567         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1568         New variables.
1569         (SHLIB_LINK, SHLIB_INSTALL): Use them.
1570         * config/t-slibgcc-libgcc: New file.
1571         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1572
1573 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1574
1575         PR tree-optimization/41089
1576         * tree-sra.c (find_var_candidates): Do not consider va_lists in
1577         early SRA.
1578
1579 2009-09-09  Richard Henderson  <rth@redhat.com>
1580
1581         * gimple.h (CASE_GIMPLE_OMP): New.
1582         (is_gimple_omp): Use it.
1583         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1584         (verify_gimple_debug): Likewise.
1585
1586 2009-09-09  Richard Guenther  <rguenther@suse.de>
1587
1588         PR tree-optimization/41101
1589         * tree-ssa-pre.c (maximal_set): Remove.
1590         (compute_antic_aux): Treat the maximal set as implicitly all ones.
1591         Defer all blocks we didn't visit at least one successor.
1592         (add_to_exp_gen): Do not add to the maximal set.
1593         (make_values_for_phi): Likewise.
1594         (compute_avail): Likewise.
1595         (init_pre): Do not allocate the maximal set.
1596         (execute_pre): Do not dump it.
1597
1598 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1599
1600         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1601         an SSA_NAME rather than a is_gimple_variable.
1602
1603 2009-09-09  Richard Guenther  <rguenther@suse.de>
1604
1605         PR middle-end/41317
1606         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1607         code dealing with plain pointer bases.
1608         (maybe_fold_offset_to_reference): Likewise.
1609         (maybe_fold_stmt_addition): Adjust.
1610
1611 2009-09-09  Richard Guenther  <rguenther@suse.de>
1612
1613         * tree.c (free_lang_data_in_type): Do not free the type variant
1614         chains.
1615         (free_lang_data): Merge char_type_node with its properly signed
1616         variant.
1617         (pass_ipa_free): Collect after freeing language specific data.
1618
1619 2009-09-09  Michael Matz  <matz@suse.de>
1620
1621         PR middle-end/41268
1622         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1623         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1624         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1625         to reflect reality.
1626
1627 2009-09-08  DJ Delorie  <dj@redhat.com>
1628
1629         * config/mep/mep.c (conversions[]): Add "ml" pattern.
1630
1631 2009-09-04  Jason Merrill  <jason@redhat.com>
1632
1633         * tree.c (tree_find_value): Remove.
1634         * tree.h: Remove prototype.
1635         * varasm.c (assemble_external): Use value_member instead.
1636
1637 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1638
1639         * toplev.c (process_options): Choose default debugging type when
1640         gtoggle enables debug info and type is unset.
1641
1642 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1643
1644         PR debug/41276
1645         PR debug/41307
1646         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1647         invalid subreg.
1648
1649 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1650
1651         * configure: Rebuilt with modified libtool.m4.
1652
1653 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1654
1655         PR debug/41229
1656         PR debug/41291
1657         PR debug/41300
1658         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1659
1660 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1661
1662         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1663         (remove_statement): Likewise.
1664         (rewrite_use_nonlinear_expr): Adjust.
1665         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1666         * tree-ssa.c (release_defs_bitset): ... this.  New.
1667         * tree-flow.h (release_defs_bitset): Declare.
1668
1669 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1670
1671         PR debug/41232
1672         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1673         in the middle block.
1674
1675 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
1676
1677         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1678         via intptr_t to long type.
1679         (insert_operand_rank): Cast long type via intptr_t to
1680         pointer type.
1681         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
1682         pointer to scalar.
1683         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
1684         from pointer to unsigned via uintptr_t.
1685
1686         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
1687         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
1688         and HAVE_INTPTR_T.
1689         * configure: Regenerated.
1690         * config.in: Regenerated
1691         * system.h (stdint.h): Add include.
1692         (inttypes.h): Likewise.
1693         * Makefile.in (aclocal): Add config/stdint.m4.
1694         * aclocal.m4: Regenerated.
1695
1696 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1697
1698         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
1699         variables.
1700         (note_np_check_stores): New function.
1701         (harmless_null_pointer_p): New function.
1702         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
1703         changed.  Take into account whether we're in the shadow of a condjump
1704         that tested NP_REG for NULL.
1705         Lose all code that tested for SEQUENCEs.
1706         (workaround_speculation): Avoid inserting NOPs for loads that are
1707         either always executed or a NULL pointer.
1708
1709 2009-09-08  Jan Hubicka  <jh@suse.cz>
1710
1711         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
1712         * params.def (early-inlining-insns): Likewise.
1713
1714 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
1715
1716         PR rtl-optimization/41239
1717         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
1718         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
1719         lists.
1720         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
1721         across calls, as the calls might not always return normally.
1722         (call_may_noreturn_p): New function.
1723         (deps_analyze_insn): Update last_function_call_may_noreturn list.
1724         (init_deps): Initialize it.
1725         (remove_from_deps): Also remove calls from
1726         last_function_call_may_noreturn list.
1727
1728 2009-09-07  Richard Henderson  <rth@redhat.com>
1729
1730         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
1731         more VR->OPERANDS than LHS operands.  Free LHS before returning.
1732
1733 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1734
1735         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
1736         (attr "addrtype"): New member "spreg".
1737         Use it if mem_spfp_address_operand is true for the address.
1738         (attr "type"): New entry "stall".
1739         (cpu_unit "load"): New.
1740         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
1741         "load".
1742         (insn_reservation "loadsp"): New.
1743         (insn_reservation "load_stall1"): New.
1744         (insn_reservation "load_stall3"): New.
1745         (stall): New insn.
1746         * config/bfin/predicates.md (const1_operand, const3_operand): New.
1747         (mem_p_address_operand): Exclude stack and frame pointer based
1748         addresses.
1749         (mem_spfp_address_operand): New; match them here.
1750         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
1751         (bfin_reorg): Call it if scheduling insns.
1752         (bfin_gen_bundles): Remove dummy insns created by
1753         add_sched_insns_for_speculation.
1754
1755         From Jie Zhang <jie.zhang@analog.com>:
1756         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
1757         bfin_si_revision, bfin_workarounds): Move these ...
1758         * config/bfin/bfin.h: ... here.
1759
1760         From Mike Frysinger  <michael.frysinger@analog.com>
1761         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
1762         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
1763         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
1764         bf547m, bf548m, and bf549m.
1765         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
1766         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
1767         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
1768         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
1769         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1770         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
1771         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1772         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1773         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
1774         bf542m, bf544m, bf547m, bf548m, and bf549m.
1775
1776         From Jie Zhang <jie.zhang@analog.com>:
1777         * config/bfin/predicates.md (p_register_operand): New predicate.
1778         (dp_register_operand): New predicate.
1779         * config/bfin/bfin-protos.h (WA_05000074): Define.
1780         (ENABLE_WA_05000074): Define.
1781         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
1782         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
1783         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
1784         (define_attr addrtype): Allow load/store register to be P register.
1785         (define_attr storereg): New.
1786         (define_cpu_unit anomaly_05000074): New.
1787         (define_insn_reservation dsp32shiftimm): New.
1788         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
1789         (define_insn_reservation loadp): Cannot use slot2.
1790         (define_insn_reservation loadsp): Cannot use slot2.
1791         (define_insn_reservation storep): Cannot use slot2. Does not
1792         apply when working around 05000074.
1793         (define_insn_reservation storep_anomaly_05000074): New.
1794         (define_insn_reservation storei): Does not apply when working
1795         around 05000074.
1796         (define_insn_reservation storei_anomaly_05000074): New.
1797         (define_attr length): Add dsp32shiftimm case.
1798         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
1799         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
1800         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
1801         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
1802         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
1803
1804 2009-09-07  Martin Jambor  <mjambor@suse.cz>
1805
1806         PR middle-end/41282
1807         * tree-sra.c (create_artificial_child_access): Return NULL if
1808         build_ref_for_offset fails.
1809         (propagate_subacesses_accross_link): Allow build_ref_for_offset
1810         and create_artificial_child_access to fail.
1811
1812 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
1813
1814         PR c++/41214
1815         * unwind-dw2.c (uw_init_context_1): Mark noinline.
1816         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
1817         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
1818
1819 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1820
1821         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
1822         block, ensure it has an exit edge.  Emit a barrier after a jump.
1823
1824 2009-09-07  Nick Clifton  <nickc@redhat.com>
1825
1826         * gcc.c (this_is_linker_script): New variable.  Like
1827         this_is_library_file but for the %T constructor.
1828         (end_going_arg): If this_is_linker_script is set then locate the
1829         script and insert a --script switch before it
1830         (do_spec_2): Initialise this_is_linker_script.
1831         (do_spec_1): Likewise.  Handle %T construct.
1832         (eval_spec_function): Preserve this_is_linker_script.
1833         * doc/invoke.texi: Document %T construct in spec files.
1834         * config/m32c/m32c.h (LIB_SPEC): Use it.
1835
1836 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1837
1838         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
1839         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
1840         when volatile flag is set.
1841         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
1842
1843 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
1844
1845         PR bootstrap/41241
1846         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
1847         (combine_stack_adjustments_for_block): Allow insns between stack
1848         adjustments and stores with corresponding pre-(dec|inc)rement or
1849         pre-modify operation.
1850
1851 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
1852
1853         PR bootstrap/41241
1854         * combine-stack-adj.c (struct csa_memlist): Rename to...
1855         (struct csa_reflist): ... this.  Rename mem field to ref.
1856         (free_csa_memlist): Rename to...
1857         (free_csa_reflist): ... this.
1858         (record_one_stack_memref): Rename to...
1859         (record_one_stack_ref): ... this.  Handle also REG_P.
1860         (try_apply_stack_adjustment): Handle also REG_P.
1861         (struct record_stack_memrefs_data): Rename to...
1862         (struct record_stack_refs_data): ... this.  Rename memlist field to
1863         reflist.
1864         (record_stack_memrefs): Rename to...
1865         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
1866         subexpressions instead of failing when a MEM contains SP references.
1867         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
1868         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
1869
1870 2009-09-06  Richard Guenther  <rguenther@suse.de>
1871
1872         PR middle-end/41144
1873         * tree.c (build_array_type): Do not record types marked
1874         with structural equality in the canonical type hashtable.
1875
1876 2009-09-06  Richard Guenther  <rguenther@suse.de>
1877
1878         PR middle-end/41261
1879         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
1880
1881 2009-09-05  Richard Guenther  <rguenther@suse.de>
1882
1883         PR middle-end/41181
1884         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
1885
1886 2009-09-05  Richard Guenther  <rguenther@suse.de>
1887
1888         PR debug/41273
1889         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
1890
1891 2009-09-05  Richard Guenther  <rguenther@suse.de>
1892
1893         PR middle-end/41271
1894         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
1895         before comparing function argument types.
1896
1897 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1898
1899         PR target/41024
1900         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
1901         the assembler.
1902
1903 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1904
1905         Revert:
1906         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1907
1908         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1909         locators before emit_insn is called.
1910
1911 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1912
1913         PR bootstrap/41241
1914         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
1915         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
1916         (reginfo_init): Don't call allocate_reg_info.
1917
1918 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
1919
1920         PR target/41262
1921         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
1922         NONDEBUG_INSN_P instead of INSN_P.
1923
1924 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1925
1926         PR debug/41225
1927         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
1928
1929 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1930
1931         PR target/41252
1932         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
1933         pattern of the split.
1934
1935 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1936
1937         * toplev.c (process_options): Move setter of flag_var_tracking
1938         before other tests that depend on it.  Move down setter of
1939         flag_rename_registers.  Don't enable var-tracking-assignments
1940         by default if selective scheduling is enabled.  Warn if both
1941         are enabled.
1942
1943 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
1944
1945         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
1946         comment.  Use switch statement to catch overlaps between rtx
1947         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
1948         (IS_DECL_CODE): ... here. Remove.
1949         (check_value_is_not_decl): Remove.
1950         (dv_from_decl, dv_from_value): Check after conversion.
1951
1952 2009-09-04  Richard Guenther  <rguenther@suse.de>
1953
1954         PR middle-end/41257
1955         * (cgraph_finalize_compilation_unit): Move finalizing aliases
1956         after emitting tunks.  Move emitting thunks and ctors from ...
1957         (cgraph_optimize): ... here.  Remove redundant
1958         cgraph_analyze_functions.
1959         * varasm.c (find_decl_and_mark_needed): Remove no longer
1960         necessary check.
1961         (finish_aliases_1): Adjust check for thunk aliases.
1962
1963 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
1964
1965         * config/arm/arm.md (ctzsi2): Added braces
1966         to avoid warning that broke booststrap.
1967
1968 2009-09-04  Martin Jambor  <mjambor@suse.cz>
1969
1970         PR tree-optimization/41112
1971         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
1972         handle variable-bounded arrays.
1973         (expr_with_var_bounded_array_refs_p): New function.
1974         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
1975
1976 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
1977
1978         * config/s390/2097.md: Removed two incorrect bypasses.
1979         (z10_fsimpdf): Fixed latency.
1980         (z10_fhex): New insn_reservation.
1981         (z10_floaddf): Fixed latency.
1982         (z10_floadsf): Fixed latency.
1983         (z10_ftrunctf): Fixed latency.
1984         (z10_ftruncdf): Fixed latency.
1985         * config/s390/s390.c (z10_cost): Fixed values.
1986         (s390_adjust_priority): Added z10 path.
1987         * config/s390/s390.md (type): Added fhex.
1988         (*mov<mode>_64dfp): Updated type attribute.
1989         (*mov<mode>_64): Updated type attribute.
1990         (*mov<mode>_31): Updated type attribute.
1991         (*mov<mode>"): Likewise.
1992         * config/s390/2084.md (x_fsimpdf): Updated condition.
1993
1994 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1995
1996         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
1997         RTXs in the predicate for operand 1.
1998
1999 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
2000
2001         * config/arm/arm.md (UNSPEC_RBIT): New constant.
2002         (rbitsi2): New insn.
2003         (ctzsi2): New expand.
2004         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
2005
2006 2009-09-03  Martin Jambor  <mjambor@suse.cz>
2007
2008         * tree-sra.c (duplicate_expr_for_different_base): Removed.
2009         (create_artificial_child_access): Use build_ref_for_offset instead
2010         of duplicate_expr_for_different_base.
2011         (propagate_subacesses_accross_link): Likewise.
2012
2013 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
2014
2015         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
2016         of INSN_P.
2017         (mips16e_collect_argument_saves): Skip debug instructions.
2018         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
2019         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
2020         (r10k_insert_cache_barriers): Likewise.
2021         (mips_reorg_process_insns): Likewise.
2022
2023 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2024
2025         PR bootstrap/41241
2026         * ira.c (update_equiv_reg): Remove check on class likely spill.
2027
2028 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
2029
2030         PR debug/41236
2031         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
2032         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
2033         it or SUBREG.
2034
2035         PR debug/41238
2036         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
2037         the stack slot if it is passed by invisible reference.
2038         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
2039         by invisible reference.
2040
2041 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2042
2043         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2044         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2045         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
2046         0.
2047         * config/bfin/sync.md: New file.
2048         * config/bfin/bfin.md: Include it.
2049         (UNSPEC_ATOMIC): New.
2050         (UNSPEC_ONES): Provide a unique number.
2051
2052         From Jie Zhang <jie.zhang@analog.com>:
2053         * config/bfin/bfin.c (ret_regs): New.
2054         (must_save_fp_p): Don't return true because of frame_pointer_needed.
2055         (must_save_rets_p): New.
2056         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
2057         current_function_is_leaf.
2058         (do_link): Likewise.
2059         (do_unlink): Likewise.
2060         (expand_interrupt_handler_prologue): Use ret_regs array.
2061         (expand_interrupt_handler_epilogue): Use ret_regs array and
2062         pass return register to gen_return_internal.
2063         (bfin_expand_epilogue): Pass return register to
2064         gen_return_internal.
2065         (bfin_expand_call): Explicitly clobber RETS.
2066         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
2067         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
2068         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
2069         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
2070         RETS.
2071         (return_internal): Take a reg rtx rather than the register number.
2072
2073 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
2074
2075         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
2076         when comparing against estimated_loop_iterations_int return.
2077
2078 2009-09-03  Richard Guenther  <rguenther@suse.de>
2079
2080         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
2081         eh_personality_libfunc.
2082
2083 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2084
2085         * tree-parloops.c (separate_decls_in_region): Add space.
2086
2087 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2088
2089         * tree-parloops.c (separate_decls_in_region): Change the condition
2090         checking if there are reductions in the loop.
2091
2092 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2093
2094         PR tree-optimization/38275
2095         * tree-parloops.c (parallelize_loops): Replace profitability condition
2096         for expected number of iterations.
2097
2098 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2099
2100         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
2101         (bootstrap-debug): Explain conditions in which it becomes default.
2102         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
2103         make it add to it.
2104
2105 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
2106
2107         * doc/invoke.texi (Optimize Options): Move
2108         -finline-small-functions to the -O2 list.
2109
2110 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2111
2112         * toplev.c (process_options): Enable var-tracking-assignments
2113         by default if var-tracking is enabled.
2114
2115 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
2116
2117         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
2118         barrier.
2119         * emit-rtl.c (prev_nonnote_insn_bb): New function.
2120         * rtl.h (prev_nonnote_insn_bb): Declare it.
2121
2122 2009-09-03  Diego Novillo  <dnovillo@google.com>
2123
2124         * cgraph.c (cgraph_node_for_decl): New.
2125         * cgraph.h (cgraph_node_for_decl): Declare.
2126         * tree.c (host_integerp): Return 0 if T is NULL.
2127
2128 2009-09-03  Diego Novillo  <dnovillo@google.com>
2129
2130         * tree.h (struct alias_pair): Move from varasm.c.
2131         (alias_pairs): Likewise.
2132         (TYPE_MAXVAL): Define.
2133         (TYPE_MINVAL): Define.
2134         (iterative_hash_host_wide_int): Declare.
2135         (remove_unreachable_alias_pairs): Declare.
2136         * tree-pass.h (pass_ipa_free_lang_data): Declare.
2137         * diagnostic.c (default_diagnostic_starter): Make extern.
2138         (default_diagnostic_finalizer): Make extern.
2139         * diagnostic.h (default_diagnostic_starter): Declare.
2140         (default_diagnostic_finalizer): Declare.
2141         (default_tree_printer): Declare.
2142         * toplev.c (default_tree_printer): Make extern.
2143
2144 2009-09-03  Richard Guenther  <rguenther@suse.de>
2145             Diego Novillo  <dnovillo@google.com>
2146
2147         * cgraph.c (cgraph_add_new_function): Remove gimplification.
2148         * cgraphunit.c (cgraph_expand_function): Do not emit
2149         associated thunks from here.
2150         (cgraph_emit_thunks): New.
2151         (cgraph_optimize): Call it.
2152         Return if any IPA pass finds an error.
2153         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
2154         by thunks.
2155
2156 2009-09-03  Simon Baldwin  <simonb@google.com>
2157             Rafael Espindola  <espindola@google.com>
2158             Richard Guenther  <rguenther@suse.de>
2159             Doug Kwan  <dougkwan@google.com>
2160             Diego Novillo  <dnovillo@google.com>
2161
2162         * tree.c: Include tree-pass.h, langhooks-def.h,
2163         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
2164         (free_lang_data_in_type): New.
2165         (need_assembler_name_p): New.
2166         (free_lang_data_in_block): New.
2167         (free_lang_data_in_decl): New.
2168         (struct free_lang_data_d): New.
2169         (add_tree_to_fld_list): New.
2170         (find_decls_types_r): New.
2171         (get_eh_types_for_runtime): New.
2172         (find_decls_types_in_eh_region): New.
2173         (find_decls_types_in_node): New.
2174         (find_decls_types_in_var): New.
2175         (free_lang_data_in_cgraph): New.
2176         (free_lang_data): New.
2177         (gate_free_lang_data): New.
2178         (pass_ipa_free_lang_data): New.
2179
2180 2009-09-03  Diego Novillo  <dnovillo@google.com>
2181
2182         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
2183         * langhooks.h (struct lang_hooks): Add field free_lang_data.
2184         (lang_hooks): Remove const qualifier.
2185         * ipa.c (cgraph_remove_unreachable_nodes): Call
2186         remove_unreachable_alias_pairs.
2187         * except.c (add_type_for_runtime): Check if TYPE has
2188         already been converted.
2189         (lookup_type_for_runtime): Likewise.
2190         (check_handled): Handle converted types.
2191         * varasm.c (remove_unreachable_alias_pairs): New.
2192         * gimple.c: Include demangle.h.
2193         (gimple_decl_printable_name): New.
2194         (gimple_fold_obj_type_ref): New.
2195         * gimple.h (gimple_decl_printable_name): Declare.
2196         (gimple_fold_obj_type_ref): Declare.
2197         * passes.c (init_optimization_passes): Add pass
2198         pass_ipa_free_lang_data.
2199         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
2200         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
2201
2202 2009-09-03  Diego Novillo  <dnovillo@google.com>
2203
2204         * c-lang.c (lang_hooks): Remove const qualifier.
2205
2206 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
2207
2208         * doc/install.texi (*-*-freebsd*): Update target information.
2209
2210 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
2211
2212         * hard-reg-set.h (call_fixed_regs): Remove.
2213         * reginfo.c (call_fixed_regs): Remove.
2214         (init_reg_sets_1): Remove initialization of call_fixed_regs.
2215         (globalize_reg): Don't use call_fixed_regs.
2216         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
2217         call_fixed_regs.
2218
2219 2009-09-01  Michael Matz  <matz@suse.de>
2220
2221         * expr.h (emit_storent_insn, expand_expr_real_1,
2222         expand_expr_real_2): Declare.
2223         * expr.c (emit_storent_insn, expand_expr_real_1,
2224         expand_expr_real_2): Export.
2225         (store_expr): Setting and evaluating dont_return_target is useless.
2226         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
2227         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
2228         * except.c (expand_resx_expr): Rename to ...
2229         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
2230         * except.h (expand_resx_stmt): Declare.
2231         * stmt.c: Add include gimple.h
2232         (expand_asm_expr): Rename to ...
2233         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
2234         (expand_case): Rewrite to take gimple statement.
2235         * tree.h (expand_asm_stmt): Declare.
2236         (expand_case): Change prototype.
2237         * Makefile.in (stmt.o): Depend on gimple.h.
2238         * builtins.c (expand_builtin_synchronize): Build gimple asm
2239         statement, not an ASM_EXPR.
2240         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
2241         gimple_to_tree, release_stmt_tree): Remove.
2242         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
2243         ggc_free, but hold comparison code and operands separately.
2244         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
2245         (expand_call_stmt, expand_gimple_stmt_1,
2246         expand_gimple_stmt): New helpers.
2247         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2248         release_stmt_tree.  Call expand_gimple_stmt instead.
2249         (expand_gimple_basic_block): Ditto.
2250
2251         * calls.c (emit_call_1): Don't look at EH regions here, make
2252         fntree parameter useless.
2253         (expand_call): New local rettype for TREE_TYPE(exp), use it
2254         throughout.  Remove local p, use addr instead.
2255         Don't look at EH regions here.
2256
2257 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
2258
2259         * doc/invoke.texi (-fsched-pressure): Document it.
2260         (-fsched-reg-pressure-heuristic): Remove it.
2261
2262         * reload.c (ira.h): Include.
2263         (find_reloads): Add choosing reload on number of small spilled
2264         classes.
2265
2266         * haifa-sched.c (ira.h): Include.
2267         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2268         saved_reg_pressure, curr_reg_live, saved_reg_live,
2269         region_ref_regs): New variables.
2270         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2271         initiate_reg_pressure_info, setup_ref_regs,
2272         initiate_bb_reg_pressure_info, save_reg_pressure,
2273         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2274         functions.
2275         (setup_insn_reg_pressure_info): New function.
2276         (rank_for_schedule): Add pressure checking and insn issue time.
2277         Remove comparison of insn reg weights.
2278         (ready_sort): Set insn reg pressure info.
2279         (update_register_pressure, setup_insn_max_reg_pressure,
2280         update_reg_and_insn_max_reg_pressure,
2281         sched_setup_bb_reg_pressure_info): New functions.
2282         (schedule_insn): Add code for printing and updating reg pressure info.
2283         (find_set_reg_weight, find_insn_reg_weight): Remove.
2284         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2285         (debug_ready_list): Print reg pressure info.
2286         (schedule_block): Ditto.  Check insn issue time.
2287         (sched_init): Set up sched_pressure_p.  Allocate and set up some
2288         reg pressure related info.
2289         (sched_finish): Free some reg pressure related info.
2290         (fix_tick_ready): Make insn always ready if pressure_p.
2291         (init_h_i_d): Don't call find_insn_reg_weight.
2292         (haifa_finish_h_i_d): Free insn reg pressure info.
2293
2294         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2295         ira_memory_move_cost, ira_class_hard_regs,
2296         ira_class_hard_regs_num, ira_no_alloc_regs,
2297         ira_available_class_regs, ira_reg_class_cover_size,
2298         ira_reg_class_cover, ira_class_translate): Move to ira.h.
2299
2300         * ira-lives.c (single_reg_class): Check mode to find how many
2301         registers are necessary for operand.
2302         (ira_implicitly_set_insn_hard_regs): New.
2303
2304         * common.opt (fsched-pressure): New options.
2305         (fsched-reg-pressure-heuristic): Remove.
2306
2307         * ira.c (setup_eliminable_regset): Rename to
2308         ira_setup_eliminable_regset.  Make it external.
2309         (expand_reg_info): Pass cover class to setup_reg_classes.
2310         (ira): Call resize_reg_info instead of allocate_reg_info.
2311
2312         * sched-deps.c: Include ira.h.
2313         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2314         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2315         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2316         mark_insn_hard_regno_birth, mark_insn_reg_birth,
2317         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2318         mark_insn_reg_store, mark_insn_reg_clobber,
2319         setup_insn_reg_pressure_info): New.
2320         (sched_analyze_1): Update implicit_reg_pending_uses.
2321         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2322         Use them to create dependencies.  Set insn reg uses and pressure
2323         info.  Process reg_pending_uses in one place.
2324         (free_deps): Free implicit sets.
2325         (remove_from_deps): Remove implicit sets if necessary.  Check
2326         implicit sets when clearing reg_last_in_use.
2327         (init_deps_global): Clear implicit_reg_pending_clobbers and
2328         implicit_reg_pending_uses.
2329
2330         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2331         ira_memory_move_cost, ira_class_hard_regs,
2332         ira_class_hard_regs_num, ira_no_alloc_regs,
2333         ira_available_class_regs, ira_reg_class_cover_size,
2334         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2335         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2336         ira_implicitly_set_insn_hard_regs): New prototypes.
2337
2338         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2339         cost_elements_num): New variables.
2340         (allocno_costs, total_costs): Rename to costs and
2341         total_allocno_costs.
2342         (COSTS_OF_ALLOCNO): Rename to COSTS.
2343         (allocno_pref): Rename to pref.
2344         (allocno_pref_buffer): Rename to pref_buffer.
2345         (common_classes): Rename to regno_cover_class.
2346         (COST_INDEX): New.
2347         (record_reg_classes): Set allocno attributes only if allocno_p.
2348         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2349         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2350         and COSTS_OF_ALLOCNO.
2351         (print_costs): Rename to print_allocno_costs.
2352         (print_pseudo_costs): New.
2353         (process_bb_node_for_costs): Split into 2 functions with new
2354         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2355         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2356         new parameter dump_file.  Use cost_elements_num instead of
2357         ira_allocnos_num.  Make one iteration if preferred classes were
2358         already calculated for scheduler.  Make 2 versions of code
2359         depending on allocno_p.
2360         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2361         regno_cover_class and COSTS instead of common_classes and
2362         COSTS_OF_ALLOCNO.
2363         (init_costs, finish_costs): New.
2364         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2365         init_costs and finish_costs.
2366         (ira_set_pseudo_classes): New.
2367
2368         * rtl.h (allocate_reg_info): Remove.
2369         (resize_reg_info): Change return type.
2370         (reg_cover_class): New.
2371         (setup_reg_classes): Add new parameter.
2372
2373         * sched-int.h (struct deps_reg): New member implicit_sets.
2374         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2375         (INCREASE_BITS): New macro.
2376         (struct reg_pressure_data, struct reg_use_data): New.
2377         (struct _haifa_insn_data): Remove reg_weight.  Add members
2378         reg_pressure, reg_use_list, reg_set_list, and
2379         reg_pressure_excess_cost_change.
2380         (struct deps): New member implicit_sets.
2381         (pressure_p): New variable.
2382         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2383         (struct reg_pressure_data, struct reg_use_data): New.
2384         (INSN_REG_WEIGHT): Remove.
2385         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2386         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2387         (sched_init_region_reg_pressure_info,
2388         sched_setup_bb_reg_pressure_info): New prototypes.
2389
2390         * reginfo.c (struct reg_pref): New member coverclass.
2391         (reg_cover_class): New function.
2392         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2393         (reg_info_size): New variable.
2394         (allocate_reg_info): Make static.  Setup reg_info_size.
2395         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2396         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2397
2398         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2399         the dependencies.
2400
2401         * sched-rgn.c (deps_join): Set up implicit_sets.
2402         (schedule_region): Set up region and basic blocks pressure
2403         relative info.
2404
2405         * passes.c (init_optimization_passes): Move
2406         pass_subregs_of_mode_init before pass_sched.
2407
2408 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2409
2410         * tree-sra.c (struct access): New field grp_hint.
2411         (dump_access): Dump grp_hint.
2412         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2413         multiple times.
2414         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2415         those which have been specifically read and somehow written to.
2416         (propagate_subacesses_accross_link): Set grp_hint of right child and
2417         also possibly of the left child.
2418
2419 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2420
2421         * tree-object-size.c (addr_object_size): Always use object_size_type
2422         0 or 2 when determining the pointer pointed object size.
2423
2424 2009-09-02  Richard Guenther  <rguenther@suse.de>
2425
2426         Revert
2427         2009-08-31  Richard Guenther  <rguenther@suse.de>
2428
2429         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2430         to query if the memory regions for memmove overlap.
2431         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2432         asserts on pointers, instead deal with odd trees.
2433         (ptr_derefs_may_alias_p): Likewise.
2434         (refs_may_alias_p_1): Constructor bases also never alias.
2435
2436 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2437
2438         Revert:
2439         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2440         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2441
2442 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2443
2444         * doc/invoke.texi (-fvar-tracking-assignments): New.
2445         (-fvar-tracking-assignments-toggle): New.
2446         (-fdump-final-insns=file): Mark filename as optional.
2447         (--param min-nondebug-insn-uid): New.
2448         (-gdwarf-@{version}): Mention version 4.
2449         * opts.c (common_handle_option): Accept it.
2450         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2451         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2452         insns as uses.  Don't reject change because of debug insn.
2453         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2454         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2455         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2456         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2457         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2458         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2459         * doc/gimple.texi (is_gimple_debug): New.
2460         (gimple_debug_bind_p): New.
2461         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2462         * doc/install.texi (bootstrap-debug): More details.
2463         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2464         (bootstrap-debug-lib): More details.
2465         (bootstrap-debug-ckovw): Update.
2466         (bootstrap-time): New.
2467         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2468         (insert_phi_nodes_for): Insert debug stmts.
2469         (rewrite_stmt): Take iterator.  Insert debug stmts.
2470         (rewrite_enter_block): Adjust.
2471         (maybe_replace_use_in_debug_stmt): New.
2472         (rewrite_update_stmt): Use it.
2473         (mark_use_interesting): Return early for debug stmts.
2474         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2475         stmts before replacing stmt.
2476         (move_computations_stmt): Likewise.
2477         * ira-conflicts.c (add_copies): Skip debug insns.
2478         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2479         (regstat_bb_compute_ri): Skip debug insns.
2480         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2481         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2482         check_loop_closed_ssa_stmt): Skip debug stmts.
2483         * tree-tailcall.c (find_tail_calls): Likewise.
2484         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2485         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2486         (build_var_debug_value_stat): Declare.
2487         (build_var_debug_value): Define.
2488         (target_for_debug_bind): Declare.
2489         * reload.c (find_equiv_reg): Skip debug insns.
2490         * rtlanal.c (reg_used_between_p): Skip debug insns.
2491         (side_effects_p): Likewise.
2492         (canonicalize_condition): Likewise.
2493         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2494         insns never depend on debug insns.
2495         (create_ddg_dep_no_link): Likewise.
2496         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2497         Don't add inter-loop dependencies for debug insns.
2498         (build_intra_loop_deps): Likewise.
2499         (create_ddg): Count debug insns.
2500         * ddg.h (struct ddg::num_debug): New.
2501         (num_backargs): Pair up with previous int field.
2502         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2503         -fcompare-debug-second.
2504         * final.c (get_attr_length_1): Skip debug insns.
2505         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2506         * gcc.c (invoke_as): Call compare-debug-dump-opt.
2507         (driver_self_specs): Map -fdump-final-insns to
2508         -fdump-final-insns=..
2509         (get_local_tick): New.
2510         (compare_debug_dump_opt_spec_function): Test for . argument and
2511         compute output name.  Compute temp output spec without flag name.
2512         Compute -frandom-seed.
2513         (OPT): Undef after use.
2514         * cfgloopanal.c (num_loop_insns): Skip debug insns.
2515         (average_num_loop_insns): Likewise.
2516         * params.h (MIN_NONDEBUG_INSN_UID): New.
2517         * gimple.def (GIMPLE_DEBUG): New.
2518         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2519         * auto-inc-dec.c (merge_in_block): Skip debug insns.
2520         (merge_in_block): Fix whitespace.
2521         * toplev.c (flag_var_tracking): Update comment.
2522         (flag_var_tracking_assignments): New.
2523         (flag_var_tracking_assignments_toggle): New.
2524         (process_options): Don't open final insns dump file if we're not
2525         going to write to it.  Compute defaults for var_tracking.
2526         * df-scan.c (df_insn_rescan_debug_internal): New.
2527         (df_uses_record): Handle debug insns.
2528         * haifa-sched.c (ready): Initialize n_debug.
2529         (contributes_to_priority): Skip debug insns.
2530         (dep_list_size): New.
2531         (priority): Use it.
2532         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
2533         they're ready.  Disregard previous debug insns to make decisions.
2534         (queue_insn): Never queue debug insns.
2535         (ready_add, ready_remove_first, ready_remove): Count debug insns.
2536         (schedule_insn): Don't reject debug insns because of issue rate.
2537         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2538         (queue_to_ready): Skip and discount debug insns.
2539         (choose_ready): Let debug insns through.
2540         (schedule_block): Check boundary debug insns.  Discount debug
2541         insns, schedule them early.  Adjust whitespace.
2542         (set_priorities): Check for boundary debug insns.
2543         (add_jump_dependencies): Use dep_list_size.
2544         (prev_non_location_insn): New.
2545         (check_cfg): Use it.
2546         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2547         stmts.
2548         (remove_unused_ivs): Reset debug stmts.
2549         * modulo-sched.c (const_iteration_count): Skip debug insns.
2550         (res_MII): Discount debug insns.
2551         (loop_single_full_bb_p): Skip debug insns.
2552         (sms_schedule): Likewise.
2553         (sms_schedule_by_order): Likewise.
2554         (ps_has_conflicts): Likewise.
2555         * caller-save.c (refmarker_fn): New.
2556         (save_call_clobbered_regs): Replace regs with saved mem in
2557         debug insns.
2558         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
2559         Call refmarker_fn mark for hardregnos.
2560         (mark_reg_as_referenced): New.
2561         (replace_reg_with_saved_mem): New.
2562         * ipa-pure-const.c (check_stmt): Skip debug stmts.
2563         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
2564         searching back.
2565         (cse_extended_basic_block): Skip debug insns.
2566         (count_reg_usage): Likewise.
2567         (is_dead_reg): New, split out of...
2568         (set_live_p): ... here.
2569         (insn_live_p): Use it for debug insns.
2570         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2571         (execute_optimize_stdarg): Likewise.
2572         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2573         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2574         changes in debug stmts as changes.
2575         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2576         (moveup_expr): Don't move across debug insns.  Don't move
2577         debug insn if it would create a bookkeeping block.
2578         (moveup_expr_cached): Don't use cache for debug insns that
2579         are heads of blocks.
2580         (compute_av_set_inside_bb): Skip debug insns.
2581         (sel_rank_for_schedule): Schedule debug insns first.  Remove
2582         dead code.
2583         (block_valid_for_bookkeeping_p); Support lax searches.
2584         (create_block_for_bookkeeping): Adjust block numbers when
2585         encountering debug-only blocks.
2586         (find_place_for_bookkeeping): Deal with debug-only blocks.
2587         (generate_bookkeeping_insn): Accept no place to insert.
2588         (remove_temp_moveop_nops): New argument full_tidying.
2589         (prepare_place_to_insert): Deal with debug insns.
2590         (advance_state_on_fence): Debug insns don't start cycles.
2591         (update_boundaries): Take fence as argument.  Deal with
2592         debug insns.
2593         (schedule_expr_on_boundary): No full_tidying on debug insns.
2594         (fill_insns): Deal with debug insns.
2595         (track_scheduled_insns_and_blocks): Don't count debug insns.
2596         (need_nop_to_preserve_insn_bb): New, split out of...
2597         (remove_insn_from_stream): ... this.
2598         (fur_orig_expr_not_found): Skip debug insns.
2599         * rtl.def (VALUE): Move up.
2600         (DEBUG_INSN): New.
2601         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2602         (nearest_common_dominator_of_uses): Take debug_stmts argument.
2603         Set it if debug stmts are found.
2604         (statement_sink_location): Skip debug stmts.  Propagate
2605         moving defs into debug stmts.
2606         * ifcvt.c (first_active_insn): Skip debug insns.
2607         (last_active_insns): Likewise.
2608         (cond_exec_process_insns): Likewise.
2609         (noce_process_if_block): Likewise.
2610         (check_cond_move_block): Likewise.
2611         (cond_move_convert_if_block): Likewise.
2612         (block_jumps_and_fallthru_p): Likewise.
2613         (dead_or_predicable): Likewise.
2614         * dwarf2out.c (debug_str_hash_forced): New.
2615         (find_AT_string): Add comment.
2616         (gen_label_for_indirect_string): New.
2617         (get_debug_string_label): New.
2618         (AT_string_form): Use it.
2619         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
2620         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
2621         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2622         several operations that cannot be represented with DWARF opcodes.
2623         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
2624         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2625         (dwarf2out_var_location): Take during-call mark into account.
2626         (output_indirect_string): Update comment.  Output if there are
2627         label and references.
2628         (prune_indirect_string): New.
2629         (prune_unused_types): Call it if debug_str_hash_forced.
2630         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2631         (dw_long_long_const): Remove.
2632         (struct dw_val_struct): Change val_long_long type to rtx.
2633         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2634         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2635         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
2636         component instead of HOST_BITS_PER_LONG.
2637         (output_loc_operands): Likewise.  For const8* assert
2638         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2639         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2640         rather than HOST_BITS_PER_LONG is >= 64.
2641         (add_AT_long_long): Remove val_hi and val_lo arguments, add
2642         val_const_double.
2643         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2644         HOST_BITS_PER_LONG for dw_val_class_long_long.
2645         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
2646         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
2647         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2648         DW_OP_stack_value.
2649         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2650         Handle DW_OP_implicit_value.
2651         (extract_int): Move prototype earlier.
2652         (mem_loc_descriptor): For SUBREG punt if inner
2653         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
2654         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
2655         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2656         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2657         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2658         instead of Pmode size.
2659         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
2660         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2661         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
2662         (concat_loc_descriptor, concatn_loc_descriptor,
2663         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2664         (add_location_or_const_value_attribute): Likewise.  For single
2665         location loc_lists attempt to use add_const_value_attribute
2666         for constant decls.  Add DW_AT_const_value even if
2667         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2668         in its expression.
2669         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2670         (control_flow_insn_p): Likewise.
2671         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2672         (separate_decls_in_region_debug_bind): New.
2673         (separate_decls_in_region): Process debug bind stmts afterwards.
2674         * recog.c (verify_changes): Handle debug insns.
2675         (extract_insn): Likewise.
2676         (peephole2_optimize): Skip debug insns.
2677         * dse.c (scan_insn): Skip debug insns.
2678         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2679         Pass it on.
2680         (setup_id_for_insn): Handle debug insns.
2681         (maybe_tidy_empty_bb): Adjust whitespace.
2682         (tidy_control_flow): Skip debug insns.
2683         (sel_remove_insn): Adjust for debug insns.
2684         (sel_estimate_number_of_insns): Skip debug insns.
2685         (create_insn_rtx_from_pattern): Handle debug insns.
2686         (create_copy_of_insn_rtx): Likewise.
2687         * sel-sched-.h (sel_bb_end): Declare.
2688         (sel_bb_empty_or_nop_p): New.
2689         (get_all_loop_exits): Use it.
2690         (_eligible_successor_edge_p): Likewise.
2691         (return_nop_to_pool): Adjust.
2692         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
2693         * ira-lives.c (process_bb_node_lives): Skip debug insns.
2694         * gimple-pretty-print.c (dump_gimple_debug): New.
2695         (dump_gimple_stmt): Use it.
2696         (dump_bb_header): Skip gimple debug stmts.
2697         * regmove.c (optimize_reg_copy_1): Discount debug insns.
2698         (fixup_match_2): Likewise.
2699         (regmove_backward_pass): Likewise.  Simplify combined
2700         replacement.  Handle debug insns.
2701         * function.c (instantiate_virtual_regs): Handle debug insns.
2702         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
2703         * print-rtl.h: Include cselib.h.
2704         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
2705         * df.h (df_inns_rescan_debug_internal): Declare.
2706         * gcse.c (alloc_hash_table): Estimate n_insns.
2707         (cprop_insn): Don't regard debug insns as changes.
2708         (bypass_conditional_jumps): Skip debug insns.
2709         (one_pre_gcse_pass): Adjust.
2710         (one_code_hoisting_pass): Likewise.
2711         (compute_ld_motion_mems): Skip debug insns.
2712         (one_cprop_pass): Adjust.
2713         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
2714         (if_convertible_stmt_p): Handle debug stmts.
2715         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
2716         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
2717         * ira-build.c (create_bb_allocnos): Skip debug insns.
2718         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
2719         (has_single_use): Likewise.
2720         (single_imm_use): Likewise.
2721         (num_imm_uses): Likewise.
2722         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
2723         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
2724         (create_outofssa_var_map): Likewise.
2725         * lower-subreg.c (adjust_decomposed_uses): New.
2726         (resolve_debug): New.
2727         (decompose_multiword_subregs): Use it.
2728         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
2729         * emit-rtl.c: Include params.h.
2730         (cur_debug_insn_uid): Define.
2731         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
2732         (copy_rtx_if_shared_1): Handle debug insns.
2733         (reset_used_flags): Likewise.
2734         (set_used_flags): LIkewise.
2735         (get_max_insn_count): New.
2736         (next_nondebug_insn): New.
2737         (prev_nondebug_insn): New.
2738         (make_debug_insn_raw): New.
2739         (emit_insn_before_noloc): Handle debug insns.
2740         (emit_jump_insn_before_noloc): Likewise.
2741         (emit_call_insn_before_noloc): Likewise.
2742         (emit_debug_insn_before_noloc): New.
2743         (emit_insn_after_noloc): Handle debug insns.
2744         (emit_jump_insn_after_noloc): Likewise.
2745         (emit_call_insn_after_noloc): Likewise.
2746         (emit_debug_insn_after_noloc): Likewise.
2747         (emit_insn_after): Take loc from earlier non-debug insn.
2748         (emit_jump_insn_after): Likewise.
2749         (emit_call_insn_after): Likewise.
2750         (emit_debug_insn_after_setloc): New.
2751         (emit_debug_insn_after): New.
2752         (emit_insn_before): Take loc from later non-debug insn.
2753         (emit_jump_insn_before): Likewise.
2754         (emit_call_insn_before): Likewise.
2755         (emit_debug_insn_before_setloc): New.
2756         (emit_debug_insn_before): New.
2757         (emit_insn): Handle debug insns.
2758         (emit_debug_insn): New.
2759         (emit_jump_insn): Handle debug insns.
2760         (emit_call_insn): Likewise.
2761         (emit): Likewise.
2762         (init_emit): Take min-nondebug-insn-uid into account.
2763         Initialize cur_debug_insn_uid.
2764         (emit_copy_of_insn_after): Handle debug insns.
2765         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
2766         location of single rhs in place.
2767         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
2768         (floor_sdiv_adjust): New.
2769         (cell_sdiv_adjust): New.
2770         (cell_udiv_adjust): New.
2771         (round_sdiv_adjust): New.
2772         (round_udiv_adjust): New.
2773         (wrap_constant): Moved from cselib.
2774         (unwrap_constant): New.
2775         (expand_debug_expr): New.
2776         (expand_debug_locations): New.
2777         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
2778         debug bind stmts.
2779         (gimple_expand_cfg): Expand debug locations.
2780         * cselib.c: Include tree-pass.h.
2781         (struct expand_value_data): New.
2782         (cselib_record_sets_hook): New.
2783         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
2784         (cselib_clear_table): Move, and implemnet in terms of...
2785         (cselib_reset_table_with_next_value): ... this.
2786         (cselib_get_next_unknown_value): New.
2787         (discard_useless_locs): Don't discard preserved values.
2788         (cselib_preserve_value): New.
2789         (cselib_preserved_value_p): New.
2790         (cselib_preserve_definitely): New.
2791         (cselib_clear_preserve): New.
2792         (cselib_preserve_only_values): New.
2793         (new_cselib_val): Take rtx argument.  Dump it in details.
2794         (cselib_lookup_mem): Adjust.
2795         (expand_loc): Take regs_active in struct.  Adjust.  Silence
2796         dumps unless details are requested.
2797         (cselib_expand_value_rtx_cb): New.
2798         (cselib_expand_value_rtx): Rename and reimplment in terms of...
2799         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
2800         without details.  Copy more subregs.  Try to resolve values
2801         using a callback.  Wrap constants.
2802         (cselib_subst_to_values): Adjust.
2803         (cselib_log_lookup): New.
2804         (cselib_lookup): Call it.
2805         (cselib_invalidate_regno): Don't count preserved values as useless.
2806         (cselib_invalidate_mem): Likewise.
2807         (cselib_record_set): Likewise.
2808         (struct set): Renamed to cselib_set, moved to cselib.h.
2809         (cselib_record_sets): Adjust.  Call hook.
2810         (cselib_process_insn): Reset table when it would be cleared.
2811         (dump_cselib_val): New.
2812         (dump_cselib_table): New.
2813         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
2814         (remove_forwarder_block): Support moving debug stmts.
2815         * cselib.h (cselib_record_sets_hook): Declare.
2816         (cselib_expand_callback): New type.
2817         (cselib_expand_value_rtx_cb): Declare.
2818         (cselib_reset_table_with_next_value): Declare.
2819         (cselib_get_next_unknown_value): Declare.
2820         (cselib_preserve_value): Declare.
2821         (cselib_preserved_value_p): Declare.
2822         (cselib_preserve_only_values): Declare.
2823         (dump_cselib_table): Declare.
2824         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
2825         (try_crossjump_to_edge): Likewise.
2826         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
2827         dominated blocks when debug stmts are present.
2828         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
2829         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
2830         (set_var_live_on_entry): Likewise.
2831         * loop-invariant.c (find_invariants_bb): Skip debug insns.
2832         * cfglayout.c (curr_location, last_location): Make static.
2833         (set_curr_insn_source_location): Don't avoid bouncing.
2834         (get_curr_insn_source_location): New.
2835         (get_curr_insn_block): New.
2836         (duplicate_insn_chain): Handle debug insns.
2837         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
2838         into debug stmts.
2839         * common.opt (fcompare-debug): Move to sort order.
2840         (fdump-unnumbered-links): Likewise.
2841         (fvar-tracking-assignments): New.
2842         (fvar-tracking-assignments-toggle): New.
2843         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
2844         because of debug stmts.
2845         (mark_stmt_if_obviously_necessary): Mark debug stmts.
2846         (eliminate_unnecessary_stmts): Walk dominated blocks before
2847         dominators.
2848         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
2849         * ira.c (memref_used_between_p): Skip debug insns.
2850         (update_equiv_regs): Likewise.
2851         * sched-deps.c (sd_lists_size): Accept empty list.
2852         (sd_init_insn): Mark debug insns.
2853         (sd_finish_insn): Unmark them.
2854         (sd_add_dep): Reject non-debug deps on debug insns.
2855         (fixup_sched_groups): Give debug insns group treatment.
2856         Skip debug insns.
2857         (sched_analyze_reg): Don't mark debug insns for sched before call.
2858         (sched_analyze_2): Handle debug insns.
2859         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
2860         insns.
2861         (deps_analyze_insn): Handle debug insns.
2862         (deps_start_bb): Skip debug insns.
2863         (init_deps): Initialize last_debug_insn.
2864         * tree-ssa.c (target_for_debug_bind): New.
2865         (find_released_ssa_name): New.
2866         (propagate_var_def_into_debug_stmts): New.
2867         (propagate_defs_into_debug_stmts): New.
2868         (verify_ssa): Skip debug bind stmts without values.
2869         (warn_uninialized_vars): Skip debug stmts.
2870         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
2871         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
2872         (rtx_equal_p): Likewise.
2873         * ira-costs.c (scan_one_insn): Skip debug insns.
2874         (process_bb_node_for_hard_reg_moves): Likewise.
2875         * rtl.h (DEBUG_INSN_P): New.
2876         (NONDEBUG_INSN_P): New.
2877         (MAY_HAVE_DEBUG_INSNS): New.
2878         (INSN_P): Accept debug insns.
2879         (RTX_FRAME_RELATED_P): Likewise.
2880         (INSN_DELETED_P): Likewise
2881         (PAT_VAR_LOCATION_DECL): New.
2882         (PAT_VAR_LOCATION_LOC): New.
2883         (PAT_VAR_OCATION_STATUS): New.
2884         (NOTE_VAR_LOCATION_DECL): Reimplement.
2885         (NOTE_VAR_LOCATION_LOC): Likewise.
2886         (NOTE_VAR_LOCATION_STATUS): Likewise.
2887         (INSN_VAR_LOCATION): New.
2888         (INSN_VAR_LOCATION_DECL): New.
2889         (INSN_VAR_LOCATION_LOC): New.
2890         (INSN_VAR_LOCATION_STATUS): New.
2891         (gen_rtx_UNKNOWN_VAR_LOC): New.
2892         (VAR_LOC_UNKNOWN_P): New.
2893         (NOTE_DURING_CALL_P): New.
2894         (SCHED_GROUP_P): Accept debug insns.
2895         (emit_debug_insn_before): Declare.
2896         (emit_debug_insn_before_noloc): Declare.
2897         (emit_debug_insn_beore_setloc): Declare.
2898         (emit_debug_insn_after): Declare.
2899         (emit_debug_insn_after_noloc): Declare.
2900         (emit_debug_insn_after_setloc): Declare.
2901         (emit_debug_insn): Declare.
2902         (make_debug_insn_raw): Declare.
2903         (prev_nondebug_insn): Declare.
2904         (next_nondebug_insn): Declare.
2905         (delegitimize_mem_from_attrs): Declare.
2906         (get_max_insn_count): Declare.
2907         (wrap_constant): Declare.
2908         (unwrap_constant): Declare.
2909         (get_curr_insn_source_location): Declare.
2910         (get_curr_insn_block): Declare.
2911         * tree-inline.c (insert_debug_decl_map): New.
2912         (processing_debug_stmt): New.
2913         (remap_decl): Don't create new mappings in debug stmts.
2914         (remap_gimple_op_r): Don't add references in debug stmts.
2915         (copy_tree_body_r): Likewise.
2916         (remap_gimple_stmt): Handle debug bind stmts.
2917         (copy_bb): Skip debug stmts.
2918         (copy_edges_for_bb): Likewise.
2919         (copy_debug_stmt): New.
2920         (copy_debug_stmts): New.
2921         (copy_body): Copy debug stmts at the end.
2922         (insert_init_debug_bind): New.
2923         (insert_init_stmt): Take id.  Skip and emit debug stmts.
2924         (setup_one_parameter): Remap variable earlier, register debug mapping.
2925         (estimate_num_insns): Skip debug stmts.
2926         (expand_call_inline): Preserve debug_map.
2927         (optimize_inline_calls): Check for no debug_stmts left-overs.
2928         (unsave_expr_now): Preserve debug_map.
2929         (copy_gimple_seq_and_replace_locals): Likewise.
2930         (tree_function_versioning): Check for no debug_stmts left-overs.
2931         Init and destroy debug_map as needed.  Split edges unconditionally.
2932         (build_duplicate_type): Init and destroy debug_map as needed.
2933         * tree-inline.h: Include gimple.h instead of pointer-set.h.
2934         (struct copy_body_data): Add debug_stmts and debug_map.
2935         * sched-int.h (struct ready_list): Add n_debug.
2936         (struct deps): Add last_debug_insn.
2937         (DEBUG_INSN_SCHED_P): New.
2938         (BOUNDARY_DEBUG_INSN_P): New.
2939         (SCHEDULE_DEBUG_INSN_P): New.
2940         (sd_iterator_cond): Accept empty list.
2941         * combine.c (create_log_links): Skip debug insns.
2942         (combine_instructions): Likewise.
2943         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
2944         return value is always unshared.
2945         (struct rtx_subst_pair): New.
2946         (auto_adjust_pair): New.
2947         (propagate_for_debug_subst): New.
2948         (propagate_for_debug): New.
2949         (try_combine): Skip debug insns.  Propagate removed defs into
2950         debug insns.
2951         (next_nonnote_nondebug_insn): New.
2952         (distribute_notes): Use it.  Skip debug insns.
2953         (distribute_links): Skip debug insns.
2954         * tree-outof-ssa.c (set_location_for_edge): Likewise.
2955         * resource.c (mark_target_live_regs): Likewise.
2956         * var-tracking.c: Include cselib.h and target.h.
2957         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
2958         MO_VAL_SET.
2959         (micro_operation_type_name): New.
2960         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
2961         (struct micro_operation_def): Update comments.
2962         (decl_or_value): New type.  Use instead of decls.
2963         (struct emit_note_data_def): Add vars.
2964         (struct attrs_def): Use decl_or_value.
2965         (struct variable_tracking_info_def): Add permp, flooded.
2966         (struct location_chain_def): Update comment.
2967         (struct variable_part_def): Use decl_or_value.
2968         (struct variable_def): Make var_part a variable length array.
2969         (valvar_pool): New.
2970         (scratch_regs): New.
2971         (cselib_hook_called): New.
2972         (dv_is_decl_p): New.
2973         (dv_is_value_p): New.
2974         (dv_as_decl): New.
2975         (dv_as_value): New.
2976         (dv_as_opaque): New.
2977         (dv_onepart_p): New.
2978         (dv_pool): New.
2979         (IS_DECL_CODE): New.
2980         (check_value_is_not_decl): New.
2981         (dv_from_decl): New.
2982         (dv_from_value): New.
2983         (dv_htab_hash): New.
2984         (variable_htab_hash): Use it.
2985         (variable_htab_eq): Support values.
2986         (variable_htab_free): Free from the right pool.
2987         (attrs_list_member, attrs_list_insert): Use decl_or_value.
2988         (attrs_list_union): Adjust.
2989         (attrs_list_mpdv_union): New.
2990         (tie_break_pointers): New.
2991         (canon_value_cmp): New.
2992         (unshare_variable): Return possibly-modified slot.
2993         (vars_copy_1): Adjust.
2994         (var_reg_decl_set): Adjust.  Split out of...
2995         (var_reg_set): ... this.
2996         (get_init_value): Adjust.
2997         (var_reg_delete_and_set): Adjust.
2998         (var_reg_delete): Adjust.
2999         (var_regno_delete): Adjust.
3000         (var_mem_decl_set): Split out of...
3001         (var_mem_set): ... this.
3002         (var_mem_delete_and_set): Adjust.
3003         (var_mem_delete): Adjust.
3004         (val_store): New.
3005         (val_reset): New.
3006         (val_resolve): New.
3007         (variable_union): Adjust.  Speed up merge of 1-part vars.
3008         (variable_canonicalize): Use unshared slot.
3009         (VALUED_RECURSED_INTO): New.
3010         (find_loc_in_1pdv): New.
3011         (struct dfset_merge): New.
3012         (insert_into_intersection): New.
3013         (intersect_loc_chains): New.
3014         (loc_cmp): New.
3015         (canonicalize_loc_order_check): New.
3016         (canonicalize_values_mark): New.
3017         (canonicalize_values_star): New.
3018         (variable_merge_over_cur): New.
3019         (variable_merge_over_src): New.
3020         (dataflow_set_merge): New.
3021         (dataflow_set_equiv_regs): New.
3022         (remove_duplicate_values): New.
3023         (struct dfset_post_merge): New.
3024         (variable_post_merge_new_vals): New.
3025         (variable_post_merge_perm_vals): New.
3026         (dataflow_post_merge_adjust): New.
3027         (find_mem_expr_in_1pdv): New.
3028         (dataflow_set_preserve_mem_locs): New.
3029         (dataflow_set_remove_mem_locs): New.
3030         (dataflow_set_clear_at_call): New.
3031         (onepart_variable_different_p): New.
3032         (variable_different_p): Use it.
3033         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
3034         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
3035         if not needed.
3036         (track_loc_p): Pass it true.
3037         (struct count_use_info): New.
3038         (find_use_val): New.
3039         (replace_expr_with_values): New.
3040         (log_op_type): New.
3041         (use_type): New, partially split out of...
3042         (count_uses): ... this.  Count new micro-ops.
3043         (count_uses_1): Adjust.
3044         (count_stores): Adjust.
3045         (count_with_sets): New.
3046         (VAL_NEEDS_RESOLUTION): New.
3047         (VAL_HOLDS_TRACK_EXPR): New.
3048         (VAL_EXPR_IS_COPIED): New.
3049         (VAL_EXPR_IS_CLOBBERED): New.
3050         (add_uses): Adjust.  Generate new micro-ops.
3051         (add_uses_1): Adjust.
3052         (add_stores): Generate new micro-ops.
3053         (add_with_sets): New.
3054         (find_src_status): Adjust.
3055         (find_src_set_src): Adjust.
3056         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
3057         Handle new micro-ops.  Canonicalize value equivalances.
3058         (vt_find_locations): Compute total size of hash tables for
3059         dumping.  Perform merge for var-tracking-assignments.  Don't
3060         disregard single-block loops.
3061         (dump_attrs_list): Handle decl_or_value.
3062         (dump_variable): Take variable.  Deal with decl_or_value.
3063         (dump_variable_slot): New.
3064         (dump_vars): Use it.
3065         (dump_dataflow_sets): Adjust.
3066         (set_slot_part): New, extended to support one-part variables
3067         after splitting out of...
3068         (set_variable_part): ... this.
3069         (clobber_slot_part): New, split out of...
3070         (clobber_variable_part): ... this.
3071         (delete_slot_part): New, split out of...
3072         (delete_variable_part): .... this.
3073         (check_wrap_constant): New.
3074         (vt_expand_loc_callback): New.
3075         (vt_expand_loc): New.
3076         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
3077         EMIT_NOTE_AFTER_CALL_INSN.
3078         (emit_notes_for_differences_1): Adjust.  Handle values.
3079         (emit_notes_for_differences_2): Likewise.
3080         (emit_notes_for_differences): Adjust.
3081         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
3082         Adjust.  Handle new micro-ops.
3083         (vt_add_function_parameters): Adjust.  Create and bind values.
3084         (vt_initialize): Adjust.  Initialize scratch_regs and
3085         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
3086         operations.  Move some code to count_with_sets and add_with_sets.
3087         (delete_debug_insns): New.
3088         (vt_debug_insns_local): New.
3089         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
3090         cselib.
3091         (var_tracking_main): If var-tracking-assignments is enabled
3092         but var-tracking isn't, delete debug insns and leave.  Likewise
3093         if we exceed limits or fail the stack adjustments tests, and
3094         after all var-tracking processing.
3095         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
3096         (dataflow_set): Add traversed_vars.
3097         (value_chain, const_value_chain): New typedefs.
3098         (value_chain_pool, value_chains): New variables.
3099         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
3100         add_value_chains, add_cselib_value_chains, remove_value_chain,
3101         remove_value_chains, remove_cselib_value_chains): New functions.
3102         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
3103         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
3104         static inlines.
3105         (shared_hash_find_slot_unshare, shared_hash_find_slot,
3106         shared_hash_find_slot_noinsert, shared_hash_find): Update.
3107         (dst_can_be_shared): New variable.
3108         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
3109         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
3110         different from set->vars, look up slot again instead of using the
3111         passed in slot.
3112         (dataflow_set_init): Initialize traversed_vars.
3113         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
3114         lookup if set->vars is shared.  Don't keep slot cleared before
3115         calling unshare_variable.  Unshare set->vars if needed.  Adjust
3116         unshare_variable callers.  Clear dst_can_be_shared if needed.
3117         Even ->refcount == 1 vars must be unshared if set->vars is shared
3118         and var needs to be modified.
3119         (dataflow_set_union): Set traversed_vars during canonicalization.
3120         (VALUE_CHANGED, DECL_CHANGED): Define.
3121         (set_dv_changed, dv_changed_p): New static inlines.
3122         (track_expr_p): Clear DECL_CHANGED.
3123         (dump_dataflow_sets): Set it.
3124         (variable_was_changed): Call set_dv_changed.
3125         (emit_note_insn_var_location): Likewise.
3126         (changed_variables_stack): New variable.
3127         (check_changed_vars_1, check_changed_vars_2): New functions.
3128         (emit_notes_for_changes): Do nothing if changed_variables is
3129         empty.  Traverse changed_variables with check_changed_vars_1,
3130         call check_changed_vars_2 on each changed_variables_stack entry.
3131         (emit_notes_in_bb): Add SET argument.  Just clear it at the
3132         beginning, use it instead of local &set, don't destroy it at the end.
3133         (vt_emit_notes): Call dataflow_set_clear early on all
3134         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
3135         computed set, dataflow_set_clear also VTI(bb)->in when we are
3136         done with the basic block.  Initialize changed_variables_stack,
3137         free it afterwards.  If ENABLE_CHECKING verify that after noting
3138         differences to an empty set value_chains hash table is empty.
3139         (vt_initialize): Initialize value_chains and value_chain_pool.
3140         (vt_finalize): Delete value_chains htab, free value_chain_pool.
3141         (variable_tracking_main): Call dump_dataflow_sets before calling
3142         vt_emit_notes, not after it.
3143         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
3144         (propagate_var_def_into_debug_stmts): Declare.
3145         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
3146         (df_set_note): Reject debug insns.
3147         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
3148         add notes to debug insns.
3149         (df_note_bb_compute): Adjust.  Likewise.
3150         (df_simulate_uses): Skip debug insns.
3151         (df_simulate_initialize_backwards): Likewise.
3152         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
3153         (subst_stack_regs_pat): Reject debug insns.
3154         (convert_regs_1): Handle debug insns.
3155         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
3156         (print-rtl.o): Depend on cselib.h.
3157         (cselib.o): Depend on TREE_PASS_H.
3158         (var-tracking.o): Depend on cselib.h and TARGET_H.
3159         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
3160         (init_ready_list): Skip boundary debug insns.
3161         (add_branch_dependences): Skip debug insns.
3162         (free_block_dependencies): Check for blocks with only debug insns.
3163         (compute_priorities): Likewise.
3164         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
3165         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
3166         all callers.
3167         (gimple_build_debug_bind_stat): New.
3168         (empty_body_p): Skip debug stmts.
3169         (gimple_has_side_effects): Likewise.
3170         (gimple_rhs_has_side_effects): Likewise.
3171         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
3172         (gimple_build_debug_bind_stat): Declare.
3173         (gimple_build_debug_bind): Define.
3174         (is_gimple_debug): New.
3175         (gimple_debug_bind_p): New.
3176         (gimple_debug_bind_get_var): New.
3177         (gimple_debug_bind_get_value): New.
3178         (gimple_debug_bind_get_value_ptr): New.
3179         (gimple_debug_bind_set_var): New.
3180         (gimple_debug_bind_set_value): New.
3181         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
3182         (gimple_debug_bind_reset_value): New.
3183         (gimple_debug_bind_has_value_p): New.
3184         (gsi_next_nondebug): New.
3185         (gsi_prev_nondebug): New.
3186         (gsi_start_nondebug_bb): New.
3187         (gsi_last_nondebug_bb): New.
3188         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
3189         (print_insn): Handle DEBUG_INSN.
3190         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
3191         of first insn prevail.
3192         (first_stmt): Skip debug stmts.
3193         (first_non_label_stmt): Likewise.
3194         (last_stmt): Likewise.
3195         (has_zero_uses_1): New.
3196         (single_imm_use_1): New.
3197         (verify_gimple_debug): New.
3198         (verify_types_in_gimple_stmt): Handle debug stmts.
3199         (verify_stmt): Likewise.
3200         (debug_loop_num): Skip debug stmts.
3201         (remove_edge_and_dominated_blocks): Remove dominators last.
3202         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
3203         (linearize_expr): Likewise.
3204         * config/i386/i386.c (ix86_delegitimize_address): Call
3205         default implementation.
3206         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
3207         (group_barrier_needed): Skip debug insns.
3208         (emit_insn_group_barriers): Likewise.
3209         (emit_all_insn_group_barriers): Likewise.
3210         (ia64_variable_issue): Handle debug insns.
3211         (ia64_dfa_new_cycle): Likewise.
3212         (final_emit_insn_group_barriers): Skip debug insns.
3213         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
3214         def cfa without frame.
3215         (process_set): Likewise.
3216         (process_for_unwind_directive): Pass frame on.
3217         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
3218         (rs6000_delegitimize_address): New.
3219         (rs6000_debug_adjust_cost): Handle debug insns.
3220         (is_microcoded_insn): Likewise.
3221         (is_cracked_insn): Likewise.
3222         (is_nonpipeline_insn): Likewise.
3223         (insn_must_be_first_in_group): Likewise.
3224         (insn_must_be_last_in_group): Likewise.
3225         (force_new_group): Likewise.
3226         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
3227         contains only debug insns.
3228         (rtl_merge_blocks): Skip debug insns.
3229         (purge_dead_edges): Likewise.
3230         (rtl_block_ends_with_call_p): Skip debug insns.
3231         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
3232         (mark_reg_dependencies): Skip debug insns.
3233         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
3234         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
3235         * tree-ssa-threadedge.c
3236         (record_temporary_equivalences_from_stmts): Skip debug stmts.
3237         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
3238         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
3239         (copyprop_hardreg_forward_1): Handle debug insns.
3240         * reload1.c (reload): Skip debug insns.  Replace unassigned
3241         pseudos in debug insns with their equivalences.
3242         (eliminate_regs_in_insn): Skip debug insns.
3243         (emit_input_reload_insns): Skip debug insns at first, adjust
3244         them later.
3245         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
3246         (get_indirect_ref_operands): Pass opf_no_vops on.
3247         (get_expr_operands): Likewise.  Skip debug stmts.
3248         (parse_ssa_operands): Scan debug insns with opf_no_vops.
3249
3250 2009-09-01  Richard Henderson  <rth@redhat.com>
3251
3252         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3253         stmt_ends_pp_p statements at least once.
3254         * tree-vrp.c (vrp_initialize): Likewise.
3255         (vrp_visit_stmt): Be prepared for non-interesting stmts.
3256
3257 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
3258
3259         PR bootstrap/41205
3260         Fix AIX bootstrap after PR debug/30161
3261         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3262         that is a GNU extension.
3263         (tmpl_value_parm_die_table): Move the definition of this global
3264         outside #ifdef DWARF2_DEBUGGING_INFO region.
3265
3266 2009-09-01  Richard Guenther  <rguenther@suse.de>
3267
3268         * tree.c (tree_expr_size): New function.
3269         * tree.h (tree_expr_size): Declare.
3270         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3271         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3272         * langhooks.c (lhd_expr_size): Remove.
3273         * langhooks.h (struct lang_hooks): Remove expr_size.
3274         * explow.c (expr_size): Use tree_expr_size.
3275         (int_expr_size): Likewise.
3276         * langhooks-def.h (lhd_expr_size): Remove.
3277         (LANG_HOOKS_EXPR_SIZE): Likewise.
3278         (LANG_HOOKS_INITIALIZER): Adjust.
3279
3280 2009-09-01  Richard Guenther  <rguenther@suse.de>
3281
3282         * tree-flow.h (mark_addressable): Move declaration ...
3283         * tree.h (mark_addressable): ... here.
3284         * stmt.c (expand_asm_operands): Use mark_addressable, not
3285         lang_hooks.mark_addressable.
3286         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3287         LANG_HOOKS_MARK_ADDRESSABLE.
3288         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3289         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3290
3291 2009-08-31  Chris Demetriou  <cgd@google.com>
3292
3293         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3294         vectorize if not TARGET_SSE2.
3295
3296 2009-08-31  DJ Delorie  <dj@redhat.com>
3297
3298         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3299         registers if no coprocessor is enabled.
3300
3301 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
3302
3303         PR debug/30161
3304         * cgraph.h (cgraph_get_node): Declare ...
3305         * cgraph.c (cgraph_get_node): ... new function.
3306         * dwarf2out.c (gen_generic_params_dies,
3307         generic_parameter_die, tree_add_const_value_attribute_for_decl,
3308         make_ith_pack_parameter_name,
3309         append_entry_to_tmpl_value_parm_die_table,
3310         gen_remaining_tmpl_value_param_die_attribute): New functions.
3311         (gen_subprogram_die): Generate debug info for template parameters
3312         if debug info level is higher than DINFO_LEVEL_TERSE.
3313         Use tree_add_const_value_attribute_for_decl instead of
3314         tree_add_const_value_attribute.
3315         (gen_const_die): Use tree_add_const_value_attribute_for_decl
3316         instead of tree_add_const_value_attribute.
3317         (gen_struct_or_union_type_die): Generate debug
3318         info for template parameters if debug info level is higher than
3319         DINFO_LEVEL_TERSE.
3320         (tree_add_const_value_attribute): Handle integral and pointer
3321         constants. Update comment.
3322         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3323         (dwarf_attr_name): Support DW_AT_GNU_template_name.
3324         (reference_to_unused): Fix thinko. Remove redundant predicates from
3325         tests.
3326         (tree_add_const_value_attribute): Make this work for constant
3327         expressions only.
3328         tree_add_const_value_attribute_for_decl is to be used for variable
3329         DECLs now.
3330         (add_location_or_const_value_attribute): Use
3331         tree_add_const_value_attribute_for_decl now.
3332         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3333         DW_TAG_template_value_param DIEs after function DIEs have been
3334         emitted.
3335         * langhooks.h (lang_hooks_for_types): Add
3336         get_argument_pack_elems.
3337         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3338         (lang_hooks): Added get_innermost_generic_parms,
3339         get_innermost_generic_args.
3340         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3341         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3342         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3343         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3344
3345 2009-08-31  DJ Delorie  <dj@redhat.com>
3346
3347         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3348         it once we start generating the prologue or epilogue.
3349         (mep_call_saves_register): If the frame is locked, re-use
3350         cached values.
3351         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3352         (mep_expand_prologue): Call it.
3353         (mep_expand_epilogue): Likewise.
3354         (mep_start_function): Use the same logic as mep_expand_prologue.
3355         (mep_pass_by_reference): Make logic more readable.
3356         (mep_return_in_memory): Zero-sized objects are passed in memory.
3357         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3358
3359 2009-08-31  Richard Guenther  <rguenther@suse.de>
3360
3361         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3362         to query if the memory regions for memmove overlap.
3363         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3364         asserts on pointers, instead deal with odd trees.
3365         (ptr_derefs_may_alias_p): Likewise.
3366         (refs_may_alias_p_1): Constructor bases also never alias.
3367
3368 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3369
3370         * doc/install.texi (Final install): Adjust reference on where to
3371         order printed manuals.
3372
3373 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3374
3375         * dwarf2out.c (switch_to_frame_table_section): Move
3376         definition prior to first use.
3377
3378 2009-08-30  Richard Guenther  <rguenther@suse.de>
3379
3380         PR tree-optimization/41186
3381         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3382         (ao_ref_init_from_ptr_and_size): New function.
3383         (ref_maybe_used_by_call_p_1): Be more precise tracking
3384         used ranges for builtin functions.
3385         (ref_maybe_used_by_call_p): Adjust.
3386         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3387         ranges for builtin functions.
3388         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3389
3390 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3391
3392         PR target/41081
3393         * fwprop.c (get_reg_use_in): Delete.
3394         (free_load_extend): New function.
3395         (forward_propagate_subreg): Use it.
3396
3397 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3398
3399         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3400
3401 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3402
3403         PR/41184
3404         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3405         padding.
3406
3407 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3408
3409         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3410         fini or fini_array section.
3411
3412 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3413
3414         * graphite-dependences.c (graphite_legal_transform_bb): Call
3415         pbb_remove_duplicate_pdrs.
3416         * graphite-poly.c (can_collapse_pdr): Removed.
3417         (pdr_find_duplicate): Removed.
3418         (can_collapse_pdrs): New.
3419         (pbb_remove_duplicate_pdrs): New.
3420         (new_poly_dr): Do not look for duplicates.
3421         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3422         (PBB_PDR_DUPLICATES_REMOVED): New.
3423         (pbb_remove_duplicate_pdrs): Declared.
3424
3425 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3426
3427         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3428         the strides by multiplying by PDR_NB_REFS.
3429         * graphite-poly.c (can_collapse_pdr): New.
3430         (pdr_find_duplicate): New.
3431         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3432         Initialize PDR_NB_REFS.
3433         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3434         (PDR_NB_REFS): New.
3435         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3436
3437 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3438
3439         PR middle-end/40965
3440         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3441         any transform.
3442
3443 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3444
3445         * graphite-dependences.c (pddr_original_scattering): Return NULL
3446         for read-read dependence relations.
3447         * graphite-poly.h (enum poly_dr_type): Fix comment.
3448         (pdr_read_p): New.
3449         (pdr_write_p): New.
3450         (pdr_may_write_p): New.
3451
3452 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3453
3454         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3455         (struct poly_dr): Same.
3456         (new_poly_dr): Same.
3457         * graphite-poly.c (new_poly_dr): Same.
3458         * graphite-dependences.c (dot_deps): Disable call to system.
3459
3460 2009-08-28  Cary Coutant  <ccoutant@google.com>
3461
3462         PR debug/41063
3463         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3464         struct/union/enum types local to a function.
3465
3466 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3467             Sebastian Pop  <sebastian.pop@amd.com>
3468
3469         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3470         pbb_strip_mine_time_depth.  Changed the implementation so that
3471         transformation is expressed as a transformation on
3472         time (scatttering) dimensions.  Also, ensures that the 2d+1
3473         scheduling format is preserved.
3474         (pbb_strip_mine_profitable_p): Profitability is based on the
3475         iteration number of a given time (scattering) dimension,
3476         and not on a original loop depth dimension.
3477         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3478         (pbb_do_strip_mine): Call psct_dynamic_dim.
3479         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3480         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3481         (pbb_nb_dynamic_scattering_transform): New.
3482         (psct_dynamic_dim): New.
3483
3484 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3485
3486         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3487         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3488         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3489         * graphite-interchange.c (build_linearized_memory_access): Same.
3490         (memory_stride_in_loop): Same.
3491
3492 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3493
3494         * graphite-dependences.c (pddr_original_scattering): New.
3495         (graphite_legal_transform_dr): Call pddr_original_scattering.
3496         (dot_deps_1): New.
3497         (dot_deps): New.
3498         * graphite-dependences.h (dot_deps): Declared.
3499         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3500         (print_pdr): Print PDR_ID.
3501         * graphite-poly.h (struct poly_dr): Add field id.
3502         (PDR_ID): New.
3503         (pbb_index): New.
3504         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3505
3506 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3507
3508         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3509         not delete the original dependence relation.
3510
3511 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3512
3513         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3514         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3515         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3516         (free_poly_ddr): New.
3517         (pddr_is_empty): New.
3518         (dependence_polyhedron_1): Now returns a poly_ddr_p.
3519         (dependence_polyhedron): Same.  Remove useless gcc_assert.
3520         Remove fprintfs.
3521         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3522         (graphite_carried_dependence_level_k): Call pddr_is_empty.
3523         * graphite-dependences.h (enum poly_dependence_kind): New.
3524         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
3525         (PDRP_SOURCE): Renamed PDDR_SOURCE.
3526         (PDRP_SINK): Renamed PDDR_SINK.
3527         (PDRP_DDP): Renamed PDDR_DDP.
3528         (PDDR_KIND): New.
3529         (free_poly_ddr): Declared.
3530         * graphite-poly.c (new_scop): Use the new hash function names.
3531         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3532         into original_pddrs.
3533         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3534
3535 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3536
3537         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3538         bounds with LT_EXPR to make niter analysis more precise on code
3539         generated by Graphite.
3540
3541 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3542
3543         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3544         (graphite_legal_transform_bb): Same.
3545         (poly_drs_may_alias_p): Same.
3546
3547 2009-08-28  Richard Guenther  <rguenther@suse.de>
3548
3549         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3550
3551 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3552
3553         * config/i386/netware.c: Include langhooks.h.
3554         (i386_nlm_encode_section_info): Simplify.
3555         (netware_override_options): Delete.
3556         * config/i386/netware.h (netware_override_options): Delete
3557         declaration.
3558         (OVERRIDE_OPTIONS): Delete definition.
3559         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3560         (ASM_COMMENT_START): Define.
3561         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3562
3563 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3564
3565         * configure.ac: For in-tree ld, do a plain version check to
3566         determine whether comdat groups are supported.
3567         * configure: Regenerate.
3568
3569 2009-08-28  Olivier Hainque  <hainque@adacore.com>
3570
3571         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3572         always defined.  Reflect definition or absence of such for
3573         COLLECT_EXPORT_LIST.  Readability helper.
3574         (scanfilter): New enum, to help control what symbols
3575         are to be considered or ignored by scan_prog_file.
3576         (enum pass): Rename as "scanpass", moved together with scanfilter
3577         prior to scan_prog_file's prototype.
3578         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3579         Group prototype with the scanpass/scanfilter definitions, factorize
3580         head comments for the several implementations at the prototype.
3581         (main): Reorganize the first pass link control to let AIX
3582         drag only the needed frame tables in executables.  Prevent
3583         frame tables collection during the scan aimed at static ctors.
3584         Pre-link and scan for frame tables later to compensate.
3585         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3586         A C statement to issue assembly directives that create a reference
3587         to the given DWARF table identifier label from the current function
3588         section.
3589         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3590         to differentiate first time section entry.  Only emit a .data
3591         tables start identifier label the first time around.
3592         (switch_to_frame_table_section): New function.  Helper for
3593         output_call_frame_info to switch possibly BACK into the eh_frame
3594         or the debug_frame section depending on FOR_EH.
3595         (output_call_frame_info): Use helper to first enter the proper
3596         frame section.
3597         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3598         emit a link to the frame table start label from each function
3599         section.
3600         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3601         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3602         * config/rs6000/rs6000-protos.h: Declare it.
3603         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3604
3605 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3606
3607         * config/sh/sh.c (split_branches): Check the result of
3608         next_active_insn.
3609
3610 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
3611
3612         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3613         using -pthread -fopenmp
3614
3615 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
3616
3617         * doc/service.texi (service directory): Update URL.
3618
3619 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
3620
3621         PR rtl-optimization/40861
3622         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3623         extract word from a multi-word subreg for negative byte positions.
3624
3625 2009-08-27  Tristan Gingold  <gingold@adacore.com>
3626             Douglas B Rupp  <rupp@gnat.com>
3627
3628         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3629         (SECTION_VMS_OVERLAY): Define.
3630         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
3631         attribute.
3632         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
3633         for common_object.
3634         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
3635         common_object declarations.
3636         (ia64_section_type_flags): Set section flag for common_object.
3637         * config/ia64/ia64-protos.h
3638         (ia64_vms_output_aligned_decl_common): Declare.
3639         (ia64_vms_elf_asm_named_section): Declare.
3640
3641 2009-08-27  Michael Matz  <matz@suse.de>
3642
3643         * expr.c (expand_expr_real_2): New function taking exploded
3644         unary or binary expression, split out from ...
3645         (expand_expr_real_1): ... here.  Move over all unary/binary
3646         switch parts to above function, in particular these codes:
3647         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3648         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3649         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3650         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3651         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3652         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3653         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3654         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3655         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3656         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3657         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3658         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3659         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3660         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3661         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3662         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3663         VEC_PACK_FIX_TRUNC_EXPR.
3664         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3665         full expression.
3666
3667 2009-08-27  Richard Guenther  <rguenther@suse.de>
3668
3669         * gengtype.c (main): Handle uint64_t.
3670         * ipa-utils.c (get_base_var): Indent properly.
3671         * tree-ssa-live.c (debug_scope_block): New function.
3672         * tree-flow.h (debug_scope_block): Declare.
3673         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3674         * basic-block.h (enum profile_status): Rename to
3675         enum profile_status_d.
3676         (x_profile_status): Adjust type.
3677
3678 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
3679
3680         PR debug/41170
3681         * dwarf2out.c (get_context_die): Declare this static function.
3682         (gen_type_die_with_usage): Make sure a DIE is a generated for
3683         the context of a typedef.
3684
3685 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
3686
3687         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
3688         switch.
3689
3690 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
3691
3692         * config/mips/mips-protos.h (mips_output_sync): Declare.
3693         (mips_sync_loop_insns): Likewise.
3694         (mips_output_sync_loop): Replace first two parameters with an rtx.
3695         * config/mips/mips.c (mips_multi_member): New structure.
3696         (mips_multi_members): New variable.
3697         (mips_multi_start): New function.
3698         (mips_multi_add): Likewise.
3699         (mips_multi_add_insn): Likewise.
3700         (mips_multi_add_label): Likewise.
3701         (mips_multi_last_index): Likewise.
3702         (mips_multi_copy_insn): Likewise.
3703         (mips_multi_set_operand): Likewise.
3704         (mips_multi_write): Likewise.
3705         (mips_print_operand_punctuation): Remove '%|' and '%-'.
3706         (mips_init_print_operand_punct): Update accordingly.
3707         (mips_start_ll_sc_sync_block): New function.
3708         (mips_end_ll_sc_sync_block): Likewise.
3709         (mips_output_sync): Likewise.
3710         (mips_sync_insn1_template): Likewise.
3711         (mips_sync_insn2_template): Likewise.
3712         (mips_get_sync_operand): Likewise.
3713         (mips_process_sync_loop): Likewise.
3714         (mips_output_sync_loop): Use mips_process_sync_loop.
3715         (mips_sync_loop_insns): New function.
3716         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
3717         (MIPS_COMPARE_AND_SWAP_12): Likewise.
3718         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
3719         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
3720         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
3721         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
3722         (MIPS_SYNC_OLD_OP_12): Likewise.
3723         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
3724         (MIPS_SYNC_NEW_OP_12): Likewise.
3725         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
3726         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
3727         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
3728         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
3729         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
3730         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
3731         * config/mips/mips.md (sync_mem): New attribute.
3732         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
3733         (sync_exclusive_mask, sync_required_oldval): Likewise.
3734         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
3735         (sync_release_barrier): Likewise.
3736         (length): Handle sync loops.
3737         (sync): Use mips_output_sync.
3738         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
3739         (sync_compare_and_swap<mode>): Set the new sync_* attributes
3740         and use mips_output_sync_loop.
3741         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
3742         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3743         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
3744         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
3745         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
3746         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
3747         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
3748         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
3749         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
3750
3751 2009-08-26  Richard Guenther  <rguenther@suse.de>
3752
3753         PR middle-end/41163
3754         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
3755         the types to not match.
3756         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
3757         verification.
3758         * tree-ssa.c (useless_type_conversion_p): Conversions to
3759         pointers to unprototyped functions are useless.
3760
3761 2009-08-26  Richard Guenther  <rguenther@suse.de>
3762
3763         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
3764         whole-program condition, prepare to be called for non-globals.
3765         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
3766         params build a representative with known type and track its fields.
3767
3768 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
3769
3770         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
3771         clearing by a taken branch.
3772         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
3773         effectively after bbro pass.
3774         (sync_nand<mode>): Ditto.
3775         (sync_old_<fetchop_name><mode>): Ditto.
3776         (sync_old_nand<mode>): Ditto.
3777         (sync_new_<fetchop_name><mode>): Dito.
3778         (sync_new_nand<mode>): Ditto.
3779         (sync_compare_and_swap<mode>_1): Ditto.
3780         (*sync_compare_and_swap<mode>): Ditto.
3781         (sync_lock_test_and_set<mode>_1): Ditto.
3782         ("sync_lock_test_and_set<mode>): Ditto.
3783
3784 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
3785
3786         * hwint.h (HOST_LONG_FORMAT): New macro
3787         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
3788         Use HOST_PTR_PRINTF.
3789         * system.h (HOST_PTR_PRINTF): Resurrect old macro
3790         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
3791         (HOST_PTR_PRINTF): Document.
3792
3793 2009-08-25 Jan Hubicka  <jh@suse.cz>
3794
3795         * config/i386/bmmintrin.h: Replace by #error.
3796
3797         Revert:
3798         Michael Meissner  <michael.meissner@amd.com>
3799         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3800         Tony Linthicum  <tony.linthicum@amd.com>
3801
3802         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
3803         (TARGET_ROUND): New macro for the round/ptest instructions which
3804         are shared between SSE4.1 and SSE5.
3805         (OPTION_MASK_ISA_ROUND): Ditto.
3806         (OPTION_ISA_ROUND): Ditto.
3807         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
3808         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
3809
3810         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
3811         (-mfused-madd): New switch to give users control over whether the
3812         compiler optimizes to use the multiply/add SSE5 instructions.
3813
3814         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
3815         (ix86_handle_option): Turn off 3dnow if -msse5.
3816         (override_options): Add SSE5 support.
3817         (print_operand): %Y prints comparison codes for SSE5 com/pcom
3818         instructions.
3819         (ix86_expand_sse_movcc): Add SSE5 support.
3820         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
3821         vector type to the next largest size.
3822         (ix86_expand_sse5_pack): New function to use pperm to pack a
3823         vector type to the next smallest size.
3824         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
3825         (IX86_BUILTIN_FMADDSD): Ditto.
3826         (IX86_BUILTIN_FMADDPS): Ditto.
3827         (IX86_BUILTIN_FMADDPD): Ditto.
3828         (IX86_BUILTIN_FMSUBSS): Ditto.
3829         (IX86_BUILTIN_FMSUBSD): Ditto.
3830         (IX86_BUILTIN_FMSUBPS): Ditto.
3831         (IX86_BUILTIN_FMSUBPD): Ditto.
3832         (IX86_BUILTIN_FNMADDSS): Ditto.
3833         (IX86_BUILTIN_FNMADDSD): Ditto.
3834         (IX86_BUILTIN_FNMADDPS): Ditto.
3835         (IX86_BUILTIN_FNMADDPD): Ditto.
3836         (IX86_BUILTIN_FNMSUBSS): Ditto.
3837         (IX86_BUILTIN_FNMSUBSD): Ditto.
3838         (IX86_BUILTIN_FNMSUBPS): Ditto.
3839         (IX86_BUILTIN_FNMSUBPD): Ditto.
3840         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
3841         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
3842         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
3843         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
3844         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
3845         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
3846         (IX86_BUILTIN_PPERM): Ditto.
3847         (IX86_BUILTIN_PERMPS): Ditto.
3848         (IX86_BUILTIN_PERMPD): Ditto.
3849         (IX86_BUILTIN_PMACSSWW): Ditto.
3850         (IX86_BUILTIN_PMACSWW): Ditto.
3851         (IX86_BUILTIN_PMACSSWD): Ditto.
3852         (IX86_BUILTIN_PMACSWD): Ditto.
3853         (IX86_BUILTIN_PMACSSDD): Ditto.
3854         (IX86_BUILTIN_PMACSDD): Ditto.
3855         (IX86_BUILTIN_PMACSSDQL): Ditto.
3856         (IX86_BUILTIN_PMACSSDQH): Ditto.
3857         (IX86_BUILTIN_PMACSDQL): Ditto.
3858         (IX86_BUILTIN_PMACSDQH): Ditto.
3859         (IX86_BUILTIN_PMADCSSWD): Ditto.
3860         (IX86_BUILTIN_PMADCSWD): Ditto.
3861         (IX86_BUILTIN_PHADDBW): Ditto.
3862         (IX86_BUILTIN_PHADDBD): Ditto.
3863         (IX86_BUILTIN_PHADDBQ): Ditto.
3864         (IX86_BUILTIN_PHADDWD): Ditto.
3865         (IX86_BUILTIN_PHADDWQ): Ditto.
3866         (IX86_BUILTIN_PHADDDQ): Ditto.
3867         (IX86_BUILTIN_PHADDUBW): Ditto.
3868         (IX86_BUILTIN_PHADDUBD): Ditto.
3869         (IX86_BUILTIN_PHADDUBQ): Ditto.
3870         (IX86_BUILTIN_PHADDUWD): Ditto.
3871         (IX86_BUILTIN_PHADDUWQ): Ditto.
3872         (IX86_BUILTIN_PHADDUDQ): Ditto.
3873         (IX86_BUILTIN_PHSUBBW): Ditto.
3874         (IX86_BUILTIN_PHSUBWD): Ditto.
3875         (IX86_BUILTIN_PHSUBDQ): Ditto.
3876         (IX86_BUILTIN_PROTB): Ditto.
3877         (IX86_BUILTIN_PROTW): Ditto.
3878         (IX86_BUILTIN_PROTD): Ditto.
3879         (IX86_BUILTIN_PROTQ): Ditto.
3880         (IX86_BUILTIN_PROTB_IMM): Ditto.
3881         (IX86_BUILTIN_PROTW_IMM): Ditto.
3882         (IX86_BUILTIN_PROTD_IMM): Ditto.
3883         (IX86_BUILTIN_PROTQ_IMM): Ditto.
3884         (IX86_BUILTIN_PSHLB): Ditto.
3885         (IX86_BUILTIN_PSHLW): Ditto.
3886         (IX86_BUILTIN_PSHLD): Ditto.
3887         (IX86_BUILTIN_PSHLQ): Ditto.
3888         (IX86_BUILTIN_PSHAB): Ditto.
3889         (IX86_BUILTIN_PSHAW): Ditto.
3890         (IX86_BUILTIN_PSHAD): Ditto.
3891         (IX86_BUILTIN_PSHAQ): Ditto.
3892         (IX86_BUILTIN_FRCZSS): Ditto.
3893         (IX86_BUILTIN_FRCZSD): Ditto.
3894         (IX86_BUILTIN_FRCZPS): Ditto.
3895         (IX86_BUILTIN_FRCZPD): Ditto.
3896         (IX86_BUILTIN_CVTPH2PS): Ditto.
3897         (IX86_BUILTIN_CVTPS2PH): Ditto.
3898         (IX86_BUILTIN_COMEQSS): Ditto.
3899         (IX86_BUILTIN_COMNESS): Ditto.
3900         (IX86_BUILTIN_COMLTSS): Ditto.
3901         (IX86_BUILTIN_COMLESS): Ditto.
3902         (IX86_BUILTIN_COMGTSS): Ditto.
3903         (IX86_BUILTIN_COMGESS): Ditto.
3904         (IX86_BUILTIN_COMUEQSS): Ditto.
3905         (IX86_BUILTIN_COMUNESS): Ditto.
3906         (IX86_BUILTIN_COMULTSS): Ditto.
3907         (IX86_BUILTIN_COMULESS): Ditto.
3908         (IX86_BUILTIN_COMUGTSS): Ditto.
3909         (IX86_BUILTIN_COMUGESS): Ditto.
3910         (IX86_BUILTIN_COMORDSS): Ditto.
3911         (IX86_BUILTIN_COMUNORDSS): Ditto.
3912         (IX86_BUILTIN_COMFALSESS): Ditto.
3913         (IX86_BUILTIN_COMTRUESS): Ditto.
3914         (IX86_BUILTIN_COMEQSD): Ditto.
3915         (IX86_BUILTIN_COMNESD): Ditto.
3916         (IX86_BUILTIN_COMLTSD): Ditto.
3917         (IX86_BUILTIN_COMLESD): Ditto.
3918         (IX86_BUILTIN_COMGTSD): Ditto.
3919         (IX86_BUILTIN_COMGESD): Ditto.
3920         (IX86_BUILTIN_COMUEQSD): Ditto.
3921         (IX86_BUILTIN_COMUNESD): Ditto.
3922         (IX86_BUILTIN_COMULTSD): Ditto.
3923         (IX86_BUILTIN_COMULESD): Ditto.
3924         (IX86_BUILTIN_COMUGTSD): Ditto.
3925         (IX86_BUILTIN_COMUGESD): Ditto.
3926         (IX86_BUILTIN_COMORDSD): Ditto.
3927         (IX86_BUILTIN_COMUNORDSD): Ditto.
3928         (IX86_BUILTIN_COMFALSESD): Ditto.
3929         (IX86_BUILTIN_COMTRUESD): Ditto.
3930         (IX86_BUILTIN_COMEQPS): Ditto.
3931         (IX86_BUILTIN_COMNEPS): Ditto.
3932         (IX86_BUILTIN_COMLTPS): Ditto.
3933         (IX86_BUILTIN_COMLEPS): Ditto.
3934         (IX86_BUILTIN_COMGTPS): Ditto.
3935         (IX86_BUILTIN_COMGEPS): Ditto.
3936         (IX86_BUILTIN_COMUEQPS): Ditto.
3937         (IX86_BUILTIN_COMUNEPS): Ditto.
3938         (IX86_BUILTIN_COMULTPS): Ditto.
3939         (IX86_BUILTIN_COMULEPS): Ditto.
3940         (IX86_BUILTIN_COMUGTPS): Ditto.
3941         (IX86_BUILTIN_COMUGEPS): Ditto.
3942         (IX86_BUILTIN_COMORDPS): Ditto.
3943         (IX86_BUILTIN_COMUNORDPS): Ditto.
3944         (IX86_BUILTIN_COMFALSEPS): Ditto.
3945         (IX86_BUILTIN_COMTRUEPS): Ditto.
3946         (IX86_BUILTIN_COMEQPD): Ditto.
3947         (IX86_BUILTIN_COMNEPD): Ditto.
3948         (IX86_BUILTIN_COMLTPD): Ditto.
3949         (IX86_BUILTIN_COMLEPD): Ditto.
3950         (IX86_BUILTIN_COMGTPD): Ditto.
3951         (IX86_BUILTIN_COMGEPD): Ditto.
3952         (IX86_BUILTIN_COMUEQPD): Ditto.
3953         (IX86_BUILTIN_COMUNEPD): Ditto.
3954         (IX86_BUILTIN_COMULTPD): Ditto.
3955         (IX86_BUILTIN_COMULEPD): Ditto.
3956         (IX86_BUILTIN_COMUGTPD): Ditto.
3957         (IX86_BUILTIN_COMUGEPD): Ditto.
3958         (IX86_BUILTIN_COMORDPD): Ditto.
3959         (IX86_BUILTIN_COMUNORDPD): Ditto.
3960         (IX86_BUILTIN_COMFALSEPD): Ditto.
3961         (IX86_BUILTIN_COMTRUEPD): Ditto.
3962         (IX86_BUILTIN_PCOMEQUB): Ditto.
3963         (IX86_BUILTIN_PCOMNEUB): Ditto.
3964         (IX86_BUILTIN_PCOMLTUB): Ditto.
3965         (IX86_BUILTIN_PCOMLEUB): Ditto.
3966         (IX86_BUILTIN_PCOMGTUB): Ditto.
3967         (IX86_BUILTIN_PCOMGEUB): Ditto.
3968         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
3969         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
3970         (IX86_BUILTIN_PCOMEQUW): Ditto.
3971         (IX86_BUILTIN_PCOMNEUW): Ditto.
3972         (IX86_BUILTIN_PCOMLTUW): Ditto.
3973         (IX86_BUILTIN_PCOMLEUW): Ditto.
3974         (IX86_BUILTIN_PCOMGTUW): Ditto.
3975         (IX86_BUILTIN_PCOMGEUW): Ditto.
3976         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
3977         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
3978         (IX86_BUILTIN_PCOMEQUD): Ditto.
3979         (IX86_BUILTIN_PCOMNEUD): Ditto.
3980         (IX86_BUILTIN_PCOMLTUD): Ditto.
3981         (IX86_BUILTIN_PCOMLEUD): Ditto.
3982         (IX86_BUILTIN_PCOMGTUD): Ditto.
3983         (IX86_BUILTIN_PCOMGEUD): Ditto.
3984         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
3985         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
3986         (IX86_BUILTIN_PCOMEQUQ): Ditto.
3987         (IX86_BUILTIN_PCOMNEUQ): Ditto.
3988         (IX86_BUILTIN_PCOMLTUQ): Ditto.
3989         (IX86_BUILTIN_PCOMLEUQ): Ditto.
3990         (IX86_BUILTIN_PCOMGTUQ): Ditto.
3991         (IX86_BUILTIN_PCOMGEUQ): Ditto.
3992         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
3993         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
3994         (IX86_BUILTIN_PCOMEQB): Ditto.
3995         (IX86_BUILTIN_PCOMNEB): Ditto.
3996         (IX86_BUILTIN_PCOMLTB): Ditto.
3997         (IX86_BUILTIN_PCOMLEB): Ditto.
3998         (IX86_BUILTIN_PCOMGTB): Ditto.
3999         (IX86_BUILTIN_PCOMGEB): Ditto.
4000         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4001         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4002         (IX86_BUILTIN_PCOMEQW): Ditto.
4003         (IX86_BUILTIN_PCOMNEW): Ditto.
4004         (IX86_BUILTIN_PCOMLTW): Ditto.
4005         (IX86_BUILTIN_PCOMLEW): Ditto.
4006         (IX86_BUILTIN_PCOMGTW): Ditto.
4007         (IX86_BUILTIN_PCOMGEW): Ditto.
4008         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4009         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4010         (IX86_BUILTIN_PCOMEQD): Ditto.
4011         (IX86_BUILTIN_PCOMNED): Ditto.
4012         (IX86_BUILTIN_PCOMLTD): Ditto.
4013         (IX86_BUILTIN_PCOMLED): Ditto.
4014         (IX86_BUILTIN_PCOMGTD): Ditto.
4015         (IX86_BUILTIN_PCOMGED): Ditto.
4016         (IX86_BUILTIN_PCOMFALSED): Ditto.
4017         (IX86_BUILTIN_PCOMTRUED): Ditto.
4018         (IX86_BUILTIN_PCOMEQQ): Ditto.
4019         (IX86_BUILTIN_PCOMNEQ): Ditto.
4020         (IX86_BUILTIN_PCOMLTQ): Ditto.
4021         (IX86_BUILTIN_PCOMLEQ): Ditto.
4022         (IX86_BUILTIN_PCOMGTQ): Ditto.
4023         (IX86_BUILTIN_PCOMGEQ): Ditto.
4024         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4025         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4026         (enum multi_arg_type): New enum for describing the various SSE5
4027         intrinsic argument types.
4028         (bdesc_multi_arg): New table for SSE5 intrinsics.
4029         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4030         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4031         intrinsics.
4032         (ix86_expand_builtin): Add SSE5 intrinsic support.
4033         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4034         operand instructions.
4035         (ix86_expand_sse5_multiple_memory): New function to split the
4036         second memory reference from SSE5 instructions.
4037         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4038         (ix86_return_pops_args): Use stdarg_p to determine if the function
4039         has variable arguments.
4040         (ix86_setup_incoming_varargs): Ditto.
4041         (x86_this_parameter): Ditto.
4042
4043         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4044         declaration.
4045         (ix86_expand_sse5_pack): Ditto.
4046         (ix86_sse5_valid_op_p): Ditto.
4047         (ix86_expand_sse5_multiple_memory): Ditto.
4048
4049         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4050         constant for SSE5 support.
4051         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4052         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4053         (UNSPEC_SSE5_PERMUTE): Ditto.
4054         (UNSPEC_SSE5_ASHIFT): Ditto.
4055         (UNSPEC_SSE5_LSHIFT): Ditto.
4056         (UNSPEC_FRCZ): Ditto.
4057         (UNSPEC_CVTPH2PS): Ditto.
4058         (UNSPEC_CVTPS2PH): Ditto.
4059         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4060         (PCOM_TRUE): Ditto.
4061         (COM_FALSE_S): Ditto.
4062         (COM_FALSE_P): Ditto.
4063         (COM_TRUE_S): Ditto.
4064         (COM_TRUE_P): Ditto.
4065         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4066         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4067         types.
4068         (memory attribute): Ditto.
4069         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4070         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4071         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4072         (floor<mode>2): Ditto.
4073         (ceil<mode>2): Ditto.
4074         (btrunc<mode>2): Ditto.
4075         (nearbyintdf2): Ditto.
4076         (nearbyintsf2): Ditto.
4077         (sse_setccsf): Disable if SSE5.
4078         (sse_setccdf): Ditto.
4079         (sse5_setcc<mode>): New support for SSE5 conditional move.
4080         (sse5_pcmov_<mode>): Ditto.
4081
4082         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4083         (SSEMODEF4): Ditto.
4084         (SSEMODEF2P): Ditto.
4085         (ssemodesuffixf4): New mode attribute for SSE5.
4086         (ssemodesuffixf2s): Ditto.
4087         (ssemodesuffixf2c): Ditto.
4088         (sserotatemax): Ditto.
4089         (ssescalarmode): Ditto.
4090         (sse_maskcmpv4sf3): Disable if SSE5.
4091         (sse_maskcmpv2df3): Ditto.
4092         (sse_vmmaskcmpv4sf3): Ditto.
4093         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
4094         (sse5_vmfmadd<mode>4): Ditto.
4095         (sse5_fmsub<mode>4): Ditto.
4096         (sse5_vmfmsub<mode>4): Ditto.
4097         (sse5_fnmadd<mode>4): Ditto.
4098         (sse5_vmfnmadd<mode>4): Ditto.
4099         (sse5_fnmsub<mode>4): Ditto.
4100         (sse5_vmfnmsub<mode>4): Ditto.
4101         (sse5i_fmadd<mode>4): Ditto.
4102         (sse5i_fmsub<mode>4): Ditto.
4103         (sse5i_fnmadd<mode>4): Ditto.
4104         (sse5i_fnmsub<mode>4): Ditto.
4105         (sse5i_vmfmadd<mode>4): Ditto.
4106         (sse5i_vmfmsub<mode>4): Ditto.
4107         (sse5i_vmfnmadd<mode>4): Ditto.
4108         (sse5i_vmfnmsub<mode>4): Ditto.
4109         (mulv16qi3): Add SSE5 support.
4110         (mulv4si3): Ditto.
4111         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4112         (sse2_mulv4si3): Disable if SSE5.
4113         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4114         (sse4_1_roundps): Ditto.
4115         (sse4_1_roundsd): Ditto.
4116         (sse4_1_roundss): Ditto.
4117         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4118         be generated.
4119         (sse_maskcmpsf3): Ditto.
4120         (sse_vmmaskcmpv4sf3): Ditto.
4121         (sse2_maskcmpv2df3): Ditto.
4122         (sse2_maskcmpdf3): Ditto.
4123         (sse2_vmmaskcmpv2df3): Ditto.
4124         (sse2_eq<mode>3): Ditto.
4125         (sse2_gt<mode>3): Ditto.
4126         (sse5_pcmov_<mode>): Add SSE5 support.
4127         (vec_unpacku_hi_v16qi): Ditto.
4128         (vec_unpacks_hi_v16qi): Ditto.
4129         (vec_unpacku_lo_v16qi): Ditto.
4130         (vec_unpacks_lo_v16qi): Ditto.
4131         (vec_unpacku_hi_v8hi): Ditto.
4132         (vec_unpacks_hi_v8hi): Ditto.
4133         (vec_unpacku_lo_v8hi): Ditto.
4134         (vec_unpacks_lo_v8hi): Ditto.
4135         (vec_unpacku_hi_v4si): Ditto.
4136         (vec_unpacks_hi_v4si): Ditto.
4137         (vec_unpacku_lo_v4si): Ditto.
4138         (vec_unpacks_lo_v4si): Ditto.
4139         (sse5_pmacsww): New SSE5 intrinsic insn.
4140         (sse5_pmacssww): Ditto.
4141         (sse5_pmacsdd): Ditto.
4142         (sse5_pmacssdd): Ditto.
4143         (sse5_pmacssdql): Ditto.
4144         (sse5_pmacssdqh): Ditto.
4145         (sse5_pmacsdqh): Ditto.
4146         (sse5_pmacsswd): Ditto.
4147         (sse5_pmacswd): Ditto.
4148         (sse5_pmadcsswd): Ditto.
4149         (sse5_pmadcswd): Ditto.
4150         (sse5_pcmov_<move>): Conditional move support on SSE5.
4151         (sse5_phaddbw): New SSE5 intrinsic insn.
4152         (sse5_phaddbd): Ditto.
4153         (sse5_phaddbq): Ditto.
4154         (sse5_phaddwd): Ditto.
4155         (sse5_phaddwq): Ditto.
4156         (sse5_phadddq): Ditto.
4157         (sse5_phaddubw): Ditto.
4158         (sse5_phaddubd): Ditto.
4159         (sse5_phaddubq): Ditto.
4160         (sse5_phadduwd): Ditto.
4161         (sse5_phadduwq): Ditto.
4162         (sse5_phaddudq): Ditto.
4163         (sse5_phsubbw): Ditto.
4164         (sse5_phsubwd): Ditto.
4165         (sse5_phsubdq): Ditto.
4166         (sse5_pperm): Ditto.
4167         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4168         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4169         (sse5_pperm_sign_v8hi_v4si): Ditto.
4170         (sse5_pperm_zero_v8hi_v4si): Ditto.
4171         (sse5_pperm_sign_v4si_v2di): Ditto.
4172         (sse5_pperm_sign_v4si_v2di): Ditto.
4173         (sse5_pperm_pack_v2di_v4si): Ditto.
4174         (sse5_pperm_pack_v4si_v8hi): Ditto.
4175         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4176         (sse5_perm<mode>): New SSE5 intrinsic insn.
4177         (rotl<mode>3): Ditto.
4178         (sse5_rotl<mode>3): Ditto.
4179         (sse5_ashl<mode>3): Ditto.
4180         (sse5_lshl<mode>3): Ditto.
4181         (sse5_frcz<mode>2): Ditto.
4182         (sse5s_frcz<mode>2): Ditto.
4183         (sse5_cvtph2ps): Ditto.
4184         (sse5_cvtps2ph): Ditto.
4185         (sse5_vmmaskcmp<mode>3): Ditto.
4186         (sse5_com_tf<mode>3): Ditto.
4187         (sse5_maskcmp<mode>3): Ditto.
4188         (sse5_maskcmp_uns<mode>3): Ditto.
4189         (sse5_maskcmp_uns2<mode>3): Ditto.
4190         (sse5_pcom_tf<mode>3): Ditto.
4191
4192         * config/i386/predicates.md (sse5_comparison_float_operator):
4193         New predicate to match the comparison operators supported by
4194         the SSE5 com instruction.
4195         (ix86_comparison_int_operator): New predicate to match just the
4196         signed int comparisons.
4197         (ix86_comparison_uns_operator): New predicate to match just the
4198         unsigned int comparisons.
4199
4200         * doc/invoke.texi (-msse5): Add documentation.
4201         (-mfused-madd): Ditto.
4202
4203         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4204
4205         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4206         mmintrin-common.h.
4207         (x86_64-*-*): Ditto.
4208
4209         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4210
4211         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4212         intrinisics for SSE5.
4213
4214         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4215         mmintrin-common.h.
4216
4217         * config/i386/mmintrin-common.h: New file, to contain common
4218         instructions between SSE4.1 and SSE5.
4219
4220         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4221         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4222         (gen_regparm_prefix): Ditto.
4223
4224         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4225         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4226         prototype_p to determine if a function is prototyped.
4227
4228 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
4229
4230         * c-common.c (c_common_reswords) add the alignof keyword,
4231         with same RID as __alignof and __alignof__
4232
4233 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
4234
4235         * hooks.h (hook_bool_const_int_const_int_true): Declare.
4236         * hooks.c (hook_bool_const_int_const_int_true): New function.
4237         * target.h (struct gcc_target): Add can_eliminate field.
4238         * target-def.h (TARGET_CAN_ELIMINATE): Define.
4239         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
4240         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
4241         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
4242         (elim_table): Revise comment.
4243         * system.h (CAN_ELIMINATE): Poison.
4244         * defaults.h (CAN_ELIMINATE): Remove.
4245         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4246
4247         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4248         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4249         Define macro.
4250         (alpha_vms_can_eliminate): Declare as static, change return type to
4251         bool.
4252         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4253
4254         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4255         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4256         (arm_can_eliminate): New function.
4257
4258         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4259         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4260         (avr_can_eliminate): Declare as static.
4261         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4262
4263         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
4264         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
4265         (bfin_can_eliminate): New function.
4266
4267         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
4268         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
4269         (crx_can_eliminate): New function.
4270
4271         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
4272         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
4273         (fr30_can_eliminate): New function.
4274
4275         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
4276         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
4277         (frv_can_eliminate): New function.
4278
4279         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
4280         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
4281         (h8300_can_eliminate): New function.
4282
4283         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
4284         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
4285         (i386_can_eliminate): Declare as static, change return type to bool.
4286         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
4287
4288         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
4289         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
4290         (ia64_can_eliminate): New function.
4291
4292         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
4293         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
4294         (iq2000_can_eliminate): New function.
4295
4296         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
4297         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
4298         (m32r_can_eliminate): New function.
4299
4300         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
4301         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
4302         (m68hc11_can_eliminate): New function.
4303
4304         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
4305         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
4306         (m68k_can_eliminate): New function.
4307
4308         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
4309         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
4310         (mep_can_eliminate): New function.
4311
4312         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
4313         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
4314         (mips_can_eliminate): New function.
4315
4316         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
4317         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
4318         (rs6000_can_eliminate): New function.
4319
4320         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
4321         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
4322         (s390_can_eliminate): Declare as static.
4323         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
4324
4325         * config/score/score.h (CAN_ELIMINATE): Remove macro.
4326         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
4327         (score_can_eliminate): New function.
4328
4329         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4330         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4331         (sparc_can_eliminate): Declare as static.
4332         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4333
4334         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4335         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4336         (xstormy16_can_eliminate): New function.
4337
4338         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4339         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4340         (v850_can_eliminate): New function.
4341
4342 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
4343
4344         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4345         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4346         (*movdfcc_ext[1234]): Disable for IEEE mode.
4347
4348 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
4349
4350         * gimplify.c (prepare_gimple_addressable): New static function.
4351         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4352         it addressable.
4353         (gimplify_addr_expr): Invoke it similarly on the operand instead of
4354         manually fiddling with it.
4355
4356 2009-08-25  Michael Matz  <matz@suse.de>
4357
4358         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4359         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4360         full expression.
4361         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4362         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4363         (do_jump): Split out code for simple binary comparisons into ...
4364         (do_jump_1): ... this, taking the individual operands and code.
4365         Change callers to helper function above accordingly.
4366         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4367         comparisons.
4368
4369 2009-08-25  Michael Matz  <matz@suse.de>
4370
4371         * expr.h (struct separate_ops, sepops): New type for passing
4372         around an exploded simple expression.
4373         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4374         Use this structure instead of expression tree.
4375         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4376         expression, only its type.
4377         (expand_vec_cond_expr): Take type and individual operands instead
4378         of full expression.
4379         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4380         expand_vec_shift_expr): Change prototype accordingly.
4381         * tree-vect-stmts.c (vectorizable_condition): Change call of
4382         expand_vec_cond_expr_p to pass only type.
4383         * expr.c (do_store_flags): Change prototype and implementation
4384         to take an exploded expression.
4385         (expand_expr_real_1): New local ops initialized with details
4386         of the full expression.  Use it instead of full
4387         expression in calls to do_store_flags, expand_vec_cond_expr,
4388         expand_widen_pattern_expr and expand_vec_shift_expr.
4389
4390 2009-08-25  Michael Matz  <matz@suse.de>
4391
4392         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4393         treeop2 initialized with first three operands of the full expression.
4394         Substitute all TREE_OPERAND (exp, [012]) calls with them.
4395
4396 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
4397
4398         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4399         (__gthread_objc_condition_allocate): Mark arguments as unused.
4400         (__gthread_objc_condition_deallocate): Likewise.
4401         (__gthread_objc_condition_wait): Likewise.
4402         (__gthread_objc_condition_broadcast): Likewise.
4403         (__gthread_objc_condition_signal): Likewise.
4404         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4405         (__gthread_objc_thread_id): Likewise.
4406
4407 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
4408
4409         PR middle-end/41149
4410         * tree-pretty-print.c (print_call_name): Print the correct call name
4411         for procedure pointer components.
4412
4413 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
4414
4415         * config/ia64/ia64.c (ia64_promote_function_mode): Call
4416         default_promote_function_mode when not VMS.
4417
4418 2009-08-24  Olivier Hainque  <hainque@adacore.com>
4419
4420         * convert.c (convert_to_integer): Don't assume an input pointer is
4421         POINTER_SIZE wide.  Fetch from the type instead.
4422
4423 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4424
4425         * configure.ac (AC_PREREQ): Bump to 2.64.
4426
4427 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
4428
4429         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4430         (process_command): Don't search standard_exec_prefix_1 and
4431         standard_exec_prefix_2.
4432
4433 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4434
4435         * config/arm/arm.c (output_return_instruction): Handle for
4436         unified syntax.
4437
4438 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4439
4440         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4441
4442 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4443
4444         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4445         (*arm_movdf_vfp): Likewise.
4446
4447 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4448
4449         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4450         (vashr<mode>3): Rename from ashr<mode>3.
4451         (vlshr<mode>3): Rename from lshr<mode>3.
4452
4453 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
4454
4455         PR/40786
4456         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4457         (check_format_info_main): Use scalar_identify_flag.
4458         (check_format_types): Check for scalar size identity if
4459         scalar_identify_flag is set.
4460         (printf_length_specs): Extend by new field.
4461         (asm_fprintf_length_specs): Likewise.
4462         (gcc_diag_length_specs): Likewise.
4463         (scanf_length_specs): Likewise.
4464         (strfmon_length_specs): Likewise.
4465         (gcc_gfc_length_specs): Likewise.
4466         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4467         (ms_printf_flag_specs): Likewise.
4468         * c-format.h (format_length_info): Add new member scalar_identity_flag.
4469
4470 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
4471
4472         PR target/40718
4473         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4474         (*call_value_pop_1): Ditto.
4475         (*sibcall_pop_1): New insn pattern.
4476         (*sibcall_value_pop_1): Ditto.
4477
4478 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4479
4480         PR target/41081
4481         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4482         ashrsi3_64): New.
4483
4484 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4485
4486         PR target/41081
4487         * fwprop.c (try_fwprop_subst): Allow multiple sets.
4488         (get_reg_use_in): New function.
4489         (forward_propagate_subreg): Propagate through subreg of zero_extend
4490         or sign_extend.
4491
4492 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
4493
4494         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
4495         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
4496
4497 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4498
4499         * configure.ac: Remove --with-datarootdir, --with-docdir,
4500         --with-htmldir switches.  No need to call AC_SUBST for
4501         datarootdir, docdir, htmldir any more.
4502         * configure: Regenerate.
4503         * doc/install.texi (Configuration): Document --datarootdir,
4504         --docdir, --htmldir, --pdfdir; update documentation for
4505         --infodir, --mandir.
4506         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
4507         M4 to 1.4.6.
4508
4509         * aclocal.m4: Regenerate.
4510         * config.in: Regenerate.
4511         * configure: Regenerate.
4512
4513 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
4514             Olivier Hainque  <hainque@adacore.com>
4515
4516         * config/ia64/ia64.c: Include libfuncs.h.
4517         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
4518         (ia64_expand_call): Use reg 25 on VMS.
4519         (ia64_initialize_trampoline): Fix for VMS ABI.
4520         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
4521         (ia64_function_arg): Initialize reg 25 on VMS.
4522         Fix OpenVMS ABI issues for varargs.
4523         For OpenVMS, emit the Argument Information register set in the
4524         incoming/sibcall case as well.
4525         (ia64_arg_type): New function.
4526         (ia64_function_arg_advance): Keep track of cum->words.
4527         Fix OpenVMS ABI issues for varargs.
4528         (ia64_function_value): On VMS, promote mode of non-aggregate types.
4529         (ia64_override_options): Set flag_no_common on VMS.
4530         (ia64_init_builtins): Disable FWRITE builtin.
4531         (ia64_asm_output_external): Call DO_CRTL_NAMES.
4532         (ia64_vms_init_libfuncs): Add decc$ routines.
4533         (ia64_vms_valid_pointer_mode): New function.
4534         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
4535         (ia64_promote_function_mode): New function
4536         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
4537         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
4538         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
4539         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
4540         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
4541         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
4542         Suppress trailing '#' if VALUE is numeric.
4543         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
4544         ia64_promote_function_mode.
4545         (TARGET_VALID_POINTER_MODE): Define.
4546
4547 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
4548
4549         PR target/40671
4550         * config/rs6000/rs6000.c (rs6000_override_options): Use
4551         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
4552
4553         PR target/41145
4554         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
4555         reporting of vector + decimal/boolean/complex error.
4556
4557 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
4558
4559         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
4560         __vector double TYPE_DECL.
4561
4562 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
4563
4564         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
4565         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
4566         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
4567         to pointer to enum machine_mode.  Update all callers as needed.
4568
4569 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
4570
4571         * config/alpha/alpha.md (exception_receiver): Emit alternative
4572         GP load sequence if flag_reorder_blocks_and_partition is set.
4573         (*exception_receiver_2): Also enable when
4574         flag_reorder_blocks_and_partition is set.
4575
4576 2009-08-20  Matt Rice  <ratmice@gmail.com>
4577             Diego Novillo  <dnovillo@google.com>
4578
4579         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
4580         tree-ssa-sccvn.h.
4581
4582 2009-08-20  Richard Guenther  <rguenther@suse.de>
4583
4584         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
4585         * c-tree.h (c_dup_lang_specific_decl): Remove.
4586         (struct lang_decl, struct lang_type): Move definitions ...
4587         * c-lang.h: ... here.  New file.
4588         * c-decl.c: Include c-lang.h.
4589         (c_dup_lang_specific_decl): Remove.
4590         * c-typeck.c: Include c-lang.h.
4591         * Makefile.in (c-decl.o): Add c-lang.h dependency.
4592         (c-typeck.o): Likewise.
4593         * c-config-lang.in (gtfiles): Add c-lang.h.
4594         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
4595         like c-tree.h.
4596
4597 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
4598
4599         * config/alpha/alpha.c (alpha_end_function): Do not clear
4600         crtl->emit structure and free insn locators if cfun->is_thunk is true,
4601         this is now handled in generic code.
4602
4603 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4604
4605         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
4606         (s390_z10_fix_long_loop_prediction): New function.
4607         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
4608         (s390_reorg): Walk over the INSNs and invoke
4609         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
4610
4611 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4612
4613         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
4614         "*brx_64bit", "*brx_31bit"): New patterns.
4615         * config/s390/s390.c ('E'): New output modifier.
4616
4617 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4618             Richard Earnshaw  <richard.earnshaw@arm.com>
4619
4620         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
4621         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
4622
4623 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4624
4625         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
4626         patterns.
4627         * pa.c (emit_move_sequence): Check if address of operand1 is valid
4628         for mode mode of operand0 when doing secondary reload for SAR.
4629
4630 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4631
4632         PR middle-end/41123
4633         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
4634         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
4635
4636 2009-08-19  Jason Merrill  <jason@redhat.com>
4637
4638         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
4639         supported template depth in C++0x.
4640
4641 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4642
4643         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
4644         free_after_compilation.
4645         * config/score/score7.c (score7_output_mi_thunk): Likewise.
4646         * config/score/score3.c (score3_output_mi_thunk): Likewise.
4647         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
4648         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4649         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4650         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4651         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4652
4653 2009-08-19  Ian Lance Taylor  <iant@google.com>
4654
4655         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
4656         of (plus (mult (neg B) C) A).
4657
4658 2009-08-18  Michael Matz  <matz@suse.de>
4659
4660         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
4661         instead of comparing TYPE_MAIN_VARIANT for equality.
4662         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
4663         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
4664         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
4665         * gimplify.c (goa_lhs_expr_p): Ditto and use
4666         STRIP_USELESS_TYPE_CONVERSION.
4667
4668 2009-08-18  Michael Matz  <matz@suse.de>
4669
4670         * tree-ssa-structalias.c (create_variable_info_for): Also mark
4671         first field in a struct.
4672         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
4673
4674 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
4675
4676         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4677         locators before emit_insn is called.  Remove assert that
4678         cfun->is_thunk.
4679         (alpha_end_function): Clear crtl->emit structure and free insn
4680         locators if cfun->is_thunk is true.
4681
4682 2009-08-18  Jason Merrill  <jason@redhat.com>
4683
4684         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
4685         type if available.
4686         * configure.ac: Test for it.
4687         * configure, config.in: Regenerate.
4688         * doc/install.texi: Document --enable-gnu-unique-object.
4689
4690 2009-08-18  Richard Guenther  <rguenther@suse.de>
4691
4692         PR middle-end/41094
4693         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
4694         pow(x,y*z) only if x is nonnegative.
4695
4696 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
4697
4698         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
4699         on jumps.
4700
4701         PR target/40971
4702         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
4703         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
4704
4705 2009-08-17  DJ Delorie  <dj@redhat.com>
4706
4707         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
4708         * config/m32c/prologue.md (epilogue_freit): New.
4709         (fset_b): New.
4710         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
4711         (bank_switch_p): Likewise.
4712         (fast_interrupt_p): Likewise.
4713         (interrupt_p): Likewise.
4714         (m32c_conditional_register_usage): Round memregs size up.
4715         (need_to_save): We only need to save $a0 when we use ENTER.
4716         (interrupt_p): Check for fast_interrupt too.
4717         (bank_switch_p): New.
4718         (fast_interrupt_p): New.
4719         (m32c_attribute_table): Add bank_switch and fast_interrupt.
4720         (m32c_emit_prolog): Support bank switching and fast interrupts.
4721         * doc/extend.texi (Function Attributes): Add bank_switch and
4722         fast_interrupt.
4723
4724 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
4725
4726         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
4727         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
4728
4729 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
4730
4731         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
4732         (menu): Add IA-64/VMS Options.
4733         (IA-64/VMS Options): Likewise.
4734
4735 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4736
4737         PR target/38599
4738         * config/mips/mips.md (*lwxs): Use :P for pointer values.
4739
4740 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
4741
4742         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
4743         (mips_pop_asm_switch): Likewise.
4744         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
4745         with...
4746         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4747         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
4748         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
4749         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
4750         instead of set_noreorder.
4751         (mips_output_function_prologue): Use the new functions.
4752         (mips_output_function_epilogue): Likewise.
4753         (mips_need_noat_wrapper_p): New function, split out from...
4754         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
4755         Use mips_push_asm_switch and mips_pop_asm_switch.
4756         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
4757         and mips_pop_asm_switch.
4758         (ASM_OUTPUT_REG_POP): Likewise.
4759         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
4760         Use mips_pop_asm_switch.
4761         (mips_asm_switch): New structure.
4762         (set_noreorder, set_nomacro): Replace with...
4763         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4764         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
4765         instead of set_nomacro.
4766         (fix_truncsfsi2_macro): Likewise.
4767         (cprestore): Likewise.
4768         (hazard): Use mips_noreorder instead of set_noreorder.
4769         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
4770
4771 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
4772
4773         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
4774         from prev_active_insn.
4775
4776 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
4777
4778         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
4779         * config/avr/avr.c (avr_override_options): Initialize
4780         avr_current_arch variable.
4781         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
4782         __AVR_HAVE_16BIT_SP__ according to the device type.
4783         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
4784         TARGET_TINY_STACK.
4785         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
4786         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
4787
4788 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
4789
4790         PR debug/37801
4791         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
4792         generating inlined subroutine die only. We shouldn't be
4793         called for anything else.
4794         (gen_block_die): Don't generate inline subroutine debug info for
4795         abstract blocks.
4796
4797 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4798
4799         * graphite-poly.c (print_pbb): Print PBB index.
4800
4801 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
4802
4803         PR middle-end/40981
4804         * graphite-interchange.c (ppl_max_for_le): Moved...
4805         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
4806         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
4807         ppl_Pointset_Powerset_C_Polyhedron_maximize.
4808         * graphite-ppl.h (ppl_max_for_le): Declared.
4809
4810 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
4811
4812         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
4813         supported on all platforms.
4814         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
4815         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
4816         * c-pragma.c: Likewise.
4817         * target-def.h (TARGET_INITIALIZER): Remove
4818         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4819         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
4820
4821 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4822
4823         * config/ia64/fde-vms.c: New file.
4824         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
4825         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
4826         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
4827         (uw_frame_state_for): Only register a personality routine if it is
4828         known to be compatible with our expectations.
4829         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
4830         Declare unw_table_entry stack variable and
4831         mod all calls to _Unwind_FindTableEntry to add arg.
4832         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
4833         (_Unwind_FindTableEntry): Add arg to prototype.
4834
4835 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
4836
4837         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
4838         field 'signal_pfs_loc'.
4839         (uw_frame_state_for): Remove duplicate code dealing with leaf
4840         procedures without unwind info.
4841         If in the frame after unwinding through a signal handler, restore
4842         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
4843         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
4844         'pfs_loc' to the AR.PFS location in the signal context; instead
4845         set 'signal_pfs_loc'.
4846         Manually generate the unwind info for the AR.PFS register.
4847         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
4848         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
4849         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
4850         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
4851         instead set 'signal_pfs_loc'.
4852         Remove code preventing the AR.PFS register from being restored
4853         from the signal context.
4854
4855 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
4856             Tristan Gingold  <gingold@adacore.com>
4857
4858         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
4859         * config/ia64/t-vms: New file.
4860         * config/ia64/vms64.h: New file.
4861         * config/ia64/vms.h: New file.
4862         * config/ia64/vms-crtinit.asm: New file.
4863         * config/ia64/vms_symvec_libgcc_s.opt: New file.
4864         * config/ia64/vms-unwind.h: New file.
4865
4866 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4867
4868         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
4869         TFmode compares.
4870
4871 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4872
4873         PR middle-end/30789
4874         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
4875         Move declaration...
4876         * real.h (do_mpc_arg2): ... here.
4877         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
4878         and RDIV_EXPR.
4879
4880 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
4881
4882         * final.c (add_debug_prefix_map): Don't use GC memory for
4883         old_prefix and new_prefix.
4884
4885 2009-08-14  Richard Guenther  <rguenther@suse.de>
4886
4887         * ipa-prop.c (compute_complex_pass_through): If we cannot
4888         compute a non-varying offset for IPA_JF_ANCESTOR punt.
4889
4890 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4891
4892         * c-lex.c (c_lex_with_flags): Increase size of local variable
4893         to avoid memory clobber.
4894
4895 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
4896
4897         PR target/40934
4898         * config/i386/i386.c (ix86_fp_comparison_strategy):
4899         Only enable/disable sahf at function granularity.
4900
4901 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
4902
4903         PR rtl-optimization/41064
4904         * reload1.c (reload_as_needed): Don't call extract_insn
4905         for known invalid replacements after calling
4906         validate_replace_rtx_group and verify_changes.
4907
4908 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
4909
4910         PR target/41019
4911         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
4912         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
4913         ix86_expand_fp_vcond.
4914         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
4915         Assert that operation is supported by ix86_expand_int_vcond.
4916         (vcondu<SSEMODE124C8:mode>): Ditto.
4917
4918 2009-08-13  DJ Delorie  <dj@redhat.com>
4919
4920         * config/i386/djgpp-stdint.h: New.
4921         * config.gcc (djgpp): Use it.
4922
4923 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
4924
4925         * config/sh/sh.c (sh_override_options): When flag_exceptions or
4926         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
4927
4928 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
4929
4930         * tree-ssa-loop-prefetch.c
4931         (prune_ref_by_group_reuse): Enhance probabilistic analysis
4932         for long-stride pruning.
4933         (compute_miss_rate): New function to compute the probability
4934         that two memory references access different cache lines.
4935
4936 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
4937
4938         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
4939
4940 2009-08-13  Richard Guenther  <rguenther@suse.de>
4941
4942         PR middle-end/41047
4943         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
4944         use the constant pointer type.
4945         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
4946         of CV qualifiers on the target pointer type.
4947         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
4948         conversion check before restrict check.
4949
4950 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4951
4952         PR target/41029
4953         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
4954
4955 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
4956
4957         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
4958
4959 2009-08-12  Richard Guenther  <rguenther@suse.de>
4960
4961         PR tree-optimization/41011
4962         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
4963         and reference constructing.
4964
4965 2009-08-12  Xinliang David Li  <davidxl@google.com>
4966
4967         PR tree-optimization/41012
4968         * tree-flow.h : New external interface.
4969         * gimple-low.c (check_call_arg): Change to public function.
4970         Remove argument mismatch check in lowering.
4971         * tree-inline.h (tree_can_inline_p): Interface change.
4972         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
4973         into this function.
4974         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
4975         Call change to tree_can_inline_p function.
4976         (cgraph_decide_inlining_incrementally): Ditto.
4977
4978 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
4979
4980         PR tree-optimization/41031
4981         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
4982         on the partition variable rather than promote_mode on the source
4983         type.  Assert that the partition variable's type has the same
4984         mode as the source value's.
4985
4986 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
4987
4988         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
4989         for for_return == 2.
4990         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
4991         comments.
4992         * calls.c (expand_call): Fix typo.
4993         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
4994         and PARM_DECL.
4995         * stmt.c (expand_value_return): Use promote_function_mode to copy out
4996         of pseudo.
4997         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
4998         * config/cris/cris.c (cris_promote_function_mode): Likewise.
4999         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
5000         * config/pa/pa.c (pa_promote_function_mode): Likewise.
5001
5002 2009-08-12  Andrew Haley  <aph@redhat.com>
5003
5004         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
5005
5006 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5007
5008         PR bootstrap/40103
5009         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5010
5011 2009-08-12  Richard Guenther  <rguenther@suse.de>
5012
5013         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
5014         * gimplify.c (gimplify_modify_expr): Do not use
5015         lang_hooks.types_compatible_p.
5016         * tree-ssa.c (useless_type_conversion_p): For aggregates
5017         just return false if the canonical types differ.
5018
5019 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5020
5021         PR middle-end/40980
5022         * sese.c (convert_for_phi_arg): New.
5023         (add_guard_exit_phis): Use convert_for_phi_arg.
5024
5025 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5026
5027         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
5028         unknown subscript upper bounds.
5029
5030 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5031             Pranav Garg  <pranav.garg2107@gmail.com>
5032
5033         * graphite-interchange.c (gather_access_strides): Removed.
5034         (ppl_max_for_le): New.
5035         (build_linearized_memory_access): New.
5036         (memory_stride_in_loop): New.
5037         (pbb_interchange_profitable_p): Reimplemented.
5038         * graphite-ppl.h (ppl_new_id_map): New.
5039         (ppl_interchange): New.
5040
5041 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5042
5043         * graphite-interchange.c (compute_subscript): Removed.
5044         (compute_array_size_cstr): Removed.
5045         (compute_array_size_poly): Removed.
5046         (compute_array_size): Removed.
5047         (gather_access_strides_poly): Removed.
5048         (gather_access_strides): Empty.
5049
5050 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5051
5052         * graphite-dependences.c (dependence_polyhedron_1): Replace
5053         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
5054         (graphite_legal_transform_dr): Same.
5055         (graphite_carried_dependence_level_k): Same.
5056         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
5057         Initialize PDR_NB_SUBSCRIPTS.
5058         (print_pdr_access_layout): Replace pdr_nb_subscripts with
5059         PDR_NB_SUBSCRIPTS.
5060         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
5061         (PDR_NB_SUBSCRIPTS): New.
5062         (pdr_nb_subscripts): Removed.
5063         (pdr_dim): Simplified.
5064         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
5065         with PDR_NB_SUBSCRIPTS.
5066
5067 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5068
5069         * graphite-interchange.c (compute_array_size): Remove use of
5070         PDR_DATA_CONTAINER.
5071         * graphite-poly.c (new_poly_dr): Remove argument data_container.
5072         Do not initialize PDR_DATA_CONTAINER.
5073         (print_pdr): Do not print PDR_DATA_CONTAINER.
5074         * graphite-poly.h (struct poly_dr): Remove data_container field.
5075         (PDR_DATA_CONTAINER): Removed.
5076         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
5077         PDR_DATA_CONTAINER.
5078         (build_poly_dr): Same.
5079
5080 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5081             Sebastian Pop  <sebastian.pop@amd.com>
5082
5083         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
5084         copy of the dependence polyhedron.  Free the temporary objects.
5085         (graphite_carried_dependence_level_k): Free unused objects before
5086         returning.
5087
5088         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
5089         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
5090         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
5091         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
5092         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
5093
5094 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5095
5096         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
5097         Early return without analyzing the data dependences if no
5098         transform has been done.  Call restore_scattering if the transform
5099         is not legal.
5100         (graphite-interchange.c): Same.
5101         * graphite-poly.c (print_scattering_function): Test for
5102         PBB_TRANSFORMED.
5103         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
5104         (apply_poly_transforms): Do not gcc_assert that
5105         the transform is legal.
5106         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
5107         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
5108         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
5109         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
5110         * graphite-poly.h (struct poly_scattering): New.
5111         (struct poly_bb): Add original, transformed, and saved fields.
5112         Remove transformed_scattering, original_scattering,
5113         nb_local_variables and nb_scattering_transform fields.
5114         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
5115         (poly_scattering_new): New.
5116         (poly_scattering_free): New.
5117         (poly_scattering_copy): New.
5118         (store_scattering_pbb): New.
5119         (store_scattering): New.
5120         (restore_scattering_pbb): New.
5121         (restore_scattering): New.
5122         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
5123         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
5124
5125 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5126
5127         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
5128         (print_scop): Same.
5129
5130 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5131
5132         * Makefile.in (graphite.o): Depends on PREDICT_H.
5133         * graphite.c: Include predict.h.
5134         (graphite_finalize): Call tree_estimate_probability.
5135         * predict.c (predict_loops): Do not call scev_initialize and
5136         scev_finalize.
5137         (tree_estimate_probability_bb): New.
5138         (tree_estimate_probability): Do not initialize loops: move that
5139         code to the driver.  Call tree_estimate_probability_bb.
5140         (tree_estimate_probability_driver): New.
5141         (pass_profile): Use tree_estimate_probability_driver.
5142         * predict.h (tree_estimate_probability): Declared.
5143
5144 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5145
5146         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
5147         * graphite-dependences.c (graphite_legal_transform): Add time to
5148         TV_GRAPHITE_DATA_DEPS.
5149         (dependency_between_pbbs_p): Same.
5150         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
5151
5152 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
5153
5154         PR rtl-optimization/41033
5155         * alias.c (nonoverlapping_component_refs_p): Punt when strict
5156         aliasing is disabled.
5157
5158 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5159
5160         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
5161         si_mask_operand, and_load_operand, low_bitmask_operand,
5162         and_reg_operand, and_operand): New predicates.
5163         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
5164         * config/mips/mips.c (and_operands_ok): New function.
5165         * config/mips/mips-protos.h (and_operands_ok): Declare it.
5166         * config/mips/mips.md (move_type): Add ext_ins and logical.
5167         (type): Handle them.
5168         (and<mode>3): Use and_reg_operand as the second operand's predicate.
5169         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
5170         shift_shift.  Remove commutative constraint modifier.
5171         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
5172         shift_shift.
5173         (*clear_upper32_dext): Remove define_insn_and_split.
5174         (*clear_upper32): Turn this define_insn_and_split ...
5175         (splitter for ANDing register with 0xffff_ffff): .. into this.
5176
5177 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5178
5179         * combine.c (try_widen_shift_mode): Factor out code to check if an
5180         integer constant is a low-order bitmask from here ...
5181         * rtlanal.c (low_bitmask_len): ... to here.
5182         * rtl.h (low_bitmask_len): Declare.
5183
5184 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
5185
5186         PR target/8603
5187         * config/alpha/alpha.md (addsi3): Remove expander.
5188         (addsi3): Rename from *addsi3_internal insn pattern.
5189         (subsi3): Remove expander.
5190         (subsi3): Rename from *subsi3_internal insn pattern.
5191
5192 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
5193
5194         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
5195         FWRITE_UNLOCKED.
5196
5197 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
5198             Eric Botcazou  <botcazou@adacore.com>
5199             Douglas B Rupp  <rupp@gnat.com>
5200
5201         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
5202         that records that fit in 64 bits are returned by immediate value,
5203         as required by OpenVMS Calling Standard.
5204         (function_value): Adjust for above modification.
5205         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
5206         virtual_incoming_args_rtx as base object, not next_arg.
5207         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
5208
5209 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5210
5211         * reload.c (find_reloads_subreg_address): Check the original
5212         req_equiv_mem address to detect the case where an address is
5213         not valid in the outer mode.
5214
5215 2009-08-11  Richard Guenther  <rguenther@suse.de>
5216
5217         PR bootstrap/40788
5218         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
5219
5220 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
5221
5222         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
5223         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
5224
5225 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
5226             Douglas B Rupp  <rupp@gnat.com>
5227
5228         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
5229         PT_STACK when frame_pointer_needed on OpenVMS.
5230         (alpha_pv_save_size, alpha_using_fp): Remove.
5231         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
5232         with proper processing for PT_NULL.
5233         (alpha_vms_initial_elimination_offset): New function. Support for
5234         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
5235         (alpha_sa_size): Force procedure type to PT_STACK when
5236         frame_pointer_needed on OpenVMS.
5237         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
5238         (alpha_using_fp): Likewise.
5239         (alpha_vms_can_eliminate): Add prototype.
5240         (alpha_vms_initial_elimination_offset): Likewise.
5241         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
5242         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
5243
5244 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
5245             Douglas B Rupp  <rupp@gnat.com>
5246
5247         * config/alpha/alpha.c (common_object_handler): New function.
5248         (vms_attribute_table): Declare a single attribute "common_object".
5249         (vms_output_aligned_decl_common): New global function.
5250         (SECTION_VMS_OVERLAY): Delete.
5251         (SECTION_VMS_GLOBAL): Likewise.
5252         (SECTION_VMS_INITIALIZE): Likewise.
5253         (vms_asm_named_section): Remove support for above flags.
5254         (vms_section_type_flags): Delete.
5255         (TARGET_SECTION_TYPE_FLAGS): Likewise.
5256         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5257         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5258         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5259
5260 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5261
5262         PR target/41015
5263         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5264         (sub_ddmmss): Likewise.
5265
5266 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
5267
5268         PR bootstrap/41018
5269         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
5270         year.
5271
5272 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5273
5274         PR target/37053
5275         * reload1.c (reload_as_needed): Use cancel_changes to completely
5276         undo a failed replacement attempt.
5277
5278 2009-08-10  Richard Guenther  <rguenther@suse.de>
5279
5280         PR middle-end/41006
5281         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
5282         (useless_type_conversion_p): ... here.  Require pointer targets
5283         to be compatible.
5284
5285 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
5286
5287         PR c++/40866
5288         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
5289         loose the original type of the statement list.
5290
5291 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5292
5293         * config/alpha/alpha.c: Include libfuncs.h
5294         (avms_asm_output_extern): New function.
5295         (alpha_init_libfuncs): Init some decc libfuncs.
5296         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
5297         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
5298         (DO_CRTL_NAMES): Define.
5299         (LIB_SPEC): Remove.
5300         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
5301         (LONG_TYPE_SIZE): Define.
5302         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
5303         (SUBTARGET_SWITCHES): Define malloc64 switch.
5304         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
5305         (MASK_RETURN_ADDR): Define.
5306         doc/invoke.texi (mmalloc64): Document switch.
5307
5308 2009-08-09  Olivier Hainque  <hainque@adacore.com>
5309             Douglas B Rupp  <rupp@gnat.com>
5310
5311         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
5312         uses_condition_handler.
5313         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
5314         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
5315         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
5316         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
5317         (code_for_builtin): New insn codes for the new alpha_builtins.
5318         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
5319         (alpha_sa_size): Account for uses_condition_handler.
5320         (alpha_expand_prologue): Likewise.
5321         (alpha_start_function): Likewise.
5322         (alpha_expand_epilogue): Likewise.
5323         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
5324         establish/revert expanders.
5325         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
5326         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
5327         New expander, resorting to the alpha.c associated function.
5328         (builtin_revert_vms_condition_handler): Likewise.
5329         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5330         __gcc_shell_handler, the static VMS condition handler used as
5331         an indirection wrapper to the current dynamically established
5332         handler.
5333         * config/alpha/vms-unwind.h: Complete rewrite.
5334         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5335         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5336
5337 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
5338             Douglas B Rupp  <rupp@gnat.com>
5339
5340         * config/alpha/alpha.c (alpha_links): Add 'target' field.
5341         (alpha_need_linkage): Handle aliases.  Return function symbol.
5342         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5343         Use ultimate alias target for the linkage name.
5344         * config/alpha/alpha.md (movmemdi): Use the symbol returned
5345         by alpha_need_linkage for the function symbol.
5346         (setmemdi): Likewise.
5347
5348 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5349
5350         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5351         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5352         (ASM_WEAKEN_LABEL): Define.
5353         (CRT_CALL_STATIC_FUNCTION): Define.
5354         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5355         (ENDFILE_SPEC): Define.
5356         (INIT_SECTION_ASM_OP): Define.
5357         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5358         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5359         crtend.o crtendS.o.
5360         (MULTILIB_OSDIRNAMES): Define.
5361         (shlib_version): Define.
5362         (SHLIB_EXT): Define.
5363         (SHLIB_OBJS): Define.
5364         (SHLIB_NAME): Define.
5365         (SHLIB_MULTILIB): Define.
5366         (SHLIB_INSTALL): Define.
5367         (SHLIB_SYMVEC): Define.
5368         (SHLIB_SYMVECX2): Define.
5369         (SHLIB_LINK): Define.
5370
5371 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5372
5373         * config/alpha/alpha.c (alpha_initialize_trampoline):
5374         Initialize VMS trampoline IAW ABI for bounded procedure calls.
5375         (alpha_start_function): Emit transfer address on nested functions
5376         for VMS trampoline call.
5377         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5378         since no longer used.
5379         * config/alpha/vms-tramp.asm: Remove.
5380         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5381         since now only data initialized at runtime.
5382
5383 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5384
5385         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5386         (LINK_GCC_C_SEQUENCE_SPEC): Define.
5387         (MD_EXEC_PREFIX): Remove, no longer used.
5388         (MD_STARTFILE_PREFIX): Likewise.
5389         (INCLUDE_DEFAULTS): Likewise.
5390         * config/alpha/t-vms:
5391         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5392
5393 2009-08-09  Richard Guenther  <rguenther@suse.de>
5394
5395         PR tree-optimization/41016
5396         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5397         (operand_precision): Remove.
5398         (integral_operand_p): Likewise.
5399         (recognize_single_bit_test): Adjust.
5400
5401 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5402
5403         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5404         operation overflows.  Likewise non-cast unary arithmetic.
5405         If one arm of a conditional expression is always taken,
5406         inhibit evaluation warnings for the other arm.  Likewise inhibit
5407         evaluation warnings for the second && or || operand if the first
5408         operand is enough to determine the result.
5409         * c-typeck.c (build_conditional_expr): Apply the same inhibition
5410         rules here.
5411         (build_binary_op): Prevent duplicate evaluation warnings.
5412
5413 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5414
5415         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5416         and destination have different modes, Use promote_mode to
5417         determine the signedness of the conversion.  Assert that the
5418         promoted source mode matches the destination mode.  Don't pass
5419         the destination and destination mode to expand_expr if the source
5420         mode is different.  Simplify conversion logic.
5421
5422 2009-08-09  Ira Rosen  <irar@il.ibm.com>
5423
5424         PR tree-optimization/41008
5425         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5426         from condition only in case it's a comparison. Adjust checks.
5427
5428 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5429
5430         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5431         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5432         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5433         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5434         (dump_cand): Handle them.
5435         (struct iv_cand): New members COST_STEP and AINC_USE.
5436         (stmt_after_increment): Likewise.
5437         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
5438         callers changed.  Use gimple_uid comparison instead of scanning.
5439         (add_candidate_1): When looking for identical candidates, take
5440         AINC_USE into account.  Set it for new candidates.
5441         (force_expr_to_var_cost): Cast target_spill_cost to int.
5442         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5443         All callers changed.  Check for availability of autoinc addressing
5444         modes, both in general for a given mode, and in the specific use case.
5445         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
5446         changed.
5447         (get_computation_cost): Likewise.
5448         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5449         add_autoinc_candidates): New static functions.
5450         (add_candidate): Call add_autoinc_candidates for candidates based on
5451         a USE_ADDRESS use.
5452         (find_iv_candidates): Call set_autoinc_for_original_candidates.
5453         (determine_use_iv_cost_address): If we have an autoinc candidate at
5454         the matching use, verify autoinc is possible and subtract the cost
5455         of the candidate's step from the cost.
5456         (determine_iv_cost): Record the cost of the increment in the COST_STEP
5457         member of the candidate.
5458         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5459         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
5460
5461 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5462
5463         * config.build (ia64-hp-*vms*): New target.
5464         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5465         with ia64-hp-*vms*.
5466         * config.gcc (ia64-hp-*vms*): New target.
5467         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5468         with ia64-hp-*vms*.
5469         * config.host (ia64-hp-*vms*): New target.
5470         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5471         with ia64-hp-*vms*.
5472
5473 2009-08-08  Richard Guenther  <rguenther@suse.de>
5474
5475         PR tree-optimization/40991
5476         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5477
5478 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5479
5480         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5481         mode check.  Do truncations in an integer mode.
5482         (force_to_mode): Handle subregs for all mode types.  Only do
5483         arithmetic simplifications on integer modes.
5484
5485 2009-08-07  Richard Guenther  <rguenther@suse.de>
5486
5487         PR tree-optimization/40999
5488         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5489         (maybe_fold_reference): Lookup constant initializers.
5490         (fold_gimple_assign): Likewise.
5491
5492 2009-08-07  Richard Guenther  <rguenther@suse.de>
5493
5494         * tree-ssa.c (useless_type_conversion_p_1): Only for types
5495         that require structural equality defer to the langhook.
5496
5497 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5498
5499         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
5500         comments.
5501         (struct ipa_pass_through_data): New type.
5502         (struct ipa_ancestor_jf_data): New type.
5503         (union jump_func_value): Removed field formal_id, added fields
5504         pass_through and ancestor.
5505         (struct ipa_param_call_note): Changed type of formal_id to int from
5506         unsigned.
5507         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
5508         operations jump functions and ancestor jump functions.
5509         (compute_complex_pass_through): New function.
5510         (compute_scalar_jump_functions): Call compute_complex_pass_through,
5511         reflect changes in the jump function strucutre.
5512         (update_jump_functions_after_inlining): Ignore complex pass-through
5513         and ancestor jump functions.
5514         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
5515         polynomial pass-through with operation jump functions.
5516
5517 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
5518
5519         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
5520         fde->dw_fde_begin as begin label instead of hot/cold label.
5521         Use LLSDAC label instead of LLSDA for second section lsda.
5522         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
5523         label instead of LLSDA if it is true.
5524         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
5525         callers.
5526         * except.c (add_call_site, dw2_size_of_call_site_table): Add
5527         SECTION argument.  Use it as index into crtl->eh.call_site_record
5528         array.
5529         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
5530         use it to determine how to print table entries instead of using
5531         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
5532         label instead of normal begin label as base.
5533         (sjlj_assign_call_site_values): Adjust add_call_site caller.
5534         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
5535         ensure no EH range spans between sections and that landing pads
5536         are always in the corresponding section.
5537         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
5538         for crtl->eh.call_site_record being an array rather than scalar.
5539         (output_one_function_exception_table): New function, copied
5540         from output_function_exception_table.  Adjust
5541         dw2_size_of_call_site_table, dw2_output_call_site_table
5542         callers.  For SECOND section use *C suffixed labels.
5543         (output_function_exception_table): Call
5544         output_one_function_exception_table and, when doing hot/cold
5545         partitioning, also another time for the second section.
5546         * opts.c: Include except.h.
5547         (decode_options): Allow -freorder-blocks-and-partition with
5548         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
5549         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
5550         * function.h (struct rtl_eh): Change call_site_record from
5551         scalar into array of 2 elements.
5552
5553 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5554
5555         * ipa-prop.c (count_formal_params_1): New function.
5556         (ipa_get_vector_of_formal_parms): New function.
5557         (get_vector_of_formal_parm_types): New function.
5558         (ipa_modify_formal_parameters): New function.
5559         (ipa_modify_call_arguments): New function.
5560         (index_in_adjustments_multiple_times_p): New function.
5561         (ipa_combine_adjustments): New function.
5562         (ipa_dump_param_adjustments): New function.
5563         * ipa-prop.h (struct ipa_parm_adjustment): New type.
5564         (ipa_get_vector_of_formal_parms): Declare.
5565         (ipa_modify_formal_parameters): Declare.
5566         (ipa_modify_call_arguments): Declare.
5567         (ipa_combine_adjustments): Declare.
5568         (ipa_dump_param_adjustments): Declare.
5569         (build_ref_for_offset): Declare.
5570         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
5571         * tree-sra.c: Include ipa-prop.c.
5572         (build_ref_for_offset): Make public.
5573
5574 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
5575
5576         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
5577
5578 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
5579
5580         * gcc/doc/extend.texi (__builtin_extract_return_address)
5581         (__builtin_frob_return_address): Document.
5582
5583 2009-08-06  Paul Brook  <paul@codesourcery.com>
5584
5585         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
5586         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
5587         implementation on ARMv6-M.
5588
5589 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5590
5591         * doc/extend.texi (pcs): Document new attribute for ARM.
5592
5593 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5594
5595         * arm.c (pcs_attribute_args): Comment out unsupported attribute
5596         variants.
5597
5598 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5599
5600         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
5601         warning ().
5602
5603 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5604
5605         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
5606
5607 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5608
5609         Merge ARM/hard_vfp_branch to trunk.
5610
5611         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
5612
5613         * arm.c (libcall_eq): New function.
5614         (libcall_hash): New function.
5615         (add_libcall): New function.
5616         (arm_libcall_uses_aapcs_base): New function.
5617         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
5618         libcalls using the base PCS.
5619         (arm_init_cumulative_args): Likewise.
5620
5621         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
5622
5623         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
5624         Use base ABI for conversion libfuncs between HFmode and SFmode.
5625
5626         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5627
5628         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
5629         V4SImode as representatives of all 64-bit and 128-bit vector
5630         types.  Allow vector types without vector modes.
5631         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
5632         without vector modes like BLKmode.
5633         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
5634         BLKmode.  Avoid unsupported vector modes or TImode moves for
5635         non-TARGET_NEON.
5636         (aapcs_vfp_allocate_return_reg): Likewise.
5637         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
5638         V8QImode if TARGET_NEON || TARGET_IWMMXT.
5639
5640         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5641
5642         * config/arm/arm.c (arm_handle_pcs_attribute): New.
5643         (arm_get_pcs_model): Pass attribute arguments to
5644         arm_pcs_from_attribute.
5645         (arm_init_cumulative_args): Use base AAPCS for conversions from
5646         floating-point types to DImode.
5647         (arm_attribute_table): Add pcs attribute.
5648         (arm_handle_pcs_attribute): New.
5649         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
5650         conversions from floating-point types to DImode, also declare them
5651         to use base AAPCS and declare functions they call to use base
5652         AAPCS and their RTABI names.
5653
5654         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5655
5656         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
5657         -mfloat-abi=hard not being supported for VFP.
5658
5659         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
5660
5661         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
5662         SYMBOL_REF to hard_libcall_value.
5663
5664         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5665             Richard Earnshaw  <rearnsha@arm.com>
5666
5667         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
5668         has been put on the stack, all remaining co-processory arguments for
5669         that co-processor also go on the stack.
5670
5671         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5672
5673         * config/arm/arm.c (arm_return_in_memory): Handle returning
5674         vectors of suitable size in registers also for AAPCS case.
5675
5676         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
5677
5678         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
5679
5680         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
5681
5682         ARM Hard-VFP calling convention
5683         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
5684         * target.h (gcc_target): Add libcall_value to table of call hooks.
5685         * targhooks.h (default_libcall_value): Default implementation.
5686         * targhooks.c (default_libcall_value): Likewise.
5687         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
5688         * optabs.c (expand_unop): Use it.
5689         * expr.h (hard_libcall_value): Pass the function RTX through.
5690         * calls.c (emit_library_call_value_1): Update call to
5691         hard_libcall_value.
5692         * explow.c (hard_libcall_value): Use new target hook.
5693         * testsuite/lib/target-supports.exp
5694         (check_effective_target_arm_hard_vfp_ok): New hook.
5695         (check_effective_target_arm_neon_ok): Improve test for neon
5696         availability.
5697         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
5698         * config/arm/arm.c: Include cgraph.h
5699         (TARGET_FUNCTION_VALUE): Override default hook.
5700         (arm_pcs_default): New variable.
5701         (arm_override_options): Don't fault hard calling convention with VFP.
5702         Add support for AAPCS variants.
5703         (arm_function_value): Make static.  Handle AAPCS variants.
5704         (arm_libcall_value): New function.
5705         (arm_apply_result_size): Handle VFP registers in results.
5706         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
5707         conventions.
5708         (pcs_attribute_args): New variable.
5709         (arm_pcs_from_attribute): New function.
5710         (arm_get_pcs_model): New function.
5711         (aapcs_vfp_cum_init): New function.
5712         (aapcs_vfp_sub_candidate): New function.
5713         (aapcs_vfp_is_return_candidate): New function.
5714         (aapcs_vfp_is_call_candidate): New function.
5715         (aapcs_vfp_allocate): New function.
5716         (aapcs_vfp_allocate_return_reg): New function.
5717         (aapcs_vfp_advance): New function.
5718         (aapcs_cp_arg_layout): New variable.
5719         (aapcs_select_call_coproc): New function.
5720         (aapcs_select_return_coproc): New function.
5721         (aapcs_allocate_return_reg): New function.
5722         (aapcs_libcall_value): New function.
5723         (aapcs_layout_arg): New function.
5724         (arm_init_cumulative_args): Initialize AAPCS args data.
5725         (arm_function_arg): Handle AAPCS variants using new interface.
5726         (arm_arg_parital_bytes): Likewise.
5727         (arm_function_arg_advance): New function.
5728         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
5729         calling conventions.
5730         (arm_setup_incoming_varargs): Handle new AAPCS args data.
5731         * arm.h (NUM_VFP_ARG_REGS): Define.
5732         (LIBCALL_VALUE): Update.
5733         (FUNCTION_VALUE): Delete.
5734         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
5735         (arm_pcs): New enum.
5736         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
5737         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
5738         (FUNCTION_ARG_REGNO_P): Add VFP regs.
5739         * arm-protos.h (arm_function_arg_advance): Add.
5740         (aapcs_libcall_value): Add.
5741         (arm_function_value): Delete.
5742
5743 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
5744             H.J. Lu  <hongjiu.lu@intel.com>
5745
5746         PR target/40957
5747         * config/i386/i386.c (standard_sse_mode_p): Remove.
5748         (standard_sse_constant_p): Return 2 for integer mode
5749         vector_all_ones_operand when SSE2 is enabled.
5750         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
5751         (ix86_expand_vector_move): Do not check for negative values from
5752         standard_sse_constant_p.
5753
5754 2009-08-06  Richard Guenther  <rguenther@suse.de>
5755
5756         * tree-ssa.c (useless_type_conversion_p_1): Make function and
5757         array type comparisons frontend independent.
5758         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
5759         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
5760         out array reference lower bound and element size operands.
5761         (ao_ref_init_from_vn_reference): Properly compute the offset
5762         for ARRAY_RANGE_REF.
5763         (vn_reference_fold_indirect): Fill out array reference lower
5764         bound and element size operands.
5765         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
5766         a non gimple valued reference operand which can happen for
5767         array reference lower bound or element size.
5768         (create_component_ref_by_pieces_1): Properly generate the
5769         element size operand for array references.
5770
5771 2009-08-06  Richard Guenther  <rguenther@suse.de>
5772
5773         PR tree-optimization/40964
5774         * tree.c (iterative_hash_host_wide_int): Export.
5775         * tree.h (iterative_hash_host_wide_int): Declare.
5776         * tree-ssa-structalias.c (heapvar_map): New struct.
5777         (heapvar_map_eq): New function.
5778         (heapvar_map_hash): Likewise.
5779         (heapvar_lookup): Adjust.
5780         (heapvar_insert): Likewise.
5781         (make_constraint_from_heapvar): Allow multiple heap variables
5782         per decl at different offsets.
5783         (init_alias_heapvars): Adjust.
5784
5785 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
5786
5787         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
5788         * mips_output_sync_loop (mips_output_sync_loop): Only emit
5789         trailing sync if TARGET_SYNC_AFTER_SC.
5790
5791 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
5792
5793         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
5794         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
5795         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
5796         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
5797         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5798         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5799         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5800         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
5801         test_and_set_12): Rewrite calls to mips_output_sync_loop.
5802         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
5803         the prototype declaration match the definition.
5804         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
5805         instructions explicitly.  Add barrier_before and operands
5806         parameters.
5807         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
5808         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
5809         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
5810         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5811         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
5812         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
5813
5814 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
5815
5816         * tree-ssa-alias.c: Fix intervals to use [) syntax.
5817
5818 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
5819             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
5820
5821         PR target/40906
5822         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
5823         source operand.
5824
5825 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
5826
5827         PR rtl-optimization/40924
5828         * dse.c (canon_address): Before calling cselib_expand_value_rtx
5829         make sure canon_rtx (mem_address) isn't simpler than
5830         canon_rtx (expanded_mem_address).
5831
5832 2009-08-05  Li Feng  <nemokingdom@gmail.com>
5833
5834         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
5835         for each poly_bb_p.
5836         (build_scop_drs): Build alias set for each SCoP.
5837
5838 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
5839
5840         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
5841         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
5842         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
5843         (MIPS_ARCH_FLOAT_SPEC): Likewise.
5844         (BASE_DRIVER_SELF_SPECS): Likewise.
5845
5846 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
5847
5848         * tree-ssa-alias.c: Fix some comment typos.
5849
5850 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
5851
5852         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
5853         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
5854
5855 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
5856
5857         PR c/39902
5858         * simplify-rtx.c (simplify_binary_operation_1): Disable
5859         simplifications for decimal float operations.
5860
5861 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
5862
5863         PR middle-end/40943
5864         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
5865         operand of INDIRECT_REF.
5866
5867 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
5868
5869         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
5870         constants referencing TLS symbols.
5871
5872 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5873
5874         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
5875         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
5876
5877 2009-08-03  Richard Guenther  <rguenther@suse.de>
5878
5879         * tree.c (make_vector_type): Build a main variant first,
5880         get the canonical one and then build the variant.
5881         * tree-ssa.c (useless_type_conversion_p_1): Handle
5882         fixed-point types.
5883         (useless_type_conversion_p): Conversions to pointers to
5884         incomplete record types are useless.
5885
5886 2009-08-03  Richard Guenther  <rguenther@suse.de>
5887
5888         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
5889         file will be created.
5890         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
5891         * toplev.c (compile_file): Adjust comment.
5892
5893 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
5894
5895         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
5896         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
5897         (TARGET_PROMOTE_FUNCTION_MODE): Define.
5898         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
5899         (sh_promote_function_mode): Fix typo.
5900
5901 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
5902
5903         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
5904
5905 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5906
5907         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
5908         declaration arguments.
5909
5910 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
5911
5912         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
5913         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
5914         (ix86_split_ashl): Ditto.
5915         (ix86_expand_vector_init_one_nonzero): Ditto.
5916         (ix86_expand_vector_set): Ditto.
5917         (ix86_expand_reduc_v4sf): Ditto.
5918
5919 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
5920
5921         * explow.c (promote_function_mode): Remove assert.
5922         * config/sh/sh.c (sh_promote_function_mode): Declare.
5923
5924 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5925
5926         * config/pa/pa.c (pa_promote_function_mode): Declare.
5927         Change to static.  Fix promote_mode call.
5928
5929         * gthr-dce.h (CONST_CAST2): Define if not defined.
5930         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
5931
5932         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
5933
5934 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
5935
5936         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5937         now write-only variable unsignedp.
5938         (expand_expr_real_1): Use promote_decl_mode.
5939         * expr.h (promote_function_mode, promote_decl_mode): New.
5940         (promote_mode): Remove last argument.
5941         * function.c (assign_temp): Drop last argument of promote_mode.
5942         (assign_parm_find_data_types): Use promote_function_mode.
5943         (assign_parm_setup_reg): Likewise.
5944         (expand_function_end): Use promote_function_mode.
5945         * calls.c (initialize_argument_information): Use promote_function_mode.
5946         (precompute_arguments): Use promote_mode instead of checking if
5947         only PROMOTE_FUNCTION_MODE is defined.
5948         (expand_call): When making sibcall decisions, use promote_function_mode.
5949         Below, remove an if for targetm.calls.promote_function_return and
5950         and use promote_function_mode.
5951         (emit_library_call_value_1): Use promote_function_mode, fix bug
5952         where promote_mode was passed FOR_CALL == 0 for a return value in an
5953         assertion.
5954         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5955         * explow.c (promote_function_mode, promote_decl_mode): New.
5956         (promote_mode): Keep only the FOR_CALL == 0 case.
5957         * combine.c (setup_incoming_promotion): Remove test of
5958         promote_function_args.  Use promote_function_mode.
5959         * stmt.c (expand_value_return): Use promote_decl_mode.
5960         (expand_decl): Use promote_decl_mode.
5961
5962         * expr.c (store_constructor): Use promote_decl_mode.  Remove
5963         now write-only variable unsignedp.
5964         (expand_expr_real_1): Use promote_decl_mode.
5965         * expr.h (promote_function_mode, promote_decl_mode): New.
5966         (promote_mode): Remove last argument.
5967         * function.c (assign_temp): Drop last argument of promote_mode.
5968         (assign_parm_find_data_types): Use promote_function_mode.
5969         (assign_parm_setup_reg): Likewise.
5970         (expand_function_end): Use promote_function_mode.
5971         * calls.c (initialize_argument_information): Use promote_function_mode.
5972         (precompute_arguments): Use promote_mode instead of checking if
5973         only PROMOTE_FUNCTION_MODE is defined.
5974         (expand_call): When making sibcall decisions, use promote_function_mode.
5975         Below, remove an if for targetm.calls.promote_function_return and
5976         and use promote_function_mode.
5977         (emit_library_call_value_1): Use promote_function_mode, fix bug
5978         where promote_mode was passed FOR_CALL == 0 for a return value in an
5979         assertion.
5980         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
5981         * explow.c (promote_function_mode, promote_decl_mode): New.
5982         (promote_mode): Keep only the FOR_CALL == 0 case.
5983         * combine.c (setup_incoming_promotion): Remove test of
5984         promote_function_args.  Use promote_function_mode.
5985         * stmt.c (expand_value_return): Use promote_decl_mode.
5986         (expand_decl): Use promote_decl_mode.
5987
5988         * explow.c (promote_function_mode): Just call the target hook.
5989         * targhooks.c (default_promote_function_mode,
5990         default_promote_function_mode_always_promote): New.
5991         * targhooks.h (default_promote_function_mode,
5992         default_promote_function_mode_always_promote): Declare.
5993         * target.h (promote_function_args, promote_function_return): Remove.
5994         (promote_function_mode): New.
5995         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
5996         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
5997         (TARGET_PROMOTE_FUNCTION_MODE): New.
5998         (TARGET_CALLS): Adjust.
5999         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
6000         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
6001
6002         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
6003         * config/s390/s390.c (s390_promote_function_mode): ... here,
6004         with pointer handling.
6005         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6006         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6007
6008         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
6009         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
6010         with pointer handling.
6011         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6012         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6013
6014         * config/sh/sh-protos.h (sh_promote_function_mode): New.
6015         * config/sh/sh.c (sh_promote_function_mode): New.
6016         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6017         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6018
6019         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
6020         * config/cris/cris.c (cris_promote_function_mode): ... here.
6021         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6022         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6023
6024         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
6025         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
6026         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6027         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6028
6029         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
6030         * config/arm/arm.c (arm_promote_function_mode): ... here, without
6031         complex type handling.
6032         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6033         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6034
6035         * config/pa/pa.c (pa_promote_function_mode): New.
6036         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6037         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6038
6039         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
6040         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6041         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
6042         * config/xtensa/xtensa.c: Likewise.
6043         * config/stormy16/stormy16.c: Likewise.
6044         * config/iq2000/iq2000.c: Likewise.
6045         * config/rs6000/rs6000.c: Likewise.
6046         * config/picochip/picochip.c: Likewise.
6047         * config/arc/arc.c: Likewise.
6048         * config/mcore/mcore.c: Likewise.
6049         * config/score/score.c: Likewise.
6050         * config/mips/mips.c: Likewise.
6051         * config/bfin/bfin.c: Likewise.
6052         * config/ia64/ia64.c: Likewise (disabled though).
6053
6054         * config/frv/frv.h: Remove pointless remark.
6055
6056         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
6057         TARGET_PROMOTE_FUNCTION_ARGS,
6058         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
6059         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
6060
6061 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
6062
6063         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
6064         -floop-parallelize-all.
6065         * toplev.c (process_options): Rename flag_graphite_force_parallel to
6066         flag_loop_parallelize_all.
6067         * tree-ssa-loop.c (gate_graphite_transforms): Same.
6068         * graphite.c (graphite_transform_loops): Same.
6069         * common.opt: Same.
6070         * graphite-poly.c (apply_poly_transforms): Same.
6071
6072 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
6073
6074         PR tree-optimization/40914
6075         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
6076         if set, then check the delta field of the PMF record.
6077         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
6078         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
6079         call is stored in the delta.
6080
6081 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
6082
6083         * config/mips/mips.md (*clear_upper32_dext): New pattern.
6084
6085 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
6086
6087         * config/i386/bsd.h (ASM_BYTE): New define.
6088         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
6089         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6090         .byte.  Use fputs or putc instead of fprintf where appropriate.
6091         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
6092         fputs or putc instead of fprintf where appropriate.
6093         * config/i386/i386elf.h: Ditto.
6094         * config/i386/sysv4.h: Ditto.
6095
6096         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
6097         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
6098         (*tls_global_dynamic_64): Ditto.
6099
6100 2009-07-31  Christian Bruel  <christian.bruel@st.com>
6101
6102         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
6103
6104 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6105
6106         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
6107         Remove dead code for MINUS.
6108
6109 2009-07-31  Anthony Green  <green@moxielogic.com>
6110
6111         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
6112         $r12 in prologue.
6113         (moxie_expand_epilogue): Ditto for epilogue.
6114         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
6115         incoming arguments.
6116         (moxie_function_arg): Ditto.
6117         (moxie_pass_by_reference): Ditto.
6118         (moxie_arg_partial_bytes): Ditto.
6119         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
6120         (FUNCTION_ARG_ADVANCE) Ditto.
6121         (REG_PARM_STACK_SPACE) Ditto.
6122         (FUNCTION_ARG_REGNO_P) Dito.
6123
6124         * config.gcc: Add moxie linux config support.
6125         * gcc/config/moxie/uclinux.h: New file.
6126
6127 2009-07-31  DJ Delorie  <dj@redhat.com>
6128
6129         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
6130         (UNSPECV_SP_SWITCH_E): New.
6131         (sp_switch_1): Change to an unspec.
6132         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
6133         replace $r15.
6134         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
6135         reference the new stack's address
6136
6137 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6138
6139         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
6140         graphite-clast-to-gimple.o, graphite-dependences.o,
6141         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6142         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
6143         (graphite-blocking.o,
6144         graphite-clast-to-gimple.o, graphite-dependences.o,
6145         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6146         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
6147         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
6148         * cfgloop.h (struct loop): Add can_be_parallel field.
6149         * common.opt (fgraphite-identity): Moved up.
6150         (fgraphite-force-parallel): New flag.
6151         * graphite.c: Rewrite.
6152         * graphite.h: Rewrite.
6153         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
6154         after Graphite.
6155         * toplev.c (graphite_out_file): New file descriptor.
6156         (graphite_in_file): New.
6157         (process_options): flag_graphite_force_parallel cannot be used without
6158         Graphite.
6159         * tree-ssa-loop.c: Include toplev.h.
6160         (gate_graphite_transforms): Enable flag_graphite for
6161         flag_graphite_force_parallel.
6162
6163 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6164
6165         * ChangeLog.graphite: New.
6166         * graphite-blocking.c: New.
6167         * graphite-clast-to-gimple.c: New.
6168         * graphite-clast-to-gimple.h: New.
6169         * graphite-dependences.c: New.
6170         * graphite-dependences.h: New.
6171         * graphite-interchange.c: New.
6172         * graphite-poly.c: New.
6173         * graphite-poly.h: New.
6174         * graphite-ppl.c: New.
6175         * graphite-ppl.h: New.
6176         * graphite-scop-detection.c: New.
6177         * graphite-scop-detection.h: New.
6178         * graphite-sese-to-poly.c: New.
6179         * graphite-sese-to-poly.h: New.
6180         * sese.c: New.
6181         * sese.h: New.
6182
6183 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6184
6185         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
6186         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
6187
6188 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6189
6190         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
6191         (scev_is_linear_expression): Return false if the evolution is not
6192         affine multivariate.
6193
6194 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6195
6196         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
6197         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
6198
6199 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6200
6201         * tree-data-ref.c (debug_data_references): New.
6202         (debug_data_reference): New.
6203         * tree-data-ref.h (debug_data_references): Declared.
6204         (debug_data_reference): Declared.
6205
6206 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6207
6208         * tree-data-ref.c (stmt_simple_memref_p: Removed.
6209         * tree-data-ref.h (scop_p): Removed.
6210         (struct data_reference): Remove field scop.
6211         (DR_SCOP): Removed.
6212         (stmt_simple_memref_p): Removed.
6213
6214 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6215
6216         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
6217         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
6218         basic block empty.
6219
6220 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6221
6222         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
6223
6224 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6225
6226         * doc/invoke.texi (-fgraphite-identity): Documented.
6227
6228 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6229
6230         * tree-scalar-evolution.c: Fix comment.
6231         (instantiate_scev_1): Return unknow from scev instantiation if the
6232         result is not above instantiate_below.
6233
6234 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6235
6236         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
6237         static anymore.  Instantiate the symbols that may have been introduced
6238         by chrec_apply.
6239         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
6240         Declared.
6241
6242 2009-07-30  DJ Delorie  <dj@redhat.com>
6243
6244         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
6245         .vliw directive to VLIW sections.
6246
6247 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6248
6249         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6250         New variables.
6251         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6252         (AUTOHEADER): New variable.
6253         ($(srcdir)/cstamp-h.in): Use it.
6254
6255 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
6256             Pat Haugen  <pthaugen@us.ibm.com>
6257             Revital Eres <ERES@il.ibm.com>
6258
6259         * config/rs6000/vector.md (VEC_F): Add VSX support.
6260         (VEC_A): Ditto.
6261         (VEC_N): Ditto.
6262         (mov<mode>): Ditto.
6263         (vector_load_<mode>): Ditto.
6264         (vector_store_<mode>): Ditto.
6265         (vector GPR move split): Ditto.
6266         (vec_reload_and_plus_<mptrsize>): Ditto.
6267         (vec_reload_and_reg_<mptrsize>): Ditto.
6268         (add<mode>3): Ditto.
6269         (sub<mode>3): Ditto.
6270         (mul<mode>3): Ditto.
6271         (neg<mode>2): Ditto.
6272         (abs<mode>2): Ditto.
6273         (smin<mode>3): Ditto.
6274         (smax<mode>3): Ditto.
6275         (vector_eq<mode>): Ditto.
6276         (vector_gt<mode>): Ditto.
6277         (vector_ge<mode>): Ditto.
6278         (vector_gtu<mode>): Ditto.
6279         (vector_select_<mode>_uns): Ditto.
6280         (vector_eq_<mode>_p): Ditto.
6281         (vector_gt_<mode>_p): Ditto.
6282         (vector_ge_<mode>_p): Ditto.
6283         (vector_gtu_<mode>_p): Ditto.
6284         (cr6_test_for_zero): Ditto.
6285         (cr6_test_for_zero_reverse): Ditto.
6286         (cr6_test_for_lt): Ditto.
6287         (cr6_test_for_lt_reverse): Ditto.
6288         (xor<mode>3): Ditto.
6289         (ior<mode>3): Ditto.
6290         (and<mode>3): Ditto.
6291         (one_cmpl<mode>2): Ditto.
6292         (nor<mode>2): Ditto.
6293         (andc<mode>2): Ditto.
6294         (float<VEC_int<mode>2): Ditto.
6295         (unsigned_float<VEC_int><mode>2): Ditto.
6296         (fix_trunc<mode><VEC_int>2): Ditto.
6297         (fixuns_trunc<mode><VEC_int>2): Ditto.
6298         (vec_init<mode>):
6299         (vec_set<mode>): Ditto.
6300         (vec_extract<mode>): Ditto.
6301         (vec_interleave_highv4sf): Ditto.
6302         (vec_interleave_lowv4sf): Ditto.
6303         (vec_realign_load_<mode>): Ditto.
6304         (vec_shl_<mode>): Ditto.
6305         (vec_shr_<mode>): Ditto.
6306         (div<mode>3): New patterns for VSX.
6307         (vec_interleave_highv2df): Ditto.
6308         (vec_interleave_lowv2df): Ditto.
6309         (vec_pack_trunc_v2df): Ditto.
6310         (vec_pack_sfix_trunc_v2df): Ditto.
6311         (vec_pack_ufix_trunc_v2df): Ditto.
6312         (vec_unpacks_hi_v4sf): Ditto.
6313         (vec_unpacks_lo_v4sf): Ditto.
6314         (vec_unpacks_float_hi_v4si): Ditto.
6315         (vec_unpacks_float_lo_v4si): Ditto.
6316         (vec_unpacku_float_hi_v4si): Ditto.
6317         (vec_unpacku_float_lo_v4si): Ditto.
6318         (movmisalign<mode>): Ditto.
6319         (vector_ceil<mode>2): New patterns for vectorizing math library.
6320         (vector_floor<mode>2): Ditto.
6321         (vector_btrunc<mode>2): Ditto.
6322         (vector_copysign<mode>3): Ditto.
6323
6324         * config/rs6000/predicates.md (easy_vector_constant_msb): New
6325         predicate for setting the high bit in each word, used for copysign.
6326
6327         * config/rs6000/ppc-asm.h (f19): Whitespace.
6328         (f32-f63): Define if VSX.
6329         (v0-v31): Define if Altivec.
6330         (vs0-vs63): Define if VSX.
6331
6332         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6333
6334         * config/rs6000/power7.md: New file, provide tuning parameters for
6335         -mcpu=power7.
6336
6337         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6338         (rs6000_cpu_cpp_builtins): Ditto.
6339         (altivec_overloaded_builtins): Ditto.
6340         (altivec_resolve_overloaded_builtin): Ditto.
6341
6342         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6343         debug switch to disable vectorizing simple math builtin
6344         functions.
6345
6346         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6347         Vectorize simple math builtin functions.
6348         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6349         hook to vectorize math builtins.
6350         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6351         (rs6000_builtin_conversion): Add VSX/power7 support.
6352         (rs6000_builtin_vec_perm): Ditto.
6353         (vsplits_constant): Add support for loading up a vector constant
6354         with just the high bit set in each part.
6355         (rs6000_expand_vector_init): Add VSX/power7 support.
6356         (rs6000_expand_vector_set): Ditto.
6357         (rs6000_expand_vector_extract): Ditto.
6358         (rs6000_emit_move): Ditto.
6359         (bdesc_3arg): Ditto.
6360         (bdesc_2arg): Ditto.
6361         (bdesc_1arg): Ditto.
6362         (rs6000_expand_ternop_builtin): Ditto.
6363         (altivec_expand_builtin): Ditto.
6364         (rs6000_expand_unop_builtin): Ditto.
6365         (rs6000_init_builtins): Ditto.
6366         (altivec_init_builtins): Ditto.
6367         (builtin_function_type): Ditto.
6368         (rs6000_common_init_builtins): Ditto.
6369         (rs6000_handle_altivec_attribute); Ditto.
6370         (rs6000_mangle_type): Ditto.
6371         (rs6000_vector_mode_supported_p): Ditto.
6372         (rs6000_mode_dependent_address): Altivec addresses with AND -16
6373         are mode dependent.
6374
6375         * config/rs6000/vsx.md: New file for VSX support.
6376
6377         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6378         identifing values with just the most significant bit set.
6379         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
6380         vectorized builtins.
6381
6382         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6383         (UNSPEC_VRFIM): Delete.
6384         (splitter for loading up vector with most significant bit): New
6385         splitter for vectorizing copysign.
6386         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
6387         vectorizing simple math functions.
6388         (altivec_vrfip): Add support for vectorizing simple math functions.
6389         (altivec_vrfim): Ditto.
6390         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6391
6392         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6393         (power7.md, vsx.md): Include for power7 support.
6394         (copysigndf3): Use VSX instructions if -mvsx.
6395         (negdf2_fpr): Ditto.
6396         (absdf2_fpr): Ditto.
6397         (nabsdf2_fpr): Ditto.
6398         (adddf3_fpr): Ditto.
6399         (subdf3_fpr): Ditto.
6400         (muldf3_fpr): Ditto.
6401         (divdf3_fpr): Ditto.
6402         (fix_truncdfdi2_fpr): Ditto.
6403         (cmpdf_internal1): Ditto.
6404         (fred, fred_fpr): Convert into expander/insn to add VSX support.
6405         (btruncdf2, btruncdf2_fpr): Ditto.
6406         (ceildf2, ceildf2_fpr): Ditto.
6407         (floordf2, floordf2_fpr): Ditto.
6408         (floatdidf2, floatdidf2_fpr): Ditto.
6409         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
6410         (fmsubdf4_fpr): Ditto.
6411         (fnmadddf4_fpr_1): Ditto.
6412         (fnmadddf4_fpr_2): Ditto.
6413         (fnmsubdf4_fpr_1): Ditto.
6414         (fnmsubdf4_fpr_2): Ditto.
6415         (fixuns_truncdfdi2): Add expander for VSX support.
6416         (fix_truncdfdi2): Ditto.
6417         (fix_truncdfsi2): Ditto.
6418         (ftruncdf2): Ditto.
6419         (btruncsf2): Whitespace.
6420         (movdf_hardfloat32): Add support for VSX registers.
6421         (movdf_softfloat32): Ditto.
6422         (movdf_hardfloat64): Ditto.
6423         (movdf_hardfloat64_mfpgpr): Ditto.
6424         (movdf_softfloat64): Ditto.
6425         (movti splitters): Add check for vector registers supporting
6426         TImode in the future.
6427         (bpermd): Add power7 bpermd instruction.
6428
6429         * config/rs6000/altivec.h (vec_div): Define if VSX.
6430         (vec_mul): Ditto.
6431         (vec_msub): Ditto.
6432         (vec_nmadd): Ditto.
6433         (vec_nearbyint): Ditto.
6434         (vec_rint): Ditto.
6435         (vec_sqrt): Ditto.
6436         (all predicates): Use the generic builtin function, and not the V4SF
6437         specific function so that the predicates will work with VSX's V2DF.
6438         (vec_all_*): Ditto.
6439         (vec_any_*): Ditto.
6440
6441         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6442         Document new VSX functions and types.
6443
6444         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6445         switches.
6446
6447         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6448         "wa", and "j" constraints.  Modify "v" to talk about Altivec
6449         instead of just vector.
6450
6451 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
6452
6453         PR debug/26475
6454         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6455         location for phi arguments.
6456         (rewrite_update_phi_arguments): Find locations for reaching defs.
6457         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6458         Add location to add_phi_arg calls.
6459         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6460         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6461         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6462         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6463         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6464         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6465         * tree-phinodes.c (make_phi_node): Initialize location.
6466         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6467         (add_phi_arg): Add location parameter.
6468         (remove_phi_arg_num): Move location when moving phi argument.
6469         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6470         location.
6471         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6472         slpeel_update_phi_nodes_for_guard1,
6473         slpeel_update_phi_nodes_for_guard2,
6474         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6475         vect_loop_versioning): Set locations.
6476         * tree-parloops.c (create_phi_for_local_result,
6477         transform_to_exit_first_loop, create_parallel_loop): Add locations.
6478         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6479         * tree-vect-loop.c (get_initial_def_for_induction,
6480         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6481         locations.
6482         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
6483         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
6484         (gimple_phi_arg_set_location): New.  Set locus.
6485         (gimple_phi_arg_has_location): New.  Check for locus.
6486         (redirect_edge_var_map_location): New.  Return locus from var_map.
6487         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6488         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6489         combining PHI arguments.
6490         (cond_store_replacement): Set location.
6491         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
6492         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
6493         scop_add_exit_phis_edge): Add locations.
6494         * tree-cfgcleanup.c (remove_forwarder_block,
6495         remove_forwarder_block_with_phi): Add locations.
6496         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
6497         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
6498         locations.
6499         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
6500         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
6501         flush_pending_stmts): Add source location.
6502         * lambda-code.c (perfect_nestify): Maintain location stack with argument
6503         stack to preserve locations.
6504         * tree-vect-stmts.c (vectorizable_load): Add location.
6505         * tree-inline.c (copy_phis_for_bb): Copy locus.
6506         (setup_one_parameter): Add call locus to inlined parameter stmts.
6507         (initialize_inlined_parameters): Pass in call location as parameter
6508         assignment locus.
6509         (tree_function_versioning): Pass location to setup_one_parameter.
6510         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
6511         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
6512         copy and edge lists.
6513         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
6514         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
6515         locus parameter and override the stmt default if provided.
6516         (new_elim_graph, clear_elim_graph, delete_elim_graph,
6517         elim_graph_add_edge, elim_graph_remove_succ_edge,
6518         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
6519         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
6520         eliminate_phi):  Add locus info in elimination graph for each edge and
6521         value copy.
6522         (insert_backedge_copies): Copy locus if present.
6523         * tree-flow.h (struct _edge_var_map): Add locus field.
6524         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
6525         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
6526         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
6527         locations.
6528         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
6529
6530 2009-07-30  Martin Jambor  <mjambor@suse.cz>
6531
6532         PR tree-optimization/40570
6533         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
6534         use inlining loops.
6535
6536 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
6537
6538         * ssa-loop-manip.c: Include langhooks.h.
6539         (rewrite_phi_with_iv): New.
6540         (rewrite_all_phi_nodes_with_iv): New.
6541         (canonicalize_loop_ivs): Move here from tree-parloops.c.
6542         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
6543         * tree-parloops.c (loop_parallel_p): Move out all conditions
6544         except dependency check.
6545         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
6546         (gen_parallel_loop): Call canonicalize_loop_ivs without
6547         reduction_list argument.
6548         (build_new_reduction): New.
6549         (gather_scalar_reductions): New.
6550         (try_get_loop_niter): New.
6551         (try_create_reduction_list): New.
6552         (parallleize_loops): Change the parallel conditions check.
6553         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
6554         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
6555
6556 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
6557
6558         * opt-functions.awk (opt_args): Allow argument to be enclosed in
6559         curly braces.
6560         * doc/options.texi (Option properties):  Mention new quoting syntax.
6561
6562 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6563
6564         * config/alpha/alpha.c (alpha_start_function):
6565         Handle VMS_DEBUG_MAIN_POINTER
6566         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
6567         * doc/invoke.texi: Document -mdebug-main switch.
6568
6569 2009-07-29  Richard Henderson  <rth@redhat.com>
6570
6571         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
6572         (cgraph_create_edge_including_clones): Likewise.
6573         * tree-inline.c (copy_bb): Operate on the correct edges
6574         when updating the callgraph.
6575
6576 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6577
6578         * config/alpha/vms-cc.c: Deleted.
6579         * config/alpha/vms-ld.c: Deleted.
6580         * config/alpha/t-vms64: Moved to config/vms
6581         * config/alpha/vms-crt0-64.c: Moved to config/vms
6582         * config/alpha/vms-crt0.c: Moved to config/vms
6583         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
6584         * config/alpha/vms-psxcrt0.c: Moved to config/vms
6585         * config/alpha/xm-vms.h: Moved to config/vms
6586         * config/alpha/x-vms: Moved to config/vms
6587         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
6588         config/vms/t-vms.
6589         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
6590         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
6591         (version): Set.
6592         * config/vms/t-vms64: Moved here from config/alpha
6593         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
6594         (argc,argv,envp): Enforce 32bit malloc'ing.
6595         * config/vms/vms-psxcrt0-64.c: Likewise.
6596         * config/vms/vms-crt0.c: Moved here from config/alpha.
6597         * config/vms/vms-psxcrt0.c: Likewise.
6598         * config/vms/vms-crtl-64.h: New file.
6599         * config/vms/vms-crtl.h: New file.
6600         * config/vms/vms.opt: New file.
6601         * config/vms/xm-vms64.h: New file.
6602         * config/vms/xm-vms.h: Moved here from config/alpha.
6603         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
6604         Set.
6605         * config/vms/x-vms: Moved here from config/alpha.
6606         (version, VMS_EXTRA_PARTS): Moved to t-vms.
6607         (vms-ld.o, vms-cc.o): Removed.
6608         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
6609
6610 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6611
6612         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
6613         correct stack (obvious VMS fix).
6614
6615 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6616
6617         * dwarf2out.c (output_file_names): Output VMS style file name, size,
6618         date, version info if VMS_DEBUGGING_INFO defined.
6619         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
6620         size, date calculating code moved here.
6621
6622 2009-07-29  Paul Brook  <paul@codesourcery.com>
6623
6624         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
6625         do_push/do_pop.
6626
6627 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
6628
6629         PR target/40577
6630         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
6631         to DImode when generating insq_le insn.
6632
6633 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6634
6635         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
6636         New macro set for VMS_DEBUGGGING_INFO.
6637         (AT_string_form): Use it.
6638
6639 2009-07-28  DJ Delorie  <dj@redhat.com>
6640
6641         * config/mep/mep.c (vtext_section): New.
6642         (vftext_section): New.
6643         (ftext_section): New.
6644         (mep_select_section): Add support for functions.
6645         (mep_unique_section): Likewise.
6646         (mep_asm_init_sections): Likewise.
6647         (mep_encode_section_info): Remove it from here.
6648
6649         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
6650
6651 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
6652
6653         * tree.h (TREE_DEPRECATED): Document it is used for types too.
6654         (TYPE_VECTOR_OPAQUE): Use default_def_flag
6655
6656 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6657
6658         * dwarf2out.c (output_file_names): Test new macro
6659         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
6660         (add_comp_dir_attribute): Likewise.
6661
6662 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
6663
6664         * config/i386/mingw-w64.h (LINK_SPEC): Add
6665         separating space between commands.
6666
6667 2009-07-28  Jan Hubicka  <jh@suse.cz>
6668
6669         PR tree-optimization/40759
6670         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
6671         for renaming.
6672
6673 2009-07-27  DJ Delorie  <dj@redhat.com>
6674
6675         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
6676         types are dword-aligned.
6677         (mep_expand_va_start): Likewise.
6678
6679 2009-07-27  Olivier Hainque  <hainque@adacore.com>
6680             Douglas B Rupp  <rupp@gnat.com>
6681
6682         * convert.c (convert_to_pointer): Don't assume the target
6683         pointer type is POINTER_SIZE long. Fetch its precision instead.
6684
6685 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
6686
6687         * system.h (fopen): Undefine if macro.
6688
6689 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
6690
6691         * dwarf2out.c (output_cfi_p): Removed.
6692         (output_cfis): New function.
6693         (output_fde): New function, split from output_call_frame_info.
6694         (output_call_frame_info): Use it.
6695         (dwarf2out_switch_text_section): Use output_cfis.
6696
6697 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6698
6699         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
6700         TARGET_BI_ARCH is specified without enabling SJLJ.
6701         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
6702         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
6703
6704 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
6705
6706         * arm.md (negdi2): Use DImode if forcing a value into a register.
6707
6708 2009-07-26  Ira Rosen  <irar@il.ibm.com>
6709
6710         PR tree-optimization/40801
6711         * tree-vect-stmts.c (vectorizable_call): Get previous copy
6712         of vector operand from the previous copy of vector statement.
6713         Pass the correct definition type value to
6714         vect_get_vec_def_for_stmt_copy().
6715
6716 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6717
6718         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
6719         const char ** conversion.
6720
6721 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6722
6723         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
6724         fancy_abort() if !ENABLE_ASSERT_CHECKING.
6725         (gcc_unreachable): Invoke __builtin_unreachable() if
6726         !ENABLE_ASSERT_CHECKING.
6727
6728 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6729
6730         PR rtl-optimization/40445
6731         * emit-rtl.c (next_nonnote_insn_bb): New function.
6732         * rtl.h (next_nonnote_insn_bb): Declare new function.
6733         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
6734         with no successors that is the successor of the ENTRY_BLOCK.
6735         Continue from the top after removing an empty fallthrough block.
6736         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
6737         of next_nonnote_insn.
6738
6739 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
6740
6741         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
6742
6743 2009-07-25  Martin Jambor  <mjambor@suse.cz>
6744
6745         * c-common.c (c_common_attribute_table): New element for noclone.
6746         (handle_noclone_attribute): New function. Forward-declare.
6747         * tree-inline.c (tree_versionable_function_p): Check for noclone
6748         attribute.
6749         * doc/extend.texi (Labels as Values): Document need for noclone.
6750         (Function Attributes): Document noclone attribute.
6751
6752 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
6753
6754         PR rtl-optimization/34999
6755         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
6756         and dw_fde_switched_cold_to_hot fields.
6757         (output_cfi_p): New function.
6758         (output_call_frame_info): If fde->dw_fde_switched_sections,
6759         output 2 FDEs instead of one with corrupted header.
6760         (dwarf2out_do_cfi_startproc): New function.
6761         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
6762         and fde->dw_fde_switched_cold_to_hot.
6763         (dwarf2out_switch_text_section): Compute
6764         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
6765         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
6766         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
6767         Otherwise, compute fde->dw_fde_switch_cfi.
6768
6769 2009-07-24  Cary Coutant  <ccoutant@google.com>
6770
6771         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
6772
6773 2009-07-24  Cary Coutant  <ccoutant@google.com>
6774
6775         * cfghooks.c (split_block): Copy discriminator to new block.
6776         * tree-cfg.c (assign_discriminator): Check location of last
6777         instruction in block as well as first.
6778
6779 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
6780
6781         * config/i386/linux.c: Use fputs or putc instead of fprintf
6782         where appropriate.
6783         * config/i386/gas.h: Ditto.
6784         * config/i386/x86-64.h: Ditto.
6785         * config/i386/att.h: Ditto.
6786
6787 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6788
6789         * expmed.c (emit_store_flag): Use a recursive call to optimize the
6790         xor case.
6791
6792 2009-07-24  Martin Jambor  <mjambor@suse.cz>
6793
6794         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
6795         (ipa_push_func_to_list_1): Declare.
6796         (ipa_push_func_to_list): New function.
6797
6798         * ipa-prop.c (ipa_push_func_to_list_1): New function.
6799         (ipa_init_func_list): Call ipa_push_func_to_list_1.
6800         (ipa_push_func_to_list): Removed.
6801         (ipa_pop_func_from_list): Clear node_enqueued flag.
6802
6803 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6804
6805         * config/s390/s390.c (override_options): Default
6806         max-unrolled-insns to 100 for z10 tuning.
6807
6808 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
6809
6810         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
6811         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
6812         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
6813         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
6814         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
6815         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
6816         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
6817
6818 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
6819
6820         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
6821         use default set in mingw32.h header.
6822         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
6823         64-bit /mingw/include path.
6824         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
6825         path.
6826
6827 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
6828
6829         PR rtl-optimization/40209
6830         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
6831
6832 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
6833
6834         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
6835         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
6836         with the rest of string where appropriate.  Use fputs or putc
6837         instead of fprintf where appropriate.
6838
6839 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
6840             Pat Haugen  <pthaugen@us.ibm.com>
6841             Revital Eres <ERES@il.ibm.com>
6842
6843         * config/rs6000/vector.md: New file.  Move most of the vector
6844         expander support here from altivec.md to allow for the VSX vector
6845         unit in the future.  Add support for secondary_reload patterns.
6846         Rewrite the patterns for vector comparison, and vector comparison
6847         predicate instructions so that the RTL expresses the desired
6848         behavior, instead of using unspec.
6849
6850         * config/rs6000/constraints.md ("f" constraint): Use
6851         rs6000_constraints to hold the precalculated register class.
6852         ("d" constraint): Ditto.
6853         ("wd" constraint): New constraint for VSX.
6854         ("wf" constraint): Ditto.
6855         ("ws" constraint): Ditto.
6856         ("wa" constraint): Ditto.
6857         ("wZ" constraint): Ditto.
6858         ("j" constraint): Ditto.
6859
6860         * config/rs6000/predicates.md (vsx_register_operand): New
6861         predicate for VSX.
6862         (vfloat_operand): New predicate for vector.md.
6863         (vint_operand): Ditto.
6864         (vlogical_operand): Ditto.
6865         (easy_fp_constant): If VSX, 0.0 is an easy constant.
6866         (easy_vector_constant): Add VSX support.
6867         (altivec_indexed_or_indirect_operand): New predicate for
6868         recognizing Altivec style memory references with AND -16.
6869
6870         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
6871         for vector secondary reload support.
6872         (rs6000_vector_reg_class): Delete, replacing it with
6873         rs6000_constraints.
6874         (rs6000_vsx_reg_class): Ditto.
6875         (rs6000_constraints): New array to hold the register classes of
6876         each of the register constraints that can vary at runtime.
6877         (builtin_mode_to_type): New static array for builtin function type
6878         creation.
6879         (builtin_hash_table): New static hash table for builtin function
6880         type creation.
6881         (TARGET_SECONDARY_RELOAD): Define target hook.
6882         (TARGET_IRA_COVER_CLASSES): Ditto.
6883         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
6884         registers are 128 bits if VSX memory reference instructions are used.
6885         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
6886         unit is being used.
6887         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
6888         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
6889         Print several of the scheduling related parameters.
6890         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
6891         rs6000_constraints instead of rs6000_vector_reg_class.  Move
6892         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
6893         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
6894         Altivec.  Add VSX support.  Setup for secondary reload support on
6895         Altivec/VSX registers.
6896         (rs6000_override_options): Make power7 set the scheduling groups
6897         like the power5.  Add support for new debug switches to override
6898         the scheduling defaults.  Temporarily disable -mcpu=power7 from
6899         setting -mvsx.  Add support for debug switches -malways-hint,
6900         -msched-groups, and -malign-branch-targets.
6901         (rs6000_buitlin_conversion): Add support for returning unsigned
6902         vector conversion functions to fix regressions due to stricter
6903         type checking.
6904         (rs6000_builtin_mul_widen_even): Ditto.
6905         (rs6000_builtin_mul_widen_odd): Ditto.
6906         (rs6000_builtin_vec_perm): Ditto.
6907         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
6908         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
6909         to zero a register.
6910         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
6911         generated upstream.
6912         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
6913         VSX types for bit operations.  Changes to accomidate vector.md.
6914         (bdesc_2arg): Ditto.
6915         (bdesc_1arg): Ditto.
6916         (struct builtin_description_predicates): Rewrite predicate
6917         handling so that RTL describes the operation, instead of passing
6918         the instruction to be used as a string argument.
6919         (bdesc_altivec_preds): Ditto.
6920         (altivec_expand_predicate_builtin): Ditto.
6921         (altivec_expand_builtin): Ditto.
6922         (rs6000_expand_ternop_builtin): Use a switch instead of an if
6923         statement for vsldoi support.
6924         (altivec_expand_ld_builtin): Change to use new names from vector.md.
6925         (altivec_expand_st_builtin): Ditto.
6926         (paired_expand_builtin): Whitespace changes.
6927         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
6928         builtin_mode_to_type table for secondary reload.  Call
6929         builtin_function_type to build random builtin functions.
6930         (altivec_init_builtins): Change to use builtin_function_type to
6931         create builtin function types dynamically as we need them.
6932         (builtin_hash_function): New support for hashing the tree types
6933         for builtin function as we need it, rather than trying to build
6934         all of the trees that we need.  Add initial preliminary VSX support.
6935         (builtin_function_type): Ditto.
6936         (builtin_function_eq): Ditto.
6937         (builtin_hash_struct): Ditto.
6938         (rs6000_init_builtins): Ditto.
6939         (rs6000_common_init_builtins): Ditto.
6940         (altivec_init_builtins): Ditto.
6941         (rs6000_common_init_builtins): Ditto.
6942         (enum reload_reg_type): New enum for simplifing reg classes.
6943         (rs6000_reload_register_type): Simplify register classes into GPR,
6944         Vector, and other registers.  Altivec and VSX addresses in reload.
6945         (rs6000_secondary_reload_inner): Ditto.
6946         (rs6000_ira_cover_classes): New target hook, that returns the
6947         appropriate cover classes, based on -mvsx being used or not.
6948         (rs6000_secondary_reload_class): Add VSX support.
6949         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
6950         (get_vsel_insn): Ditto.
6951         (rs6000_emit_vector_compare): Rewrite vector conditional support
6952         so that where we can, we use RTL operators, instead of blindly use
6953         UNSPEC.
6954         (rs6000_emit_vector_select): Ditto.
6955         (rs6000_emit_vector_cond_expr): Ditto.
6956         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
6957         (create_TOC_reference): Add -mdebug=addr support.
6958         (emit_frame_save): VSX loads/stores need register indexed addressing.
6959
6960         * config/rs6000/rs6000.md: Include vector.md.
6961
6962         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
6963
6964         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
6965         support for V2DI, V2DF in logical, permute, select operations.
6966
6967         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
6968         switch for vsx/power7.
6969         (-mvsx-scalar-memory): Ditto.
6970         (-mvsx-align-128): Ditto.
6971         (-mallow-movmisalign): Ditto.
6972         (-mallow-df-permute): Ditto.
6973         (-msched-groups): Ditto.
6974         (-malways-hint): Ditto.
6975         (-malign-branch-targets): Ditto.
6976
6977         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
6978         hook instead.
6979         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
6980         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
6981         (rs6000_vector_reg_class): Delete.
6982         (rs6000_vsx_reg_class): Ditto.
6983         (enum rs6000_reg_class_enum): New enum for the constraints that
6984         vary based on target switches.
6985         (rs6000_constraints): New array to hold the register class for all
6986         of the register constraints that vary based on the switches used.
6987         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
6988         (enum rs6000_builtins): Add unsigned varients for the builtin
6989         declarations returned by target hooks for expanding multiplies,
6990         select, and permute operations.  Add VSX builtins.
6991         (enum rs6000_builtin_type_index): Add entries for VSX.
6992         (V2DI_type_node): Ditto.
6993         (V2DF_type_node): Ditto.
6994         (unsigned_V2DI_type_node): Ditto.
6995         (bool_long_type_node): Ditto.
6996         (intDI_type_internal_node): Ditto.
6997         (uintDI_type_internal_node): Ditto.
6998         (double_type_internal_node): Ditto.
6999
7000         * config/rs6000/altivec.md (whole file): Move all expanders to
7001         vector.md from altivec.md.  Rename insn matching functions to be
7002         altivec_foo.
7003         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
7004         (altivec_vcmp*): Ditto.
7005         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
7006         (VM): New iterator for moves that includes the VSX types.
7007         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
7008         (altivec_vperm_<mode>_uns): New, for unsigned types.
7009         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
7010         (altivec_eq<mode>): Ditto.
7011         (altivec_gt<mode>): Ditto.
7012         (altivec_gtu<mode>): Ditto.
7013         (altivec_eqv4sf): Ditto.
7014         (altivec_gev4sf): Ditto.
7015         (altivec_gtv4sf): Ditto.
7016         (altivec_vcmpbfp_p): Ditto.
7017
7018 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
7019
7020         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
7021         unsigned HWI.
7022
7023 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7024
7025         PR target/40832
7026         * config/i386/i386.c (output_387_ffreep): Rewrite to use
7027         ASM_SHORT instead of .word.
7028         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
7029         instead of .word in asm template.
7030
7031 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
7032
7033         PR target/37488
7034         * ira-lives.c (bb_has_abnormal_call_pred): New function.
7035         (process_bb_node_lives): Use it.
7036
7037         * ira.c (setup_cover_and_important_classes): Don't setup
7038         ira_important_class_nums.  Add cover classes to the end of
7039         important classes.
7040         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
7041         New.
7042         (find_reg_class_closure): Use reorder_important_classes.
7043
7044         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
7045
7046         * config/i386/i386.c (i386_ira_cover_classes): New function.
7047         (TARGET_IRA_COVER_CLASSES): Redefine.
7048
7049         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
7050         importance of order of cover classes in the array.
7051
7052 2009-07-22  Diego Novillo  <dnovillo@google.com>
7053
7054         * tree-pass.h (TDF_EH): Define.
7055         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
7056         contains TDF_EH, print the EH region number holding GS.
7057         * tree-dump.c (dump_options): Add "eh".
7058         * doc/invoke.texi: Document it.
7059
7060 2009-07-22  Doug Kwan  <dougkwan@google.com>
7061
7062         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
7063
7064 2009-07-22  Michael Matz  <matz@suse.de>
7065
7066         PR tree-optimization/35229
7067         PR tree-optimization/39300
7068
7069         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
7070         (inhibit_phi_insertion): New function.
7071         (insert_into_preds_of_block): Call it for REFERENCEs.
7072         (init_pre): Initialize and finalize scalar evolutions.
7073         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
7074
7075 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
7076
7077         * config/i386/predicates.md (zero_extended_scalar_load_operand):
7078         Use CONST_VECTOR_NUNITS to determine number of elements.
7079
7080 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
7081
7082         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
7083         (U, W): Constraints are now deprecated and will be removed if we
7084         run out of letters.
7085         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
7086         the file.
7087         ("prefetch"): Add the stcmh instruction for prefetching.
7088         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
7089         changes.
7090         (s390_short_displacement): Return always true if compiling for
7091         machines not providing the long displacement facility.
7092         (s390_mem_constraint): Support the new constraint letter Z.
7093         (s390_check_qrst_address): New function.
7094
7095 2009-07-21  DJ Delorie  <dj@redhat.com>
7096
7097         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
7098         alone too.
7099
7100 2009-07-21  Jason Merrill  <jason@redhat.com>
7101
7102         * c-common.c (max_tinst_depth): Increase default to 1024.
7103
7104 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7105
7106         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
7107         (vec_unpacku_float_lo_v4si): Ditto.
7108
7109 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7110
7111         PR target/40811
7112         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
7113         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
7114         (builtin_description): Add __builtin_ia32_cvtudq2ps.
7115         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
7116
7117 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
7118
7119         PR tree-optimization/40813
7120         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
7121         it.
7122
7123 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7124
7125         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
7126         with a NOP_EXPR if needed.
7127
7128 2009-07-21  Paul Brook <paul@codesourcery.com>
7129
7130         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
7131         Terminate debug dump with newline.
7132
7133 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7134
7135         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
7136         Cast "1" to unsigned HOST_WIDE_INT.
7137         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
7138         deposit length to the maximum length - lsb.  Extend length if
7139         HOST_BITS_PER_WIDE_INT is 32.
7140
7141 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
7142
7143         * cgraph.h (constant_pool_htab): New function.
7144         (constant_descriptor_tree): Move from varasm.c.
7145         * varasm.c (constant_pool_htab): New function.
7146         (constant_descriptor_tree): Move to cgraph.h.
7147
7148 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
7149
7150         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
7151
7152 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
7153
7154         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
7155         $(VARRAY_H).
7156
7157 2009-07-20  Xinliang David Li  <davidxl@google.com>
7158
7159         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
7160
7161 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
7162
7163         * config/mips/mips.md (move_type): Add arith.
7164         (type): Handle arith.
7165         (zero_extendsidi2): Rename this into ...
7166         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
7167         (zero_extendsidi2): New expander.
7168         (*zero_extendsidi2_dext): New pattern.
7169
7170 2009-07-20  Nick Clifton  <nickc@redhat.com>
7171
7172         * config.gcc (mips64-*-*): Add definition of tm_defines in order
7173         to set MIPS_ABI_DEFAULT.
7174         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
7175
7176 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
7177
7178         * tree-object-size.c (addr_object_size): Handle unions with
7179         array in it as last field of structs in __bos (, 1) as __bos (, 0).
7180
7181         PR tree-optimization/40792
7182         * tree.c (build_function_type_skip_args): Remove bogus assert.
7183
7184 2009-07-20  Jan Hubicka  <jh@suse.cz>
7185             Martin Jambor  <mjambor@suse.cz>
7186
7187         * cgraph.h (combined_args_to_skip): New field.
7188         * cgraph.c (cgraph_create_virtual_clone): Properly handle
7189         combined_args_to_skip and args_to_skip.
7190         * tree-inline.c (update_clone_info): New function.
7191         (tree_function_versioning): Call update_clone_info.
7192         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
7193         functions.
7194         (cgraph_materialize_all_clones): More extensive dumping, working
7195         with combined_args_to_skip rather than args_to_skip.
7196
7197 2009-07-20  Ira Rosen  <irar@il.ibm.com>
7198
7199         * tree-vectorizer.h (vectorizable_condition): Add parameters.
7200         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
7201         (get_initial_def_for_reduction): Likewise.
7202         (vectorizable_reduction): Skip the check of first operand in case
7203         of COND_EXPR. Add check that it is outer loop vectorization if
7204         nested cycle was detected. Call vectorizable_condition() for
7205         COND_EXPR. If reduction epilogue cannot be created do not fail for
7206         nested cycles (if it is not double reduction). Assert that there
7207         is only one type in the loop in case of COND_EXPR. Call
7208         vectorizable_condition() to vectorize COND_EXPR.
7209         * tree-vect-stmts.c (vectorizable_condition): Update comment.
7210         Add parameters. Allow nested cycles if called from
7211         vectorizable_reduction(). Use reduction vector variable if provided.
7212         (vect_analyze_stmt): Call vectorizable_reduction() before
7213         vectorizable_condition().
7214         (vect_transform_stmt): Update call to vectorizable_condition().
7215
7216 2009-07-20  Christian Bruel  <christian.bruel@st.com>
7217
7218         * config/sh/sh.opt (-mfmovd): Resurrect and document.
7219         * doc/invoke.texi (-mfmovd): Likewise.
7220         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
7221
7222 2009-07-20  Jan Hubicka  <jh@suse.cz>
7223
7224         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
7225         when handling SSA name.
7226
7227 2009-07-19  Jan Hubicka  <jh@suse.cz>
7228
7229         PR tree-optimization/40676
7230         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
7231         virtual PHIs in empty BBs.
7232
7233 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7234
7235         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
7236         re-expanded the compound use gen_lowpart instead to convert to the
7237         desired mode.
7238
7239 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7240
7241         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
7242         OUTER_CONST arguments.
7243         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
7244         the new wider mode will be masked off.
7245         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
7246
7247 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7248
7249         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7250         high-order bits are zero.
7251
7252 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7253
7254         * combine.c (simplify_shift_const_1): Split code to determine
7255         shift_mode into ...
7256         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
7257         new bits shifted in are identical to the old sign bit.
7258
7259 2009-07-18  Richard Guenther  <rguenther@suse.de>
7260
7261         PR c/40787
7262         * gimplify.c (gimplify_call_expr): Reject code using results from
7263         functions returning void.
7264
7265 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7266
7267         * doc/md.texi: Document the new PowerPC "es" constraint.
7268         Document that "m" can include automodified addresses on this target,
7269         and explain how %U must be used.  Extend the "Q" and "Z" documentation
7270         to suggest "es" as well as "m".
7271         * config/rs6000/constraints.md (es): New memory constraint.
7272         (Q, Z): Update strings to match new documentation.
7273
7274 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7275
7276         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
7277         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
7278         * config/rs6000/predicates.md (volatile_mem_operand): Use
7279         offsettable_nonstrict_memref_p.
7280         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
7281         (*floatunssidf2_internal): Likewise.
7282         (*fix_truncdfsi2_internal): Likewise.
7283         (*fix_trunctfsi2_internal): Likewise.
7284
7285 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
7286
7287         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
7288         atmega32u2 devices.
7289         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7290
7291 2009-07-17  Richard Guenther  <rguenther@suse.de>
7292
7293         PR c/40401
7294         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
7295         (pass_warn_unused_result): Likewise.
7296         (TODO_set_props): Remove.
7297         * omp-low.c (diagnose_omp_structured_block_errors): Change to
7298         run as a pass.
7299         (pass_diagnose_omp_blocks): Define.
7300         * c-decl.c (pop_file_scope): Do not finalize the CU here.
7301         (c_gimple_diagnostics_recursively): Remove.
7302         (finish_function): Do not call it.
7303         (c_write_global_declarations): Continue after errors.
7304         Finalize the CU here.
7305         * c-gimplify.c (c_genericize): Do not gimplify here.
7306         * c-common.c (c_warn_unused_result): Move ...
7307         * tree-cfg.c (do_warn_unused_result): ... here.
7308         (run_warn_unused_result): New function.
7309         (gate_warn_unused_result): New function.
7310         (pass_warn_unused_result): New pass.
7311         * c-common.h (c_warn_unused_result): Remove.
7312         * flags.h (flag_warn_unused_result): Declare.
7313         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
7314         * opts.c (flag_warn_unused_result): Initialize to false.
7315         * toplev.c (compile_file): Add comment.
7316         * omp-low.c (create_omp_child_function): Do not register
7317         the function with the frontend.
7318         (diagnose_omp_structured_block_errors): Prepare to be
7319         called as optimization pass.
7320         (gate_diagnose_omp_blocks): New function.
7321         (pass_diagnose_omp_blocks): New pass.
7322         * cgraph.h (cgraph_optimize): Remove.
7323         (cgraph_analyze_function): Likewise.
7324         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
7325         * cgraphunit.c (cgraph_lower_function): Lower nested functions
7326         before their parents here.
7327         (cgraph_finalize_function): Not here.
7328         (cgraph_analyze_function): Gimplify functions here.
7329         (cgraph_finalize_compilation_unit): Continue after errors.
7330         Optimize the callgraph from here.
7331         (cgraph_optimize): Make static.
7332         * langhooks.c (write_global_declarations): Finalize the CU.
7333         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7334         (gimplify_function_tree): Assert we gimplify only once.
7335         Set PROP_gimple_any property.
7336         * tree-nested.c (gimplify_all_functions): New function.
7337         (lower_nested_functions): Gimplify all nested functions.
7338         * gimple.h (diagnose_omp_structured_block_errors): Remove.
7339         * passes.c (init_optimization_passes): Add pass_warn_unused_result
7340         and pass_diagnose_omp_blocks after gimplification.  Do not
7341         set TODO_set_props on all_lowering_passes.
7342         (execute_one_pass): Do not handle TODO_set_props.
7343         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7344         (gimplify.o): Add tree-pass.h dependency.
7345         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7346         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7347         (unsave_r): Likewise.
7348         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7349         temporary variable.
7350
7351 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
7352
7353         * doc/service.texi (Service): Restore previously removed link,
7354         which isn't broken after all.
7355
7356 2009-07-17  Richard Guenther  <rguenther@suse.de>
7357
7358         PR tree-optimization/40321
7359         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7360         PHI nodes to the maximal set.
7361         (make_values_for_phi): Add PHI arguments to the maximal set.
7362         (execute_pre): Dump PHI_GEN and the maximal set.
7363
7364 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
7365
7366         PR c++/40780
7367         * gimplify.c (gimplify_conversion): Don't change non-conversions into
7368         VIEW_CONVERT_EXPR.
7369
7370 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
7371
7372         * doc/extend.texi (Nested Functions): Replace broken link with
7373         textual reference.
7374         * doc/service.texi (Service): Remove broken link.
7375
7376 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
7377
7378         PR bootstrap/40781
7379         * builtins.c (expand_builtin_memcmp): Use loc instead of
7380         EXPR_LOCATION (exp).
7381         (expand_builtin_strncmp): Likewise.
7382
7383 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
7384             Manuel López-Ibáñez  <manu@gcc.gnu.org>
7385
7386         PR 40435
7387         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7388         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7389         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7390         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7391         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7392         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7393         tree-inline.c, c-common.c, c-common.h, gimple.c,
7394         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7395         convert.c: Add location argument to fold_{unary,binary,ternary},
7396         fold_build[123], build_call_expr, build_size_arg,
7397         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7398         fold_build1_initializer, fold_build2_initializer,
7399         fold_build3_initializer, fold_build_call_array,
7400         fold_build_call_array_initializer, fold_single_bit_test,
7401         omit_one_operand, omit_two_operands, invert_truthvalue,
7402         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7403         combine_comparisons, fold_builtin_*, fold_call_expr,
7404         build_range_check, maybe_fold_offset_to_address, round_up,
7405         round_down.
7406
7407 2009-07-16  Jason Merrill  <jason@redhat.com>
7408
7409         PR libstdc++/37907
7410         * c-common.c (c_common_reswords): Add __is_standard_layout
7411         and __is_trivial.
7412         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7413         * doc/implement-cxx.texi: New.
7414         * doc/gcc.texi: Include it.
7415
7416 2009-07-16  DJ Delorie  <dj@redhat.com>
7417
7418         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7419         compares that may be indirectly affected by previous instructions.
7420
7421 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7422
7423         * builtins.c (do_mpc_arg2): New.
7424         (fold_builtin_2): Fold builtin cpow.
7425         * real.h (HAVE_mpc_pow): New.
7426
7427 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
7428
7429         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7430         comparison to skip unprofitable schedule
7431
7432 2009-07-16  Simon Baldwin  <simonb@google.com>
7433
7434         * gcc.c (option_map): New flag -no-canonical-prefixes.
7435         * (display_help): Print help text for new flag.
7436         * (process_command): Move options translation and language specifics
7437         and handle new flag early.  Use it to set a function pointer to a
7438         prefix builder.  Replace make_relative_prefix calls with calls to
7439         the function pointed to.  Ignore new flag in regular options handling.
7440         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7441
7442 2009-07-15  DJ Delorie  <dj@redhat.com>
7443
7444         * config/mep/mep.md (sibcall_internal): Change register to avoid
7445         argument registers.
7446         (sibcall_value_internal): Likewise.
7447
7448 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
7449
7450         PR rtl-optimization/40710
7451         * resource.c (mark_target_live_regs): Reset DF problem to LR.
7452
7453 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
7454
7455         * config/mips/mips.md (*extenddi_truncate<mode>,
7456         *extendsi_truncate<mode>): Change type attribute to move_type
7457         with shift_shift.  Split out code handling exts from here ...
7458         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7459         pattern.
7460         (*extendhi_truncateqi): Change type attribute to move_type with
7461         shift_shift.  Split out code handling exts from here ...
7462         (*extendhi_truncateqi_exts): ... to this new pattern.
7463
7464 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
7465
7466         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7467         instead of "and" with inverted sign bit mask value.  Use
7468         "nonimmediate_operand" for operand 1 and operand 2 predicate.
7469         Allocate registers only for operand 4 and operand 5.
7470
7471 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
7472
7473         PR middle-end/40747
7474         * fold-const.c (fold_cond_expr_with_comparison): When folding
7475         < and <= to MIN, make sure the MIN uses the same type as the
7476         comparison's operands.
7477
7478 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
7479
7480         * arm.md (ior_xor): New code iterator.
7481         (split for ior/xor with shift and zero-extend): New split pattern.
7482         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7483
7484 2009-07-15  Richard Guenther  <rguenther@suse.de>
7485
7486         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7487         offset member.
7488
7489 2009-07-15  Richard Guenther  <rguenther@suse.de>
7490
7491         PR middle-end/40753
7492         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
7493
7494 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7495
7496         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
7497         handle 2.6.30 kernel.
7498
7499 2009-07-15  DJ Delorie  <dj@redhat.com>
7500
7501         * config/mep/mep.md (sibcall_internal): Change register to allow
7502         for 24-bit addresses.
7503         (sibcall_value_internal): Likewise.
7504
7505 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7506
7507         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
7508         that are enabled/disabled by the flags introduced by a previous patch.
7509
7510 2009-07-14  DJ Delorie  <dj@redhat.com>
7511
7512         * config/mep/mep.md (sibcall_internal): Include non-toggling
7513         non-jmp case.
7514         (sibcall_value_internal): Likewise.
7515
7516 2009-07-14  Taras Glek  <tglek@mozilla.com>
7517             Rafael Espindola  <espindola@google.com>
7518
7519         * doc/sourcebuild.texi: Document install-plugin target.
7520         * configure.ac: Added install-plugin target to language makefiles.
7521         * configure: Regenerate.
7522         * Makefile.in: (install-plugin): Install more headers,
7523         depend on lang.install-plugin.
7524
7525 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7526
7527         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
7528         translation.
7529
7530 2009-07-14  DJ Delorie  <dj@redhat.com>
7531
7532         * config/mep/mep.c (mep_vliw_jmp_match): New function.
7533         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
7534         * config/mep/mep.md (sibcall_internal): Change test from
7535         mep_vliw_mode_match to mep_vliw_jmp_match.
7536         (sibcall_value_internal): Likewise.
7537
7538 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
7539
7540         * config/i386/sse.md (copysign<mode>3): New expander.
7541         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
7542         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
7543         Use ix86_build_const_vector.
7544         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
7545         IX86_BUILTIN_CPYSGNPD.
7546         (builtin_description): Add __builtin_ia32_copysignps and
7547         __builtin_ia32_copysignpd.
7548         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
7549         and BUILT_IN_COPYSIGNF.
7550
7551 2009-07-13  Jason Merrill  <jason@redhat.com>
7552
7553         * builtins.c (can_trust_pointer_alignment): New fn.
7554         (get_pointer_alignment): Factor it out from here.
7555         * tree.h: Declare it.
7556
7557 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
7558
7559         * config/rs6000/predicates.md (offsettable_mem_operand): Test
7560         RTX_AUTOINC class.
7561
7562 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
7563
7564         PR debug/40705
7565         PR c++/403057
7566         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
7567
7568 2009-07-14  Richard Guenther  <rguenther@suse.de>
7569             Andrey Belevantsev <abel@ispras.ru>
7570
7571         PR middle-end/40745
7572         * cfgexpand.c (partition_stack_vars): Do not bother to update
7573         alias information when not optimizing.
7574
7575 2009-07-14  Richard Guenther  <rguenther@suse.de>
7576             Andrey Belevantsev <abel@ispras.ru>
7577
7578         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
7579         (pt_solution_set): Likewise.
7580         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
7581         * tree-ssa-structalias.c (pt_solution_set): New function.
7582         * final.c (rest_of_clean_state): Free SSA data structures.
7583         * print-rtl.c (print_decl_name): Remove.
7584         (print_mem_expr): Implement in terms of print_generic_expr.
7585         * alias.c (ao_ref_from_mem): New function.
7586         (rtx_refs_may_alias_p): Likewise.
7587         (true_dependence): Query alias-export info.
7588         (canon_true_dependence): Likewise.
7589         (write_dependence_p): Likewise.
7590         * tree-dfa.c (get_ref_base_and_extent): For void types leave
7591         size unknown.
7592         * emit-rtl.c (component_ref_for_mem_expr): Remove.
7593         (mem_expr_equal_p): Use operand_equal_p.
7594         (set_mem_attributes_minus_bitpos): Do not use
7595         component_ref_for_mem_expr.
7596         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
7597         (update_alias_info_with_stack_vars): Likewise.
7598         (partition_stack_vars): Call update_alias_info_with_stack_vars.
7599         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
7600         explicitly nor clear stmt operands.
7601         Free the decl-to-pointer map.
7602         * tree-optimize.c (execute_free_datastructures): Do not free
7603         SSA data structures here.
7604         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
7605         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
7606         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
7607         dependencies.
7608         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
7609
7610 2009-07-13  DJ Delorie  <dj@redhat.com>
7611
7612         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
7613         unrolling at the right iteration count.
7614
7615         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
7616         calculations.
7617
7618 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7619
7620         * haifa-sched.c (rank_for_schedule): Introduced flags to
7621         enable/disable individual scheduling heuristics.
7622         * common.opt: Introduced flags to enable/disable individual
7623         heuristics in the scheduler.
7624         * doc/invoke.texi: Introduced flags to enable/disable individual
7625         heuristics in the scheduler.
7626
7627 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
7628
7629         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
7630         config/i386/mingw-tls.c.
7631         * config/i386/mingw-tls.c: Removed.
7632
7633 2009-07-13  Ira Rosen  <irar@il.ibm.com>
7634
7635         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
7636         checks access only relevant statements.
7637         (vectorizable_reduction): Likewise.
7638
7639 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
7640
7641         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
7642         just for 32-bit case.
7643
7644 2009-07-12  Jan Hubicka  <jh@suse.cz>
7645
7646         PR tree-optimization/40585
7647         * except.c (expand_resx_expr): When there already is resume
7648         instruction, produce linked list.
7649         (build_post_landing_pads): Assert that resume is empty.
7650         (connect_post_landing_pads): Handle resume lists.
7651         (dump_eh_tree): Dump resume list.
7652
7653 2009-07-12  Ira Rosen  <irar@il.ibm.com>
7654
7655         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
7656         with additional argument.
7657         * tree-vectorizer.h (enum vect_def_type): Add
7658         vect_double_reduction_def.
7659         (vect_is_simple_reduction): Add argument.
7660         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
7661         indentation.
7662         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
7663         vect_is_simple_reduction with additional argument.
7664         (vect_analyze_loop_operations): Handle exit phi nodes in case of
7665         double reduction.
7666         (reduction_code_for_scalar_code): Handle additional codes by
7667         returning ERROR_MARK for them. Fix comment and indentation.
7668         (vect_is_simple_reduction): Fix comment, add argument to specify
7669         double reduction. Detect double reduction.
7670         (get_initial_def_for_induction): Fix indentation.
7671         (get_initial_def_for_reduction): Fix comment and indentation.
7672         Handle double reduction. Create initial definitions that do not
7673         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
7674         (vect_create_epilog_for_reduction): Fix comment, add argument to
7675         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
7676         epilogue result extraction. Create double reduction phi node and
7677         replace relevant uses.
7678         (vectorizable_reduction): Call vect_is_simple_reduction with
7679         additional argument. Fix indentation. Update epilogue code treatment
7680         according to the changes in reduction_code_for_scalar_code. Check
7681         for double reduction. Call vect_create_epilog_for_reduction with
7682         additional argument.
7683         * tree-vect-stmts.c (process_use): Handle double reduction, update
7684         documentation.
7685         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
7686         (vect_get_vec_def_for_operand): Likewise.
7687
7688 2009-07-12  Danny Smith  <dansmister@gmail.com>
7689
7690         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
7691         dllexport if !TREE_PUBLIC.
7692         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
7693
7694 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
7695
7696         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
7697         (avr_extra_arch_macro) Remove declatation.
7698         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
7699         (avr_extra_arch_macro) Declare as static.
7700         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
7701
7702 2009-07-11  Jan Hubicka  <jh@suse.cz>
7703
7704         PR middle-end/48388
7705         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
7706
7707 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
7708
7709         PR debug/40713
7710         * dwarf2out.c (dw_fde_struct): Add in_std_section and
7711         cold_in_std_section bits.
7712         (dwarf2out_begin_prologue): Initialize them.
7713         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
7714         if already covered by text_section or cold_text_section range.
7715
7716         PR rtl-optimization/40667
7717         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
7718         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
7719         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
7720         * config/i386/i386.c (ix86_minimum_alignment): New function.
7721         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
7722         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
7723         * emit-rtl.c (gen_reg_rtx): Likewise.
7724         * function.c (assign_parms): Likewise.  If nominal_type needs
7725         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
7726         rather than passed_type's alignment.
7727
7728         PR target/40668
7729         * function.c (assign_parm_setup_stack): Adjust
7730         MEM_OFFSET (data->stack_parm) if promoted_mode is different
7731         from nominal_mode on big endian.
7732
7733 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
7734
7735         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
7736
7737 2009-07-10  DJ Delorie  <dj@redhat.com>
7738
7739         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
7740
7741 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
7742
7743         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
7744         attribute.
7745         (thumb2_cbnz): Likewise.
7746
7747 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
7748
7749         PR target/39079
7750         * config.gcc (supported_defaults): Add synci.
7751         (with_synci): Add validation.
7752         (all_defaults): Add synci.
7753         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
7754         ISA_HAS_SYNCI.
7755         (synci): Same.
7756         * config/mips/mips.opt (msynci): New option.
7757         * config/mips/mips.c (mips_override_options): Warn on use of
7758         -msynci for targets that do now support it.
7759         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
7760         msynci.
7761         * gcc/doc/invoke.texi (-msynci): Document the new option.
7762         * doc/install.texi (--with-synci): Document the new option.
7763
7764 2009-07-10  Richard Guenther  <rguenther@suse.de>
7765
7766         PR tree-optimization/40496
7767         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
7768         the PHI result with a compatible type.
7769
7770 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7771
7772         PR 25509
7773         PR 40614
7774         * c.opt (Wunused-result): New.
7775         * doc/invoke.texi: Document it.
7776         * c-common.c (c_warn_unused_result): Use it.
7777
7778 2009-07-09  DJ Delorie  <dj@redhat.com>
7779
7780         * targhooks.c (default_target_can_inline_p): Rename from
7781         default_target_option_can_inline_p.
7782         * targhooks.h (default_target_can_inline_p): Likewise.
7783         * target-def.h (TARGET_CAN_INLINE_P): Rename from
7784         TARGET_OPTION_CAN_INLINE_P.
7785         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
7786         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
7787         (mep_target_can_inline_p): Rename from
7788         mep_target_option_can_inline_p.
7789
7790         PR target/40626
7791         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
7792         registers used to pass vectors.
7793
7794         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
7795
7796 2009-07-09  Tom Tromey  <tromey@redhat.com>
7797
7798         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
7799         * config/mmix/mmix.c: Include dwarf2.h.
7800         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
7801         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
7802         * config/sh/sh.c: Include dwarf2.h.
7803         * config/i386/i386.c: Include dwarf2.h.
7804         * Makefile.in (DWARF2_H): Remove 'elf'.
7805         * except.c: Include dwarf2.h.
7806         * unwind-dw2.c: Include dwarf2.h.
7807         * dwarf2out.c: Include dwarf2.h.
7808         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
7809         * unwind-dw2-fde.c: Include dwarf2.h.
7810         * dwarf2asm.c: Include dwarf2.h.
7811
7812 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7813
7814         * haifa-sched.c (insn_finishes_cycle_p): New static function.
7815         (max_issue): Use it.
7816         * sched-int.h (struct sched_info: insn_finishes_block_p): New
7817         scheduler hook.
7818         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
7819         (region_sched_info): Update.
7820         * sched-ebb.c (ebb_sched_info): Update.
7821         * modulo-sched.c (sms_sched_info): Update.
7822         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
7823
7824 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
7825
7826         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
7827
7828 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
7829
7830         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
7831
7832 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
7833
7834         PR middle-end/40692
7835         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
7836         arg1 with arg01 if arg1 is already INTEGER_CST.
7837
7838 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7839
7840         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
7841         Transform (and (truncate)) into (truncate (and)).
7842
7843 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
7844
7845         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
7846         creating LHS paradoxical subregs.  Fix surrounding returns to
7847         use NULL_RTX rather than 0.
7848
7849 2009-07-08  DJ Delorie  <dj@redhat.com>
7850
7851         * config/mep/mep.c: (mep_option_can_inline_p): New.
7852         (TARGET_OPTION_CAN_INLINE_P): Define.
7853
7854 2009-07-08  Mark Wielaard  <mjw@redhat.com>
7855
7856         PR debug/40659
7857         * dwarf2out.c (add_data_member_location_attribute): When we have
7858         only a constant offset don't emit a new location description using
7859         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
7860         dwarf_version > 2.
7861
7862 2009-07-08  Richard Henderson  <rth@redhat.com>
7863
7864         PR target/38900
7865         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
7866         (enum reg_class): Add CLOBBERED_REGS.
7867         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
7868         * config/i386/i386.c (ix86_conditional_register_usage): Moved
7869         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
7870         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
7871         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
7872         force 64-bit sibcalls into R11.
7873         * config/i386/constraints.md (U): New constraint.
7874         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
7875         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
7876         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
7877
7878 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
7879
7880         * basic-block.h (dump_regset, debug_regset): Remove duplicate
7881         prototypes.
7882         * c-objc-common.h (c_initialize_diagnostics): Ditto.
7883         * ebitmap.h (dump_ebitmap): Ditto.
7884         * optabs.h (optab_libfunc): Ditto.
7885         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
7886         * tree-flow.h (vect_can_force_dr_alignment_p,
7887         get_vectype_for_scalar_type): Ditto.
7888         (vectorize_loops): Move prototype to ...
7889         * tree-vectorizer.h: ... here. Also, adjust comment.
7890         (vect_set_verbosity_level): Remove duplicate prototype.
7891         * tree-ssa-loop.c: Include tree-vectorizer.h.
7892         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
7893
7894 2009-07-08  Nick Clifton  <nickc@redhat.com>
7895
7896         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
7897         forward slash.
7898
7899 2009-07-08  DJ Delorie  <dj@redhat.com>
7900
7901         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
7902         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
7903         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
7904         written to.
7905         * config/mep/intrinsics.md: Regenerated.
7906         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
7907         registers when asm() or calls are detected.
7908
7909 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7910
7911         PR c++/31246
7912         * gimplify.c (gimplify_expr): Propagate no_warning flag when
7913         gimplifying.
7914         * gimple (gimple_build_call_from_tree): Likewise.
7915         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
7916         no_warning flag before warning.
7917
7918 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7919
7920         * tree.c (set_expr_locus): Remove.
7921         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
7922         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
7923         EXPR_LOCATION.
7924         * gimplify.c (internal_get_tmp_var): Likewise.
7925         (gimplify_call_expr): Likewise.
7926         (gimplify_one_sizepos): Likewise.
7927
7928 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
7929
7930         PR debug/40666
7931         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
7932         to variables for debugging purposes.
7933
7934 2009-06-23  Mark Loeser  <mark@halcy0n.com>
7935
7936         PR build/40010
7937         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
7938
7939 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7940
7941         * pretty-print.c (pp_base_format): Remove %J.
7942         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7943         gcc_cxxdiag_char_table): Likewise.
7944         (init_dynamic_diag_info): Likewise.
7945
7946 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7947
7948         * pretty-print.c (pp_base_format): Remove %H.
7949         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
7950         gcc_cxxdiag_char_table): Likewise.
7951         (init_dynamic_diag_info): Likewise.
7952         * config/mep/mep.c (mep_select_section): Likewise.
7953
7954 2009-07-07  Duncan Sands  <baldrick@free.fr>
7955
7956         * final.c (pass_clean_state): Give the pass a name.
7957         * passes.c (pass_rest_of_compilation): Likewise.
7958         * tree-optimize.c (pass_all_optimizations): Likewise.
7959
7960 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
7961
7962         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
7963         an extra 'decl' for error_at.
7964
7965 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
7966
7967         PR middle-end/40669
7968         * tree-tailcall.c (adjust_return_value_with_ops,
7969         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
7970         if it has complex or vector type.
7971
7972 2009-07-07  Olivier Hainque  <hainque@adacore.com>
7973
7974         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
7975         pthread symbols.
7976
7977 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
7978
7979         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
7980
7981 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7982
7983         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
7984         * c-decl.c: Likewise.
7985         * function.c: Likewise.
7986         * varasm.c: Likewise.
7987         * tree-ssa.c: Likewise.
7988         * c-common.c: Likewise.
7989         * tree-cfg.c: Likewise.
7990         * config/spu/spu.c: Likewise.
7991         * config/ia64/ia64.c: Likewise.
7992         * config/v850/v850.c: Likewise.
7993
7994 2009-07-06  DJ Delorie  <dj@redhat.com>
7995
7996         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
7997         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
7998         unspecified accesses to control registers.
7999         * config/mep/intrinsics.md: Regenerate.
8000         * config/mep/intrinsics.h: Regenerate.
8001         * config/mep/mep-intrin.h: Regenerate.
8002
8003 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8004
8005         * c-lex.c: Replace %H by an explicit location. Update all calls.
8006         * c-common.c: Likewise.
8007         * c-decl.c: Likewise.
8008         * c-typeck.c: Likewise.
8009         * fold-const.c: Likewise.
8010         * gimplify.c: Likewise.
8011         * stmt.c: Likewise.
8012         * tree-cfg.c: Likewise.
8013         * tree-ssa-loop-niter.c: Likewise.
8014         * tree-vrp.c: Likewise.
8015         * value-prof.c: Likewise.
8016
8017 2009-07-06  Diego Novillo  <dnovillo@google.com>
8018
8019         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
8020         if it has one.  Handle cases where VAR does not have an
8021         annotation or cfun is NULL.
8022
8023 2009-07-06  Diego Novillo  <dnovillo@google.com>
8024
8025         * tree.c: Include debug.h.
8026         (initialize_tree_contains_struct): New.
8027         (init_ttree): Call it.
8028         (tree_node_structure_for_code): Factor out of ...
8029         (tree_node_structure): ... here.
8030         * treestruct.def (TS_PHI_NODE): Remove.
8031         (TS_GIMPLE_STATEMENT): Remove.
8032
8033 2009-07-06  Diego Novillo  <dnovillo@google.com>
8034
8035         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
8036         (debug_tree_chain): Handle cycles.
8037
8038 2009-07-06  Nick Clifton  <nickc@redhat.com>
8039             DJ Delorie  <dj@redhat.com>
8040
8041         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8042         __FMOVD_ENABLED__ is defined.
8043         * config/sh/sh.h
8044         (TARGET_FMOVD): Provide a default definition.
8045         (MASK_FMOVD): Likewise.
8046         (TARGET_CPU_CPP_BUILTINS): Define
8047         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8048         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8049         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
8050         (split for DF load from memory into register): Also handle
8051         MEMs which consist of REG+DISP addressing.
8052         (split for DF store from register to memory): Likewise.
8053         (movsf_ie): Always use single fp_mode.
8054         * config/sh/sh.c (sh_override_options): Do not automatically
8055         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8056         that to the -mfmovd command line switch.
8057         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
8058         (fldi_ok): Always allow.
8059         * config/sh/sh.opt (mfmovd): Remove this switch.
8060         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8061
8062 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
8063             Kaz Kojima  <kkojima@gcc.gnu.org>
8064
8065         PR rtl-optimization/30807
8066         * postreload.c (reload_combine): For every new use of REG_SUM,
8067         record the use of BASE.
8068
8069 2009-07-06  Jan Hubicka  <jh@suse.cz>
8070
8071         * params.def: Revert my accidental commit at 2009-06-30.
8072
8073 2009-07-04  Ian Lance Taylor  <iant@google.com>
8074
8075         PR target/40636
8076         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
8077         EXPORTED_CONST.
8078         (mingw_format_attribute_overrides): Likewise.
8079
8080 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
8081
8082         PR debug/40596
8083         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
8084         don't check cfa.reg.  Instead of cfa.indirect use
8085         fde && fde->drap_reg != INVALID_REGNUM test.
8086
8087 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
8088
8089         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
8090
8091 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
8092
8093         PR target/40587
8094         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
8095
8096 2009-07-03  Richard Guenther  <rguenther@suse.de>
8097
8098         PR tree-optimization/40640
8099         * tree-switch-conversion.c (build_arrays): Perform arithmetic
8100         in original type.
8101
8102 2009-07-03  Jan Hubicka  <jh@suse.cz>
8103
8104         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
8105         for size, reduce amount of inlining.
8106
8107 2009-07-03  Richard Guenther  <rguenther@suse.de>
8108
8109         PR middle-end/34163
8110         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
8111         if t +- x is known to not overflow and the conversion widens the
8112         operation.
8113         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
8114
8115 2009-07-03  Jan Hubicka  <jh@suse.cz>
8116
8117         * ipa-pure-const.c (analyze): Update loop optimizer init.
8118         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
8119         try_remove_empty_loop, remove_empty_loops): Remove.
8120         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
8121         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
8122         to mark regular loops as neccesary.
8123         (degenerate_phi_p): New function.
8124         (propagate_necessity, remove_dead_phis): Use it.
8125         (forward_edge_to_pdom): Likewise.
8126         (eliminate_unnecessary_stmts): Take care to remove uses of results of
8127         virtual PHI nodes that became unreachable.
8128         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
8129         * tree-flow.h (remove_empty_loops): Remove.
8130         * passes.c (init_optimization_passes): Remove.
8131
8132 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
8133
8134         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
8135         can_create_pseudo_p.
8136         (*fix_trunc<mode>_i387_1): Ditto.
8137         (*floathi<mode>2_1): Ditto.
8138         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
8139         (*fistdi2_1): Ditto.
8140         (*fist<mode>2_1): Ditto.
8141         (frndintxf2_floor): Ditto.
8142         (*fist<mode>2_floor_1): Ditto.
8143         (frndintxf2_ceil): Ditto.
8144         (*fist<mode>2_ceil_1): Ditto.
8145         (frndintxf2_trunc): Ditto.
8146         (frndintxf2_mask_pm): Ditto.
8147         (fxam<mode>2_i387_with_temp): Ditto.
8148         * config/i386/sse.md (mulv16qi3): Ditto.
8149         (*sse2_mulv4si3): Ditto.
8150         (mulv2di3): Ditto.
8151         (sse4_2_pcmpestr): Ditto.
8152         (sse4_2_pcmpistr): Ditto.
8153
8154 2009-07-03  Jan Hubicka  <jh@suse.cz>
8155
8156         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
8157         (mark_stmt_necessary): Set it.
8158         (mark_operand_necessary): Set it.
8159         (mark_control_dependent_edges_necessary): Set it.
8160         (mark_virtual_phi_result_for_renaming): New function.
8161         (get_live_post_dom): New function.
8162         (forward_edge_to_pdom): New function.
8163         (remove_dead_stmt): Fix handling of control dependences.
8164         (tree_dce_init): Init new bitmap.
8165         (tree_dce_done): Free it.
8166
8167 2009-07-02  Richard Guenther  <rguenther@suse.de>
8168
8169         PR bootstrap/40617
8170         * tree-ssa-structalias.c (new_var_info): Initialize
8171         is_restrict_var.
8172
8173 2009-07-02  Jan Hubicka  <jh@suse.cz>
8174
8175         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
8176         local.
8177
8178 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
8179
8180         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
8181         instead of recomputing it.  Adjust calls.
8182         (emit_store_flag): Adjust recursive calls.
8183
8184 2009-07-02  Richard Guenther  <rguenther@suse.de>
8185
8186         * tree-ssa-live.c (remove_unused_locals): Do not remove
8187         heap variables.
8188         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
8189         of DECL_EXTERNAL for HEAP variables.
8190         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
8191         HEAP variables.  Do not adjust RESTRICT vars.
8192         (find_what_var_points_to): Nobody cares if something
8193         points to READONLY.
8194
8195 2009-07-02  Ben Elliston  <bje@au.ibm.com>
8196
8197         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
8198         pc_low and pc_high declarations to the top of the function.
8199
8200 2009-07-01  DJ Delorie  <dj@redhat.com>
8201
8202         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
8203         registers as fixed.
8204         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
8205         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
8206         unspecified accesses to control registers.
8207         * config/mep/intrinsics.md: Regenerate.
8208         * config/mep/intrinsics.h: Regenerate.
8209         * config/mep/mep-intrin.h: Regenerate.
8210
8211 2009-07-01  Anthony Green  <green@moxielogic.com>
8212
8213         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8214         instruction when possible.
8215         (moxie_expand_prologue): Ditto.  Also, save an instruction and
8216         some complexity by popping off of $r12 instead of $sp.
8217         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
8218         operands.
8219
8220 2009-07-01  Richard Henderson  <rth@redhat.com>
8221
8222         PR bootstrap/40347
8223         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
8224         contained no insns, reposition note before last insn.
8225
8226 2009-07-01  Richard Henderson  <rth@redhat.com>
8227
8228         PR debug/40431
8229         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
8230         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
8231
8232 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
8233
8234         PR bootstrap/40558
8235         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
8236         darwin9 for printing reg addresses with %y.
8237
8238 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8239
8240         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
8241         truncation from operands in binary operations.
8242
8243 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8244
8245         Revert:
8246         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
8247         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8248         subreg of op0 to the original op0.
8249
8250         * expmed.c (store_bit_field_1): Use a temporary as the destination
8251         instead of a paradoxical subreg when we need to truncate the result.
8252
8253 2009-07-01  DJ Delorie  <dj@redhat.com>
8254
8255         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8256         names to VLIW variants.
8257         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8258         * config/mep/intrinsics.md: Regenerate.
8259         * config/mep/intrinsics.h: Regenerate.
8260         * config/mep/mep-intrin.h: Regenerate.
8261
8262 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
8263
8264         PR debug/40462
8265         * jump.c (returnjump_p): Revert last patch.
8266         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8267
8268 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8269
8270         PR target/40575
8271         * pa.md (casesi32p): Use jump table label to determine the offset
8272         of the jump table.
8273         (casesi64p): Likewise.
8274
8275         * pa.c (forward_branch_p): Return bool type.  Use instruction
8276         addresses when available.  Assert that INSN has a jump label.
8277         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
8278         have a jump label.
8279
8280 2009-07-01  Richard Guenther  <rguenther@suse.de>
8281
8282         PR tree-optimization/19831
8283         * tree-ssa-dce.c (propagate_necessity): Calls to functions
8284         that only act as barriers do not make any previous stores necessary.
8285         * tree-ssa-structalias.c (handle_lhs_call): Delay making
8286         HEAP variables global, do not add a constraint from nonlocal.
8287         (find_func_aliases): Handle escapes through return statements.
8288         (compute_points_to_sets): Make escaped HEAP variables global.
8289
8290 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8291
8292         PR bootstrap/40597
8293         * expmed.c (emit_store_flag): Perform a conversion if necessary,
8294         after reducing a DImode cstore to SImode.
8295
8296 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8297
8298         * expr.c (expand_expr_real_1): Reinstate fallthrough to
8299         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
8300
8301 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
8302
8303         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
8304         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
8305         to 0.
8306         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
8307         and umod_optab if TARGET_BSD_DIVMOD.
8308         * config/vax/lib1funcs.asm: New file.
8309         * config/vax/t-linux: New file.
8310         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
8311
8312 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
8313
8314         PR c++/40566
8315         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
8316         to type arguments that have void type.
8317
8318         PR debug/40573
8319         * dwarf2out.c (gen_formal_parameter_die): Call
8320         equate_decl_number_to_die if node is different from origin.
8321
8322 2009-06-30  Anthony Green  <green@moxielogic.com>
8323
8324         Clean up moxie port for --enable-build-with-cxx.
8325         * config/moxie/moxie.c (moxie_function_value): First two
8326         parameters are const_tree, not tree.
8327         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
8328         (REG_CLASS_NAMES): Ditto.
8329         (REGNO_REG_CLASS): Ditto.
8330         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8331         (moxie_function_value): Fix constyness of arguments.
8332
8333 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
8334
8335         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8336         finalize_size_functions before further processing.
8337         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8338         (variable_size): Call self_referential_size on size expressions
8339         that contain a PLACEHOLDER_EXPR.
8340         (size_functions): New static variable.
8341         (copy_self_referential_tree_r): New static function.
8342         (self_referential_size): Likewise.
8343         (finalize_size_functions): New global function.
8344         * tree.c: Include tree-inline.h.
8345         (push_without_duplicates): New static function.
8346         (find_placeholder_in_expr): New global function.
8347         (substitute_in_expr) <tcc_declaration>: Return the replacement object
8348         on equality.
8349         <tcc_expression>: Likewise.
8350         <tcc_vl_exp>: If the replacement object is a constant, try to inline
8351         the call in the expression.
8352         * tree.h (finalize_size_functions): Declare.
8353         (find_placeholder_in_expr): Likewise.
8354         (FIND_PLACEHOLDER_IN_EXPR): New macro.
8355         (substitute_placeholder_in_expr): Update comment.
8356         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8357         is true.
8358         (copy_tree_body_r): Likewise.
8359         (copy_tree_body): New static function.
8360         (maybe_inline_call_in_expr): New global function.
8361         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8362         (maybe_inline_call_in_expr): Declare.
8363         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8364         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8365         GIMPLE_H.
8366
8367 2009-06-30  Richard Guenther  <rguenther@suse.de>
8368
8369         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8370         continue walking.
8371         (propagate_necessity): Do not mark reaching defs of stores
8372         as necessary.
8373
8374 2009-06-30  Jan Hubicka  <jh@suse.cz>
8375
8376         * cfgloopanal.c (check_irred): Move into ...
8377         (mark_irreducible_loops): ... here; return true if ireducible
8378         loops was found.
8379         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8380         (analyze_function): Try to prove loop finiteness.
8381         * cfgloop.h (mark_irreducible_loops): Update prototype.
8382         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8383
8384 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
8385
8386         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8387
8388 2009-06-30  Ira Rosen  <irar@il.ibm.com>
8389
8390         PR tree-optimization/40542
8391         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8392         types.
8393
8394 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8395
8396         PR tree-optimization/40582
8397         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8398         than useless_type_conversion_p.
8399         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8400         proper place.
8401
8402 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8403
8404         PR middle-end/40554
8405         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8406
8407 2009-06-30  Richard Guenther  <rguenther@suse.de>
8408
8409         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8410         use ao_ref references.
8411         (walk_aliased_vdefs): Likewise.
8412         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8413         * tree-ssa-dce.c (struct ref_data): Remove.
8414         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8415         (mark_aliased_reaching_defs_necessary): Adjust.
8416         (mark_all_reaching_defs_necessary_1): Likewise.
8417
8418 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
8419
8420         PR boostrap/40597
8421         * expmed.c (emit_cstore): New name of emit_store_flag_1.
8422         (emit_store_flag_1): Extract from emit_store_flag, adjust
8423         calls to (what now is) emit_cstore.
8424         (emit_store_flag): Call emit_store_flag_1 and also use it
8425         for what used to be recursive calls.
8426
8427 2009-06-30  Wei Guozhi  <carrot@google.com>
8428
8429         PR/40416
8430         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8431         if the target bb post dominates from bb.
8432         * config/i386/i386.c (memory_address_length): Check existence of base
8433         register before using it.
8434
8435 2009-06-30  Nick Clifton  <nickc@redhat.com>
8436             DJ Delorie  <dj@redhat.com>
8437
8438         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8439         __FMOVD_ENABLED__ is defined.
8440         * config/sh/sh.h
8441         (TARGET_FMOVD): Provide a default definition.
8442         (MASK_FMOVD): Likewise.
8443         (TARGET_CPU_CPP_BUILTINS): Define
8444         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8445         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8446         two fmov instructions depending upon whether TARGET_FMOVD is
8447         enabled.
8448         (split for DF load from memory into register): Also handle
8449         MEMs which consist of REG+DISP addressing.
8450         (split for DF store from register to memory): Likewise.
8451         * config/sh/sh.opt (mfmovd): Remove this switch.
8452         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8453         * config/sh/sh.c (sh_override_options): Do not automatically
8454         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8455         that to the -mfmovd command line switch.
8456
8457         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8458         the SH4 and SH4A.
8459         (fldi_ok): Always allow.
8460         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8461
8462 2009-06-29  DJ Delorie  <dj@redhat.com>
8463
8464         * doc/install.texi (mep-x-elf): Correct chip's full name.
8465
8466 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
8467
8468         * doc/extend.texi: Fix typo.
8469
8470 2009-06-29  Tom Tromey  <tromey@redhat.com>
8471
8472         * dwarf2.h: Remove.
8473         * Makefile.in (DWARF2_H): New variable.
8474         (except.o): Use it.
8475         (dwarf2out.o): Likewise.
8476         (dwarf2asm.o): Likewise.
8477         * config/i386/t-i386: Use DWARF2_H.
8478         * except.c: Include elf/dwarf2.h.
8479         * unwind-dw2.c: Include elf/dwarf2.h.
8480         * dwarf2out.c: Include elf/dwarf2.h.
8481         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8482         <dtprel>: New field.
8483         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8484         (size_of_loc_descr): Likewise.
8485         (output_loc_operands_raw): Likewise.
8486         (output_loc_operands): Handle new dtprel field.
8487         (loc_checksum): Update.
8488         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8489         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8490         * unwind-dw2-fde.c: Include elf/dwarf2.h.
8491         * dwarf2asm.c: Include elf/dwarf2.h.
8492         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
8493         * config/mmix/mmix.c: Include elf/dwarf2.h.
8494         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
8495         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
8496         * config/sh/sh.c: Include elf/dwarf2.h.
8497         * config/i386/i386.c: Include elf/dwarf2.h.
8498
8499 2009-06-29  DJ Delorie  <dj@redhat.com>
8500
8501         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
8502
8503         * doc/extend.texi: Add MeP attributes and pragmas.
8504         * doc/invoke.text: Add MeP Options.
8505         * doc/contrib.texi: Add MeP contribution.
8506         * doc/md.texi: Add MeP constraints.
8507         * doc/install.texi: Add MeP target.
8508
8509 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
8510
8511         * target.h (struct gcc_target): Add frame_pointer_required field.
8512         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
8513         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
8514         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
8515         hook.
8516         * reload1.c (update_eliminables): (Ditto.).
8517         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
8518         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8519         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
8520
8521         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
8522
8523         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
8524         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8525         (arm_frame_pointer_required): New function.
8526
8527         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
8528         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8529         (avr_frame_pointer_required_p): Declare as static.
8530         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
8531
8532         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
8533         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8534         (bfin_frame_pointer_required): Make as static, change return type
8535         to bool.
8536         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
8537
8538         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
8539         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8540         (cris_frame_pointer_required): New function.
8541
8542         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
8543
8544         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
8545         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8546         (fr30_frame_pointer_required): New function.
8547
8548         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
8549         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8550         (frv_frame_pointer_required): Make as static, change return type
8551         to bool.
8552         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
8553
8554         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
8555         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8556         (ix86_frame_pointer_required): Make as static, change return type to
8557         bool.
8558         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
8559
8560         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
8561         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8562
8563         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
8564
8565         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
8566
8567         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
8568
8569         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
8570         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8571         (mips_frame_pointer_required): Make as static.
8572         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
8573
8574         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
8575         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8576         (mmix_frame_pointer_required): Mew function.
8577
8578         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
8579         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8580
8581         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
8582
8583         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
8584
8585         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
8586
8587         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
8588         (CAN_ELIMINATE): Redefine.
8589         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8590         (sparc_frame_pointer_required): New function.
8591         (sparc_can_eliminate): New function.
8592         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
8593
8594         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
8595         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8596
8597         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
8598         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8599         (xtensa_frame_pointer_required): Make as static, change return type
8600         to bool.
8601         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
8602         Remove.
8603
8604 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
8605
8606         * doc/plugins.texi: Document PLUGIN_START_UNIT.
8607         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
8608         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
8609         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
8610         (register_callback): Handle PLUGIN_START_UNIT.
8611         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
8612
8613 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8614
8615         * tree.c (process_call_operands): Propagate TREE_READONLY from the
8616         operands.
8617         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
8618         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
8619
8620 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
8621
8622         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
8623         move cost.
8624
8625 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
8626
8627         * doc/extend.texi (Additional Floating Types): __float128 is also
8628         supported on i386 targets.
8629
8630 2009-06-29  Richard Guenther  <rguenther@suse.de>
8631
8632         PR middle-end/14187
8633         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
8634         flag.
8635         (pt_solutions_same_restrict_base): Declare.
8636         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
8637         flag.
8638         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
8639         (make_constraint_from, make_copy_constraint): Move earlier.
8640         (make_constraint_from_heapvar): New function.
8641         (make_constraint_from_restrict): Likewise.
8642         (handle_lhs_call): Use it.
8643         (find_func_aliases): Use it to track conversions to restrict
8644         qualified pointers.
8645         (struct fieldoff): Add only_restrict_pointers flag.
8646         (push_fields_onto_fieldstack): Initialize it.
8647         (create_variable_info_for): Track global restrict qualified pointers.
8648         (intra_create_variable_infos): Use make_constraint_from_heapvar.
8649         Track restrict qualified pointer arguments.
8650         (set_uids_in_ptset): Use varinfo is_global_var flag.
8651         (find_what_var_points_to): Set the vars_contains_restrict flag.
8652         Always create the points-to solution for sets including restrict tags.
8653         (pt_solutions_same_restrict_base): New function.
8654         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
8655         qualified pointers use pt_solutions_same_restrict_base as
8656         additional source for disambiguation.
8657
8658 2009-06-29  Richard Guenther  <rguenther@suse.de>
8659
8660         PR middle-end/38212
8661         * alias.c (find_base_decl): Remove.
8662         (get_deref_alias_set_1): Remove restrict handling.
8663         * c-common.c (c_apply_type_quals_to_decl): Do not set
8664         DECL_POINTER_ALIAS_SET.
8665         * gimplify.c (find_single_pointer_decl_1): Remove.
8666         (find_single_pointer_decl): Likewise.
8667         (internal_get_tmp_var): Remove restrict handling.
8668         (gimple_regimplify_operands): Likewise.
8669         * omp-low.c (expand_omp_atomic_pipeline): Do not set
8670         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
8671         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
8672         * tree.c (restrict_base_for_decl): Remove.
8673         (init_ttree): Do not allocate it.
8674         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
8675         LABEL_DECL_UID for label decls.
8676         (copy_node_stat): Do not copy restrict information.
8677         (decl_restrict_base_lookup): Remove.
8678         (decl_restrict_base_insert): Likewise.
8679         (print_restrict_base_statistics): Likewise.
8680         (dump_tree_statistics): Do not call print_restrict_base_statistics.
8681         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
8682         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
8683         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
8684         (LABEL_DECL_UID): Adjust.
8685         (DECL_BASED_ON_RESTRICT_P): Remove.
8686         (DECL_GET_RESTRICT_BASE): Likewise.
8687         (SET_DECL_RESTRICT_BASE): Likewise.
8688         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
8689
8690         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
8691         instead of DECL_POINTER_ALIAS_SET.
8692         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
8693         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
8694         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
8695
8696 2009-06-29  Richard Guenther  <rguenther@suse.de>
8697
8698         PR tree-optimization/40579
8699         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
8700         the IL to simplify has constants that overflowed.
8701
8702 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
8703
8704         PR tree-optimization/40550
8705         * tree-vect-generic.c (expand_vector_operations_1): Compute in
8706         vector_compute_type only when the size of vector_compute_type is
8707         less than the size of type.
8708
8709 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
8710
8711         * fold-const.c (contains_label_1): Fix comments.
8712         (contains_label_p): Do not walk trees multiple time.
8713
8714 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8715
8716         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
8717         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
8718         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
8719         ix86_fp_comparison_operator.
8720         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
8721         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
8722         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
8723         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
8724         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
8725         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
8726         (related splits): Change predicate to ix86_fp_comparison_operator.
8727         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
8728         instead of ix86_fp_comparison_codes.
8729         (ix86_trivial_fp_comparison_operator,
8730         ix86_fp_comparison_operator): New.
8731         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
8732         (ix86_expand_compare): Eliminate last two parameters.
8733         (ix86_fp_jump_nontrivial_p): Kill.
8734         * config/i386/i386.c (put_condition_code): Eliminate call to
8735         ix86_fp_comparison_codes and subsequent assertion.
8736         (ix86_fp_comparison_codes): Eliminate.
8737         (ix86_fp_swap_condition): New.
8738         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
8739         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
8740         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
8741         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
8742         and ix86_fp_swap_condition.
8743         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
8744         Use ix86_fp_comparison_strategy.
8745         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
8746         (ix86_fp_jump_nontrivial_p): Eliminate.
8747         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
8748         call to ix86_expand_compare.
8749         (ix86_split_fp_branch, ix86_expand_setcc,
8750         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
8751         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
8752
8753 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8754
8755         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
8756         related to jump_clobbers.
8757         * config/arm/arm.md (conds): Remove jump_clob case.
8758         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
8759         splits): Change comparison_operator to arm_comparison_operator.
8760         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
8761         Eliminate.
8762
8763 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8764
8765         * dojump.c (do_compare_rtx_and_jump): Try swapping the
8766         condition for floating point modes.
8767         * expmed.c (emit_store_flag_1): Move here a bigger part
8768         of emit_store_flag.
8769         (emit_store_flag): Try swapping the condition for floating point
8770         modes.
8771         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
8772
8773 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8774
8775         * expr.c (expand_expr_real_1): Just use do_store_flag.
8776         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
8777         emit_store_flag_force.
8778         * expmed.c (emit_store_flag_force): Copy here trick
8779         previously in expand_expr_real_1.  Try reversing the comparison.
8780         (emit_store_flag_1): Work if target is NULL.
8781         (emit_store_flag): Work if target is NULL, using the result mode
8782         from the comparison.  Use split_comparison, restructure final part
8783         to simplify conditionals.
8784
8785 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
8786
8787         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
8788         * dojump.c (do_jump): Change handling of floating-point
8789         ops to use just do_compare_and_jump.
8790         (split_comparison): New.
8791         (do_compare_rtx_and_jump): Add here logic coming previously
8792         in do_jump, using split_comparison.
8793
8794 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
8795
8796         PR target/40489
8797         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
8798
8799 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8800
8801         * tree-ssa-alias.c: Fix unintentional commit.
8802
8803 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8804
8805         * passes.c (execute_one_pass): Fix unintentional commit.
8806
8807 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8808
8809         * df-problems.c (df_set_seen, df_unset_seen): Delete.
8810         (df_rd_local_compute, df_md_local_compute): Inline them.
8811
8812         (df_md_scratch): New.
8813         (df_md_alloc, df_md_free): Allocate/free it.
8814         (df_md_local_compute): Only include live registers in init.
8815         (df_md_transfer_function): Prune the in-set computed by
8816         the confluence function, and the gen-set too.
8817
8818 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8819
8820         PR rtl-optimization/26854
8821         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
8822         * df-problems.c (df_rd_add_problem): Fix comment.
8823         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
8824         df_md_simulate_artificial_defs_at_top,
8825         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
8826         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
8827         df_md_transfer_function, df_md_init, df_md_confluence_0,
8828         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
8829         problem_MD, df_md_add_problem): New.
8830         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
8831         df_md_get_bb_info): New.
8832         (DF_LAST_PROBLEM_PLUS1): Adjust.
8833
8834         * Makefile.in (fwprop.o): Include domwalk.h.
8835         * fwprop.c: Include domwalk.h.
8836         (reg_defs, reg_defs_stack): New.
8837         (bitmap_only_bit_between): Remove.
8838         (process_defs): New.
8839         (process_uses): Use reg_defs and local_md instead of
8840         bitmap_only_bit_between and local_rd.
8841         (single_def_use_enter_block): New, from build_single_def_use_links.
8842         (single_def_use_leave_block): New.
8843         (build_single_def_use_links): Remove code moved to
8844         single_def_use_enter_block, invoke domwalk.
8845         (use_killed_between): Adjust comment.
8846
8847 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8848
8849         * bitmap.h (bitmap_ior_and_into): New.
8850         * bitmap.c (bitmap_ior_and_into): New.
8851
8852 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
8853
8854         * domwalk.h (struct dom_walk_data): Remove all callbacks except
8855         before_dom_children_before_stmts and after_dom_children_after_stmts.
8856         Rename the two remaining callbacks to just before_dom_children and
8857         after_dom_children. Remove other GIMPLE statement walking bits.
8858         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
8859         * graphite.c: Do not include domwalk.h.
8860         * tree-into-ssa.c (interesting_blocks): New global.
8861         (struct mark_def_sites_global_data): Remove it and names_to_rename.
8862         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
8863         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
8864         now that they're not domwalk callbacks.
8865         (rewrite_initialize_block): Rename to...
8866         (rewrite_enter_block): ... this, place after called functions.  Test
8867         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
8868         (rewrite_finalize_block): Rename to...
8869         (rewrite_leave_block): ... this, place after called functions.
8870         (rewrite_update_init_block): Rename to...
8871         (rewrite_update_enter_block): ... this, place after called functions.
8872         Test interesting_blocks, call rewrite_update_stmt and
8873         rewrite_update_phi_arguments.
8874         (rewrite_update_fini_block): Rename to...
8875         (rewrite_leave_block): ... this, place after called functions.
8876         (rewrite_blocks): Remove last argument, simplify initialization of
8877         walk_data.
8878         (mark_def_sites_initialize_block): Rename to...
8879         (mark_def_sites_block): ... this, call mark_def_sites.
8880         (mark_def_sites_blocks): Remove argument, simplify initialization of
8881         walk_data.
8882         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
8883         (update_ssa): Likewise.
8884         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
8885         callback.
8886         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
8887         (dom_opt_initialize_block): Rename to...
8888         (dom_opt_enter_block): ... this, place after called functions.  Walk
8889         statements here, inline propagate_to_outgoing_edges.
8890         (dom_opt_finalize_block): Rename to...
8891         (dom_opt_leave_block): ... this, place after called functions.
8892         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
8893         domwalk callback.
8894         (dse_enter_block, dse_record_phi): New.
8895         (dse_record_phis): Delete.
8896         (dse_finalize_block): Rename to...
8897         (dse_leave_block): ... this.
8898         (tree_ssa_dse): Simplify initialization of walk_data.
8899         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
8900         Adjust initialization of walk_data.
8901         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
8902         * tree-ssa-loop-phiopt.c (get_non_trapping):
8903         Adjust initialization of walk_data.
8904         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
8905         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
8906         it's not a domwalk callback.
8907         (uncprop_initialize_block): Rename to...
8908         (dse_enter_block): ... this, call uncprop_into_successor_phis.
8909         (dse_finalize_block): Rename to...
8910         (dse_leave_block): ... this.
8911         (tree_ssa_uncprop): Simplify initialization of walk_data.
8912         * Makefile.in: Adjust dependencies.
8913
8914 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
8915
8916         * arm.md (casesi): Fix test for Thumb1.
8917         (thumb1_casesi_internal_pic): Likewise.
8918         (thumb1_casesi_dispatch): Likewise.
8919
8920 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
8921
8922         * config/arm/arm-cores.def: Added core cortex-m0.
8923         * config/arm/arm-tune.md: Regenerated.
8924         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
8925
8926 2009-06-26  DJ Delorie  <dj@redhat.com>
8927
8928         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
8929
8930         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
8931         the scheduler doesn't tag jump insns.
8932
8933 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
8934
8935         * c-decl.c (merge_decls): Re-indent.
8936
8937 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
8938
8939         PR c/39902
8940         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
8941         Special-case decimal float constants.
8942
8943 2009-06-26  Richard Henderson  <rth@redhat.com>
8944
8945         * function.h (struct function): Add cannot_be_copied_reason,
8946         and cannot_be_copied_set.
8947         * tree-inline.c (has_label_address_in_static_1): Rename from
8948         inline_forbidden_p_2; don't set inline_forbidden_reason here.
8949         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
8950         don't set inline_forbidden_reason.
8951         (copy_forbidden): New function, split out of inline_forbidden_p.
8952         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
8953         (inline_forbidden_p): Use copy_forbidden.
8954         (tree_versionable_function_p): Likewise.
8955         (inlinable_function_p): Merge into tree_inlinable_function_p.
8956         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
8957         * ipa-cp.c (ipcp_versionable_function_p): New function.
8958         (ipcp_cloning_candidate_p): Use it.
8959         (ipcp_node_modifiable_p): Likewise.
8960
8961 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
8962
8963         * builtins.c (expand_builtin_alloca): Handle builtin alloca
8964         that is marked not to be inlined. Remove flag_mudflap use.
8965         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
8966         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
8967
8968 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
8969
8970         PR bootstrap/40338
8971         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
8972         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
8973
8974 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
8975
8976         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
8977         shared libgcc.
8978         (__mingwthr_remove_key_dtor): Likewise.
8979
8980 2009-06-26  Richard Guenther  <rguenther@suse.de>
8981
8982         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
8983
8984 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8985
8986         PR middle-end/40525
8987         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
8988         try the non-cond_exec path also.
8989
8990 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8991
8992         PR target/40468
8993         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
8994         (output_cbranch): Use new functions.
8995         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
8996         Likewise.
8997
8998 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
8999             Pat Haugen  <pthaugen@us.ibm.com>
9000             Revital Eres <ERES@il.ibm.com>
9001
9002         * config/rs6000/rs6000.c (print_operand): Correct lossage message
9003         for %c error.  Add %x support to print VSX registers as a unified
9004         register set, instead of separate float and altivec registers.
9005         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
9006         %y case, and add support for VSX pre-modify addresses.
9007         (output_toc): Add assert for CONST containing an integer constant
9008         in the PLUS case.
9009         (rs6000_adjust_cost): Add POWER7 support.
9010         (insn_must_be_first_in_group): Ditto.
9011         (insn_must_be_last_in_group): Ditto.
9012         (rs6000_emit_popcount): Ditto.
9013         (rs6000_vector_mode_supported_p): Ditto.
9014
9015         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
9016         Change some of the functions called by macros to being called
9017         through a pointer, so debug functions can be inserted if
9018         -mdebug=addr or -mdebug=cost.
9019         (rs6000_preferred_reload_class_ptr): Ditto.
9020         (rs6000_secondary_reload_class_ptr): Ditto.
9021         (rs6000_secondary_memory_needed_ptr): Ditto.
9022         (rs6000_cannot_change_mode_class_ptr): Ditto.
9023         (rs6000_secondary_reload_inner): Ditto.
9024         (rs6000_legitimize_reload_address): Ditto.
9025         (rs6000_legitimize_reload_address_ptr): Ditto.
9026         (rs6000_mode_dependent_address): Ditto.
9027         (rs6000_mode_dependent_address_ptr): Ditto.
9028
9029         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
9030         function to return true if the mode allows reg + integer
9031         addresses.
9032         (virtual_stack_registers_memory_p): New function to return true if
9033         the address refers to a virtual stack register.
9034         (rs6000_legitimate_offset_address_p): Move code to say whether a
9035         mode supports reg+int addressing to reg_offset_addressing_ok_p and
9036         call it.
9037         (rs6000_legitimate_address_p): Add checks for modes that only can
9038         do reg+reg addressing.  Start adding VSX support.
9039         (rs6000_legitimize_reload_address): Ditto.
9040         (rs6000_legitimize_address): Ditto.
9041         (rs6000_debug_legitimate_address_p): New debug functions for
9042         -mdebug=addr and -mdebug=cost.
9043         (rs6000_debug_rtx_costs): Ditto.
9044         (rs6000_debug_address_costs): Ditto.
9045         (rs6000_debug_adjust_cost): Ditto.
9046         (rs6000_debug_legitimize_address): Ditto.
9047         (rs6000_legitimize_reload_address_ptr): Point to call normal
9048         function or debug function.  Make functions called via pointer
9049         static.
9050         (rs6000_mode_dependent_address_ptr): Ditto.
9051         (rs6000_secondary_reload_class_ptr): Ditto.
9052         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
9053         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
9054         into a friendlier error.
9055         (rs6000_init_builtins): Add initial VSX support.
9056         (rs6000_adjust_cost): Fix some spacing issues.
9057
9058         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
9059         (REG_CLASS_NAMES): Ditto.
9060         (REG_CLASS_CONTENTS): Ditto.
9061         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
9062         pointer, to add -mdebug=addr support.
9063         (CANNOT_CHANGE_MODE_CLASS): Ditto.
9064         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
9065         -mdebug=addr support.
9066         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
9067         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
9068         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
9069
9070         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
9071         16-bit values.
9072         (bswapsi*): Set attribute types for load/store.  Add combiner
9073         patterns to eliminate zero extend on 64-bit.
9074         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
9075         stdbrx if the hardware supports those instructions.
9076
9077 2009-06-25  Ian Lance Taylor  <iant@google.com>
9078
9079         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
9080         (Link Options): Document -static-libstdc++.
9081
9082 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9083
9084         PR target/38731
9085         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
9086         DATA_ALIGNMENT instead.
9087
9088 2009-06-25  Richard Guenther  <rguenther@suse.de>
9089
9090         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
9091         indirect references against the callused/escaped solutions.
9092         (call_may_clobber_ref_p_1): Likewise.
9093
9094 2009-06-25  Martin Jambor  <mjambor@suse.cz>
9095
9096         PR tree-optimization/40493
9097         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
9098         (enum unscalarized_data_handling): New type.
9099         (handle_unscalarized_data_in_subtree): Return what has been done.
9100         (load_assign_lhs_subreplacements): Handle left flushes differently.
9101         (sra_modify_assign): Use unscalarized_data_handling, simplified
9102         condition determining whether to remove the statement.
9103
9104 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
9105
9106         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
9107         excerpt - @ should be doubled for texinfo.
9108
9109 2009-06-24  Ian Lance Taylor  <iant@google.com>
9110
9111         * config/arc/arc.c: Include "df.h".
9112         (arc_attribute_table): Make static.  Move higher in file.
9113         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
9114         (output_shift): Initialize n later to avoid warning.
9115         * config/arm/arm.c (arm_attribute_table): Make static.  Move
9116         higher in file.
9117         * config/avr/avr.c (avr_attribute_table): Make static.  Move
9118         higher in file.
9119         (reg_class_tab): Change array type from int to enum reg_class.
9120         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
9121         LABEL_REF.
9122         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
9123         (lshrhi3_out): Likewise.
9124         (class_likely_spilled_p): Change return type to bool.
9125         (avr_rtx_costs): Use local code variable with enum type.
9126         * config/avr/avr.md (movmemhi): Use add_reg_note.
9127         (andhi3, andsi3): Don't use AS2 with "and".
9128         (iorhi3, iorsi3): Don't use AS2 with "or".
9129         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
9130         * config/crx/crx.c: Include "df.h".
9131         (crx_attribute_table): Make static.
9132         * config/m32r/m32r.c: Include "df.h".
9133         (m32r_attribute_table): Make static.  Move higher in file.
9134         (pop): Use add_reg_note.
9135         (block_move_call): Change 0 to LCT_NORMAL in function call.
9136         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
9137         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
9138         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
9139         declare, not just when TREE_CODE is defined.
9140         * config/m68hc11/m68hc11.c: Include "expr.h".
9141         (m68hc11_attribute_table): Make static.  Move higher in file.
9142         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
9143         function call.
9144         (m68hc11_register_indirect_p): Likewise.
9145         (m68hc11_function_arg_padding): Change return type to enum
9146         direction.
9147         (emit_move_after_reload): Use add_reg_note.
9148         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
9149         (m68hc11_split_logical): Likewise.
9150         (m68hc11_rtx_costs): Add local code_and outer_code variables with
9151         enum type.
9152         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
9153         to VOIDmode in function call.
9154         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
9155         tree is defined.
9156         (m68hc11_split_logical): Update declaration.
9157         (m68hc11_function_arg_padding): Update declaration.
9158         * config/mcore/mcore.c (regno_reg_class): Change form array of int
9159         to array of enum reg_class.
9160         (mcore_attribute_table): Make static.  Move higher in file.
9161         (mcore_rtx_costs): Add cast to enum type.
9162         * config/mcore/mcore.h (regno_reg_class): Update declaration.
9163         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
9164         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
9165         in file.
9166         * config/sh/predicates.md (trapping_target_operand): Rename and to
9167         and_expr.
9168         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
9169         higher in file.
9170         * config/spu/spu.c (spu_attribute_table): Make static.  Move
9171         higher in file.
9172         * config/v850/v850.c (v850_attribute_table): Make static.  Move
9173         higher in file.
9174         (v850_rtx_costs): Use local code with enum type.
9175         (expand_epilogue): Add cast.
9176         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
9177
9178 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
9179
9180         PR target/40515
9181         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
9182         -m2a-single-only and -m2a-nofpu.
9183         * config/sh/sh.opt: Document m2a generates FPU code.
9184
9185 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
9186
9187         * defaults.h (CAN_ELIMINATE): Provide default.
9188         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
9189         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
9190         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
9191         * config/spu/spu.h (CAN_ELIMINATE): Delete.
9192         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
9193         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
9194         * config/cris/cris.h (CAN_ELIMINATE): Delete.
9195         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
9196         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
9197         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
9198
9199 2009-06-24  DJ Delorie  <dj@redhat.com>
9200
9201         * mep-ext-cop.cpu: Fix copyright notice.
9202         * mep-default: Fix copyright notice.
9203         * mep-core: Fix copyright notice.
9204         * mep: Fix copyright notice.
9205         * mep-ivc2: Fix copyright notice.
9206         * mep-c5: Fix copyright notice.
9207
9208 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
9209
9210         * doc/contrib.texi (Contributors):
9211
9212 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
9213
9214         PR middle-end/40501
9215         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
9216         src and dst operands if necessary.
9217
9218 2009-06-23  DJ Delorie  <dj@redhat.com>
9219
9220         Add MeP port.
9221         * config.gcc: Add mep support.
9222         * recog.c: Resurrect validate_replace_rtx_subexp().
9223         * recog.h: Likewise.
9224         * config/mep/: Add new port:
9225         * config/mep/constraints.md: New file.
9226         * config/mep/default.h: New file.
9227         * config/mep/intrinsics.h: New file.
9228         * config/mep/intrinsics.md: New file.
9229         * config/mep/ivc2-template.h: New file.
9230         * config/mep/mep-c5.cpu: New file.
9231         * config/mep/mep-core.cpu: New file.
9232         * config/mep/mep-default.cpu: New file.
9233         * config/mep/mep-ext-cop.cpu: New file.
9234         * config/mep/mep-intrin.h: New file.
9235         * config/mep/mep-ivc2.cpu: New file.
9236         * config/mep/mep-lib1.asm: New file.
9237         * config/mep/mep-lib2.c: New file.
9238         * config/mep/mep-pragma.c: New file.
9239         * config/mep/mep-protos.h: New file.
9240         * config/mep/mep-tramp.c: New file.
9241         * config/mep/mep.c: New file.
9242         * config/mep/mep.cpu: New file.
9243         * config/mep/mep.h: New file.
9244         * config/mep/mep.md: New file.
9245         * config/mep/mep.opt: New file.
9246         * config/mep/predicates.md: New file.
9247         * config/mep/t-mep: New file.
9248
9249 2009-06-23  Ian Lance Taylor  <iant@google.com>
9250
9251         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
9252         from loose_warn into c_loose_warn and from strict_warn into
9253         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
9254         --enable-build-with-cxx.  Set and substitute
9255         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
9256         * Makefile.in (CXXFLAGS): New variable.
9257         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9258         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
9259         the default is the same as $(STRICT_WARN).
9260         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9261         (CXX): New variable.
9262         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9263         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9264         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9265         (HOST_LIBS): New variable.
9266         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9267         (ALL_CXXFLAGS): New variable.
9268         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
9269         * doc/install.texi (Configuration): Document
9270         --enable-build-with-cxx, --with-stage1-ldflags,
9271         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
9272         * configure: Rebuild.
9273
9274 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9275
9276         * config/arm/arm.c (arm_override_options): Fix braces and formatting
9277         from previous commit.
9278
9279 2009-06-23  Ian Lance Taylor  <iant@google.com>
9280
9281         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
9282
9283 2009-06-23  Ian Lance Taylor  <iant@google.com>
9284
9285         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
9286         with ATTRIBUTE_UNUSED.
9287
9288 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
9289             Pat Haugen  <pthaugen@us.ibm.com>
9290             Revital Eres  <eres@il.ibm.com>
9291
9292         * config.in (HAVE_AS_POPCNTD): Add default definition.
9293         (HAVE_AS_LWSYNC): Ditto.
9294
9295         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
9296         release number.
9297         (gcc_cv_as_powerpc_cmpb): Ditto.
9298         (gcc_cv_as_powerpc_dfp): Ditto.
9299         (gcc_cv_as_powerpc_vsx): Ditto.
9300         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
9301         supporting the popcntd/lwsync instructions.
9302         (gcc_cv_as_powerpc_lwsync): Ditto.
9303         * configure: Regenerate.
9304
9305         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
9306         -mcpu=native and -mcpu=power7.
9307         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
9308
9309         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
9310         a variable instead of a mask to reduce the number of mask bits.
9311         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
9312         (-mbit-word): Ditto.
9313         (-mregnames): Ditto.
9314         * config/rs6000/rs6000.opt (-mupdate): Ditto.
9315         (-mfused-madd): Ditto.
9316
9317         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
9318         2.06 instructions.
9319         (-mvsx): New switch for VSX instructions.
9320         (-misel): Move from a variable to a mask to allow it to be set by
9321         -mcpu=.
9322
9323         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
9324         function declaration to an array declaration.
9325         (rs6000_hard_regno_nregs): New external array declaration.
9326
9327         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
9328         files included by rs6000.md.
9329
9330         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9331         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9332
9333         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9334         a target mask.
9335         (rs6000_debug_reg): New -mdebug= variables.
9336         (rs6000_debug_addr): Ditto.
9337         (rs6000_debug_cost): Ditto.
9338         (rs6000_pmode): New variable to hold Pmode.
9339         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9340         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9341         calculated at compiler start.
9342         (rs6000_hard_regno_nregs): Change function to an array which holds
9343         HARD_REGNO_NREGS calculated at compiler start.
9344         (rs6000_explicit_options): Delete isel field.
9345         (rs6000_vector_unit): New array to hold which vector unit
9346         supports arithmetic options for a given type.
9347         (rs6000_vector_mem): New array to hold which vector unit supports
9348         memory reference operations for a given type.
9349         (rs6000_vector_align): New array to given the alignment of each
9350         vector type.
9351         (power7_cost): New basic costs for power7.
9352         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9353         (rs6000_hard_regno_nregs_internal): New function, moved from
9354         HARD_REGNO_NREGS, to calculate the number of registers each hard
9355         register takes for each type.
9356         (rs6000_debug_reg_print): New function for -mdebug=reg support.
9357         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9358         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9359         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9360         unit information here so it is calculated once at compiler startup
9361         time.
9362         (rs6000_override_options): Make -misel a target mask.  Add more
9363         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
9364         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
9365         -mdebug=cost.
9366         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9367         (rs6000_handle_option): Move -misel from variable to target mask.
9368         (rs6000_builtin_mask_for_load): Add VSX support.
9369         (rs6000_conditional_register_usage): Ditto.
9370         (USE_ALTIVEC_FOR_ARG_P): Ditto.
9371         (function_arg_boundary): Ditto.
9372         (rs6000_expand_builtin): Ditto.
9373         (def_builtin): Make abort message a little friendlier.
9374         (rs6000_emit_int_cmove): Add support for 64-bit isel.
9375
9376         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9377         assembler support the popcntd instruction instead of a vsx
9378         instruction to enable power7 support.
9379         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9380         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9381         option to the assembler if -mcpu=native.
9382         (ASM_CPU_NATIVE_SPEC): Ditto.
9383         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9384         ISA 2.06 features.
9385         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9386         the lwsync instruction.
9387         (enum processor_type): Add PROCESSOR_POWER7.
9388         (rs6000_debug_reg): New -mdebug= options.
9389         (rs6000_debug_addr): Ditto.
9390         (rs6000_debug_cost): Ditto.
9391         (rs6000_isel): Delete.
9392         (enum rs6000_vector): New enum to say what vector unit we have.
9393         (VECTOR_UNIT_*): New macros to say which vector unit has
9394         arithmetic operations for a given type.
9395         (VECTOR_MEM_*): New macros to say which vector unit has memory
9396         operations for a given type.
9397         (TARGET_LDBRX): Whether the machine supports the ldbrx
9398         instruction.
9399         (TARGET_ISEL): Delete, -misel moved to be a mask.
9400         (TARGET_ISEL64): New macro for 64-bit isel support.
9401         (UNITS_PER_VSX_WORD): New macro.
9402         (POINTER_SIZE): Move to be an external variable, rather than
9403         calculating whether we are generating 32 ot 64-bit code.
9404         (Pmode): Ditto.
9405         (STACK_BOUNDARY): Add VSX support.
9406         (LOCAL_ALIGNMENT): Ditto.
9407         (SLOW_UNALIGNED_ACCESS): Ditto.
9408         (VSX_REGNO_P): New macro for VSX support.
9409         (VFLOAT_REGNO_P): Ditto.
9410         (VINT_REGNO_P): Ditto.
9411         (VLOGICAL_REGNO_P): Ditto.
9412         (VSX_VECTOR_MODE): Ditto.
9413         (VSX_SCALAR_MODE): Ditto.
9414         (VSX_MODE): Ditto.
9415         (VSX_MOVE_MODE): Ditto.
9416         (VSX_REG_CLASS_P): Ditto.
9417         (HARD_REGNO_NREGS): Instead of calling a function, use an array
9418         lookup.
9419         (UNITS_PER_SIMD_WORD): Add VSX support.
9420         (MODES_TIEABLE_P): Ditto.
9421         (STARTING_FRAME_OFFSET): Ditto.
9422         (STACK_DYNAMIC_OFFSET): Ditto.
9423         (EPILOGUE_USES): Ditto.
9424         (REGNO_REG_CLASS): Move to array lookup.
9425         (CLASS_MAX_NREGS): Ditto.
9426         (rs6000_vector_reg_class): Add declaration.
9427         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9428         overlap with the floating point and Altivec registers.
9429
9430         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9431
9432         * config/rs6000/driver-rs6000.c (asm_names): New static array to
9433         give the appropriate asm switches if -mcpu=native.
9434         (host_detect_local_cpu): Add support for "asm".
9435         (host_detect_local_cpu): Follow GNU code guidelines for name.
9436
9437         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9438         -mbit-word to a variable instead of being a target mask.
9439
9440         * config/rs6000/sync.md (lwsync): If the assembler supports it,
9441         emit the lwsync instruction instead of emitting the instruction as
9442         an integer constant.
9443
9444         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9445         fixuns_trundfsi2, move expander into rs6000.md.
9446
9447         * config/rs6000/rs6000.md (cpu): Add power7.
9448         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9449         (logical predicate patterns): Change the single instruction
9450         primitives that set CR0 to be fast_compare instead of compare.
9451         (norsi*): Ditto.
9452         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9453         (popcntddi2): Ditto.
9454         (popcount<mode>): Ditto.
9455         (floating multiply/add insns): Name the floating point
9456         multiply/add insns.
9457         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9458         (isel_unsigned_<mode>): Ditto.
9459         (fixuns_trundfsi2): Move expander here from spe.md.
9460         (smindi3): Define if we have -misel on 64-bit systems.
9461         (smaxdi3): Ditto.
9462         (umindi3): Ditto.
9463         (umaxdi3): Ditto.
9464
9465 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
9466
9467         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9468         extra_objs.
9469         * config/avr/avr.c (avr_current_device): New variable.
9470         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9471         (avr_arch, mcu_type_s): Move to avr.h.
9472         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9473         default_data_section_start fields.
9474         (avr_arch): Moved from avr.c.
9475         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9476         library_name fields.
9477         (avr_current_device, avr_mcu_types, avr_arch_types,
9478         avr_device_to_arch, avr_device_to_data_start,
9479         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9480         (EXTRA_SPEC_FUNCTIONS): Define.
9481         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9482         options mapping. Use device_to_arch and device_to_data_start insted.
9483         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9484         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9485         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9486         * config/avr/driver-avr.c: New file.
9487         * config/avr/avr-devices.c: New file.
9488
9489 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
9490
9491         * var-tracking.c (unshare_variable): Force initialized to
9492         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
9493         (set_variable_part): Likewise.
9494         (struct variable_union_info): Remove pos_src field.
9495         (vui_vec, vui_allocated): New variables.
9496         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
9497         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
9498         == 1 use a simpler sorting algorithm.  Compute pos field right
9499         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
9500         Avoid quadratic comparison if !flag_var_tracking_uninit.
9501         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
9502         unshare_variable unconditionally.
9503         (dataflow_set_different_2): Removed.
9504         (dataflow_set_different): Don't traverse second hash table.
9505         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
9506         unconditionally to var_reg_set or var_mem_set.
9507         (emit_notes_in_bb): Likewise.
9508         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
9509         unshare_variable.
9510         (emit_note_insn_var_location): Don't set initialized to
9511         VAR_INIT_STATUS_INITIALIZED early.
9512         (vt_finalize): Free vui_vec if needed, clear vui_vec and
9513         vui_allocated.
9514         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
9515
9516         * tree-object-size.c (addr_object_size): Instead of checking
9517         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
9518         are no FIELD_DECLs following it.
9519
9520 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
9521
9522         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
9523         order to match bswaps with signed source operands.
9524
9525 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9526
9527         * sdbout.c (sdbout_one_type): Fix braces in switch.
9528
9529 2009-06-23  Richard Guenther  <rguenther@suse.de>
9530
9531         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
9532         member.
9533         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
9534         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
9535         var_callused, callused_tree, var_storedanything, storedanything_tree,
9536         var_integer, integer_tree): Remove global variables.
9537         (new_var_info): Do not pass new id, append the new var to the
9538         global variable vector.
9539         (do_ds_constraint): Use is_global_var member of the variable-info.
9540         (new_scalar_tmp_constraint_exp): Adjust.
9541         (create_function_info_for): Likewise.
9542         (create_variable_info_for): Likewise.
9543         (find_what_var_points_to): Remove dead code.
9544         (init_base_vars): Simplify.
9545         (compute_points_to_sets): Adjust.
9546
9547 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9548
9549         * combine.c (try_combine): Dump information about the insns we're
9550         combining.
9551
9552 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9553
9554         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
9555         check when calling force_to_mode on TRUNCATE's operand.
9556
9557 2009-06-22  Ian Lance Taylor  <iant@google.com>
9558
9559         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
9560
9561 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9562
9563         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
9564
9565 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9566
9567         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
9568         override library linkage flags such as -static-libgcc or
9569         -shared-libgcc.
9570
9571 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
9572
9573         * config/m68k/m68k-devices.def: Add line for MCF5221x.
9574
9575 2009-06-22  Ian Lance Taylor  <iant@google.com>
9576
9577         * config/linux.opt: Put mglibc ahead of muclibc.
9578
9579         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
9580         for duplicate decls.
9581
9582 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9583
9584         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
9585
9586 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9587
9588         PR objc/28050
9589         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
9590         instead of NULL if a parser error occurs.
9591
9592 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9593
9594         * dwarf2out.c (dwarf2_debug_hooks): Initialize
9595         non-DWARF2_DEBUGGING_INFO version.
9596
9597 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
9598
9599         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
9600         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
9601
9602         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
9603         (LIBGCC2_TF_CEXT): Define.
9604         (TF_SIZE): Define.
9605
9606 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9607
9608         PR target/40463
9609         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
9610
9611 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9612
9613         * config/arm/arm.c (arm_override_options): Disable
9614         -mcaller-super-interworking and -mcallee-super-interworking.
9615         * doc/invoke.texi (ARM Options): Document this.
9616
9617 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
9618
9619         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
9620         * config/arm/constraints.md (j): New constraint for movw operands.
9621         (N): Remove thumb2 meaning.
9622         * config/arm/arm.md (*arm_movw): Delete.
9623         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
9624         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
9625         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
9626
9627 2009-06-22  Martin Jambor  <mjambor@suse.cz>
9628
9629         PR tree-optimization/40492
9630         * tree-sra.c (sra_modify_assign): Pass zero offsets to
9631         build_ref_for_offset.
9632
9633 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
9634
9635         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
9636         JUMP_TABLE_DATA_P predicates where applicable.
9637         * auto-inc-dec.c: Ditto.
9638         * builtins.c: Ditto.
9639         * caller-save.c: Ditto.
9640         * calls.c: Ditto.
9641         * cfgcleanup.c: Ditto.
9642         * cfglayout.c: Ditto.
9643         * cfgrtl.c: Ditto.
9644         * combine.c: Ditto.
9645         * combine-stack-adj.c: Ditto.
9646         * cse.c: Ditto.
9647         * cselib.c: Ditto.
9648         * dbxout.c: Ditto.
9649         * df-scan.c: Ditto.
9650         * dse.c: Ditto.
9651         * dwarf2asm.c: Ditto.
9652         * dwarf2out.c: Ditto.
9653         * emit-rtl.c: Ditto.
9654         * except.c: Ditto.
9655         * explow.c: Ditto.
9656         * expmed.c: Ditto.
9657         * expr.c: Ditto.
9658         * final.c: Ditto.
9659         * function.c: Ditto.
9660         * fwprop.c: Ditto.
9661         * gcse.c: Ditto.
9662         * genpreds.c: Ditto.
9663         * genrecog.c: Ditto.
9664         * ifcvt.c: Ditto.
9665         * ira-costs.c: Ditto.
9666         * ira-lives.c: Ditto.
9667         * jump.c: Ditto.
9668         * loop-iv.c: Ditto.
9669         * lower-subreg.c: Ditto.
9670         * modulo-sched.c: Ditto.
9671         * optabs.c: Ditto.
9672         * postreload.c: Ditto.
9673         * print-rtl.c: Ditto.
9674         * recog.c: Ditto.
9675         * reginfo.c: Ditto.
9676         * regmove.c: Ditto.
9677         * reload1.c: Ditto.
9678         * reload.c: Ditto.
9679         * reorg.c: Ditto.
9680         * rtlanal.c: Ditto.
9681         * rtl.c: Ditto.
9682         * sched-vis.c: Ditto.
9683         * sdbout.c: Ditto.
9684         * sel-sched-ir.c: Ditto.
9685         * simplify-rtx.c: Ditto.
9686         * targhooks.c: Ditto.
9687         * var-tracking.c: Ditto.
9688         * vmsdbgout.c: Ditto.
9689
9690 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9691
9692         * Makefile.in (install-plugin): Always use DESTDIR.
9693
9694 2009-06-22  Olivier Hainque  <hainque@adacore.com>
9695
9696         * config/pa/pa.c (output_call): Don't optimize post call jumps
9697         into return address adjustments if the call may throw.
9698
9699 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
9700
9701         * arm.c (thumb1_output_casesi): New function.
9702         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
9703         optimizing for size or PIC.
9704         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
9705         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
9706         (casesi): Handle Thumb-1 when optimizing for size or PIC.
9707         (thumb1_casesi_internal_pic): New expand rule.
9708         (thumb1_casesi_dispatch): New pattern.
9709         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
9710         thumb-1 mode.
9711         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
9712         in the text seciton when PIC or optimizing for size.
9713         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
9714         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
9715         preservation properties of code.
9716         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
9717         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
9718         (__gnu_thumb1_case_si): New function.
9719         * t-arm (LIB1ASMSRC): Define here.
9720         (LIB1ASMFUNCS): Add some common functions.
9721         * t-arm-elf (LIB1ASMSRC): Delete.
9722         (LIB1ASMFUNCS): Append to existing set.
9723         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9724         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9725         * t-symbian (LIB1ASMFUNCS): Likewise.
9726         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9727         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9728
9729 2009-06-21  Richard Guenther  <rguenther@suse.de>
9730
9731         PR tree-optimization/38729
9732         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
9733         to loops with a single exit if -fno-expensive-optimizations.
9734
9735 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
9736
9737         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
9738         (dataflow_set): Change vars type from htab_t to shared_hash.
9739         (shared_hash_pool, empty_shared_hash): New variables.
9740         (vars_clear): Removed.
9741         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
9742         shared_hash_find_slot_unshare, shared_hash_find_slot,
9743         shared_hash_find_slot_noinsert, shared_hash_find): New
9744         static inlines.
9745         (shared_hash_unshare, shared_hash_destroy): New functions.
9746         (unshare_variable): Unshare set->vars if shared, use
9747         shared_hash_htab.
9748         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
9749         (get_init_value, find_src_set_src, dump_dataflow_set,
9750         clobber_variable_part, emit_notes_for_differences): Use
9751         shared_hash_htab.
9752         (dataflow_set_init): Remove second argument, set vars to
9753         empty_shared_hash instead of creating a new htab.
9754         (dataflow_set_clear): Call shared_hash_destroy and set vars
9755         to empty_shared_hash instead of calling vars_clear.
9756         (dataflow_set_copy): Don't call vars_copy, instead just share
9757         the src htab with dst.
9758         (variable_union): Use shared_hash_*, use initially NO_INSERT
9759         lookup if set->vars is shared.  Don't keep slot cleared before
9760         calling unshare_variable.  Unshare set->vars if needed.
9761         Even ->refcount == 1 vars must be unshared if set->vars is shared
9762         and var needs to be modified.
9763         (variable_canonicalize): New function.
9764         (dataflow_set_union): If dst->vars is empty, just share src->vars
9765         with dst->vars and traverse with variable_canonicalize to canonicalize
9766         and unshare what is needed.
9767         (dataflow_set_different): If old_set and new_set use the same shared
9768         htab, they aren't different.  If number of htab elements is different,
9769         htabs are different.  Use shared_hash_*.
9770         (dataflow_set_destroy): Call shared_hash_destroy instead of
9771         htab_delete.
9772         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
9773         second argument to dataflow_set_init.
9774         (vt_initialize): Likewise.  Initialize shared_hash_pool and
9775         empty_shared_hash, move bb in/out initialization afterwards.
9776         Use variable_htab_free instead of NULL as changed_variables del hook.
9777         (variable_was_changed): Change type of second argument to pointer to
9778         dataflow_set.  When inserting var into changed_variables, bump
9779         refcount.  Unshare set->vars if set is shared htab and slot needs to
9780         be cleared.
9781         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
9782         lookup if set->vars is shared.  Unshare set->vars if needed.
9783         Even ->refcount == 1 vars must be unshared if set->vars is shared
9784         and var needs to be modified.  Adjust variable_was_changed caller.
9785         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
9786         vars must be unshared if set->vars is shared and var needs to be
9787         modified.  Adjust variable_was_changed caller.
9788         (emit_note_insn_var_location): Don't pool_free var.
9789         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
9790         instead of 1.
9791         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
9792         free_alloc_pool on shared_hash_pool.
9793
9794 2009-06-20  Anthony Green  <green@moxielogic.com>
9795
9796         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
9797         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
9798
9799 2009-06-20  Richard Guenther  <rguenther@suse.de>
9800
9801         * tree-ssa-structalias.c (find_func_aliases): For memset use
9802         a constraint from NULL if we memset to zero.
9803         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
9804         we explicitly handle that do not read from memory.
9805         (call_may_clobber_ref_p_1): Properly handle builtins that may
9806         set errno.
9807
9808 2009-06-20  Richard Guenther  <rguenther@suse.de>
9809
9810         PR tree-optimization/40495
9811         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
9812         (new_scalar_tmp_constraint_exp): New function.
9813         (process_constraint): Do not create temporary decls.
9814         (process_all_all_constraints): Likewise.
9815         (handle_const_call): Likewise.
9816         (create_function_info_for): Do not set decl.
9817
9818 2009-06-19  Ian Lance Taylor  <iant@google.com>
9819
9820         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
9821         (rs6000_attribute_table): Make static; move before use.
9822
9823 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
9824
9825         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
9826         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
9827         Propagate the TREE_READONLY flag without overwriting it.
9828         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
9829         Propagate the TREE_READONLY flag onto the result.
9830         (process_call_operands): Move around.  Use correct constant value.
9831
9832 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9833
9834         PR target/40482
9835         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
9836         * config/arm/arm.md: Likewise.
9837
9838 2009-06-19  Ian Lance Taylor  <iant@google.com>
9839
9840         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
9841         to GIMPLE_ERROR_MARK.
9842
9843         * c-typeck.c (build_conditional_expr): Add op1_original_type and
9844         op2_original_type parameters.  Warn about using different enum types.
9845         * c-parser.c (c_parser_conditional_expression): Pass original
9846         types to build_conditional_expr.
9847         * c-tree.h (build_conditional_expr): Update declaration.
9848
9849 2009-06-19  Ian Lance Taylor  <iant@google.com>
9850
9851         * config/i386/i386.c (ix86_function_specific_save): Test that
9852         fields match values, rather than testing the values are in a
9853         certain range.
9854
9855 2009-06-19  Richard Guenther  <rguenther@suse.de>
9856
9857         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
9858         ADDR_EXPR pointers.
9859         (ptr_derefs_may_alias_p): Likewise.
9860         (ptr_deref_may_alias_ref_p_1): New function.
9861         (ptr_deref_may_alias_ref_p): Likewise.
9862         (ref_maybe_used_by_call_p_1): Handle builtins that are not
9863         covered by looking at the ESCAPED solution.
9864         (call_may_clobber_ref_p_1): Likewise.
9865         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
9866         Handle NULL_TREE offset.  Do not produce redundant constraints.
9867         (process_all_all_constraints): New helper function.
9868         (do_structure_copy): Use it.
9869         (handle_lhs_call): Likewise.
9870         (find_func_aliases): Handle some builtins with pointer arguments
9871         and/or return values explicitly.
9872
9873 2009-06-19  Ian Lance Taylor  <iant@google.com>
9874
9875         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
9876
9877 2009-06-19  Ian Lance Taylor  <iant@google.com>
9878
9879         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
9880
9881 2009-06-19  Ian Lance Taylor  <iant@google.com>
9882
9883         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
9884         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
9885         version.
9886
9887         * c-decl.c (finish_decl): If -Wc++-compat, warn about
9888         uninitialized const.
9889
9890 2009-06-19  Ian Lance Taylor  <iant@google.com>
9891
9892         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
9893         all uses.
9894
9895         * c-decl.c (in_struct, struct_types): Remove.
9896         (struct c_binding): Add in_struct field.
9897         (c_binding_ptr): Define type, along with VEC.
9898         (struct c_struct_parse_info): Define.
9899         (struct_parse_info): New static variable.
9900         (bind): Initialize in_struct field.
9901         (start_struct): Remove enclosing_in_struct and
9902         enclosing_struct_types parameters.  Add
9903         enclosing_struct_parse_info parameter.  Change all callers.  Set
9904         struct_parse_info rather than in_struct and struct_types.
9905         (grokfield): If -Wc++-compat and there is a symbol binding for the
9906         field name, set the in_struct flag and push it on the
9907         struct_parse_info->fields vector.
9908         (warn_cxx_compat_finish_struct): New static function.
9909         (finish_struct): Remove enclosing_in_struct and
9910         enclosing_struct_types parameters.  Add
9911         enclosing_struct_parse_info parameter.  Change all callers.  Don't
9912         set C_TYPE_DEFINED_IN_STRUCT here.  Call
9913         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
9914         parameter.  Only push on struct_types if warn_cxx_compat.
9915         (finish_enum): Only push on struct_types if warn_cxx_compat.
9916         (declspecs_add_type): Add loc parameter.  Change all callers.
9917         Change all error calls to error_at.  Pass loc, not input_location,
9918         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
9919         defined in a struct.  If -Wc++-compat and parsing a struct, record
9920         that a typedef name was used.
9921         * c-parser.c (c_parser_declspecs): Get location to pass to
9922         declspecs_add_type.
9923         (c_parser_struct_or_union_specifier): Update calls to start_struct
9924         and finish_struct.
9925         * c-tree.h (struct c_struct_parse_info): Declare.
9926         (finish_struct, start_struct): Update declarations.
9927         (declspecs_add_type): Update declaration.
9928
9929 2009-06-19  Ian Lance Taylor  <iant@google.com>
9930
9931         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
9932         variable with an anonymous type.
9933
9934 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9935
9936         * see.c: Remove for real.
9937
9938 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
9939
9940         * optabs.h (enum optab_index): Add new OTI_significand.
9941         (significand_optab): Define corresponding macro.
9942         * optabs.c (init_optabs): Initialize significand_optab.
9943         * genopinit.c (optabs): Implement significand_optab using
9944         significand?f2 patterns.
9945         * builtins.c (expand_builtin_mathfn): Handle
9946         BUILT_IN_SIGNIFICAND{,F,L}.
9947         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
9948         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
9949
9950         * config/i386/i386.md (significandxf2, significand<mode>2): New
9951         expanders to implement significandf, significand and significandl
9952         built-ins as inline x87 intrinsics.
9953
9954 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
9955
9956         * config/avr/avr.c (avr_override_options): Remove setting value of
9957         PARAM_INLINE_CALL_COST.
9958
9959 2009-06-18  Richard Henderson  <rth@redhat.com>
9960
9961         PR 40488
9962         * tree-pass.h (TDF_ASMNAME): New.
9963         * tree-dump.c (dump_options): Add asmname.
9964         * doc/invoke.texi: Document it.
9965
9966         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
9967         (dump_decl_name): ...here.
9968         (dump_function_name): New flags arg; mind TDF_ASMNAME.
9969         (dump_generic_node): Update dump_function_name calls.
9970         (print_call_name): New flags arg; update all dump calls.
9971         * diagnostic.h (print_call_name): Update.
9972         * gimple-pretty-print.c (dump_gimple_call): Update.
9973
9974 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
9975
9976         PR target/40470
9977         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
9978
9979 2009-06-18  Diego Novillo  <dnovillo@google.com>
9980
9981         * doc/plugins.texi: Document plugin_is_GPL_compatible.
9982         * plugin.c (str_license): Declare.
9983         (try_init_one_plugin): Assert that the symbol
9984         'plugin_is_GPL_compatible' exists.
9985
9986 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
9987
9988         * see.c: Remove.
9989         * Makefile.in (OBJS-common): Remove see.o.
9990         (see.o): Remove.
9991         * common.opt (fsee): Mark as preserved for backward compatibility.
9992         * opts.c (common_handle_option): Add OPT_fsee to the backward
9993         compatibility section.
9994         * passes.c (init_optimization_passes, pass_see): Remove pass.
9995         * timevar.def (TV_SEE): Remove.
9996         * tree-pass.h (pass_see): Remove declaration.
9997         * doc/invoke.texi (-fsee): Remove documentation.
9998
9999 2009-06-18  Martin Jambor  <mjambor@suse.cz>
10000
10001         * tree-sra.c: Include statistics.h
10002         (sra_stats): New variable.
10003         (sra_initialize): Clear sra_stats.
10004         (create_access_replacement): Increment sra_stats.replacements.
10005         (get_access_replacement): Do not return twice.
10006         (analyze_all_variable_accesses): Increment statistics counter by the
10007         number of scalarized aggregates.
10008         (generate_subtree_copies): Increment sra_stats.subtree_copies.
10009         (sra_modify_expr): Increment sra_stats.exprs.
10010         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
10011         (sra_modify_assign): Increment sra_stats.exprs,
10012         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
10013         (perform_intra_sra): Update statistics counters.
10014         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
10015
10016 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10017
10018         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
10019         (arm_scalar_mode_supported_p): New function.
10020
10021 2009-06-18  Paul Brook  <paul@codesourcery.com>
10022             Sandra Loosemore  <sandra@codesourcery.com>
10023
10024         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
10025         (__extendhfsf2, __truncsfhf2): Define.
10026         * config/arm/fp16.c: New file.
10027         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10028         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
10029
10030 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10031
10032         * doc/extend.texi (Half-Precision): New section.
10033         * doc/invoke.texi (Option Summary): List -mfp16-format.
10034         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
10035         * config/arm/arm.opt (mfp16-format=): New.
10036         * config/arm/arm.c: Include intl.h.
10037         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
10038         (TARGET_INVALID_RETURN_TYPE): Redefine.
10039         (TARGET_PROMOTED_TYPE): Redefine.
10040         (TARGET_CONVERT_TO_TYPE): Redefine.
10041         (arm_fp16_format): Define.
10042         (all_fpus): Add entry for neon-fp16.
10043         (fp_model_for_fpu): Likewise.
10044         (struct fp16_format): Declare.
10045         (all_fp16_formats): Define.
10046         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
10047         functions.
10048         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
10049         and no ldrh.
10050         (arm_legitimate_index_p): Treat HFmode like HImode.
10051         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
10052         (coproc_secondary_reload_class): Special-case HFmode.
10053         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
10054         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
10055         (arm_init_fp16_builtins): New.
10056         (arm_init_builtins): Call it.
10057         (arm_invalid_parameter_type): New.
10058         (arm_invalid_return_type): New.
10059         (arm_promoted_type): New.
10060         (arm_convert_to_type).
10061         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
10062         format.
10063         (arm_emit_fp16_const): New function.
10064         (arm_mangle_type): Mangle __fp16 as "Dh".
10065         * config/arm/arm.h (TARGET_VFPD32): Make it know about
10066         FPUTYPE_NEON_FP16.
10067         (TARGET_NEON_FP16): New.
10068         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
10069         (enum fputype): Add FPUTYPE_NEON_FP16.
10070         (enum arm_fp16_format_type): Declare.
10071         (arm_fp16_format): Declare.
10072         (LARGEST_EXPONENT_IS_NORMAL): Define.
10073         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
10074         * config/arm/arm-modes.def (HFmode): Define.
10075         * config/arm/vfp.md: (*movhf_vfp): New.
10076         (extendhfsf2): New.
10077         (truncsfhf2): New.
10078         * config/arm/arm.md: (fpu): Add neon_fp16.
10079         (floatsihf2, floatdihf2): New.
10080         (fix_trunchfsi2, fix_trunchfdi2): New.
10081         (truncdfhf2): New.
10082         (extendhfdf2): New.
10083         (movhf): New.
10084         (*arm32_movhf): New.
10085         (*thumb1_movhf): New.
10086         (consttable_2): Add check for HFmode constants.
10087         (consttable_4): Handle HFmode constants.
10088
10089 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
10090
10091         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
10092
10093 2009-06-17  Olivier Hainque  <hainque@adacore.com>
10094
10095         * collect2.c (main): Use CONST_CAST2 to perform char ** to
10096         const char ** conversion in AIX specific section.
10097
10098 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
10099
10100         * config/i386/i386.c (ix86_special_builtin_type): Remove
10101         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
10102         (bdesc_special_args): Updated.
10103         (ix86_init_mmx_sse_builtins): Likewise.
10104         (ix86_expand_special_args_builtin): Likewise.
10105
10106 2009-06-17  Richard Henderson  <rth@redhat.com>
10107
10108         * tree-pretty-print.c (maybe_dump_asm_name): New.
10109         (dump_decl_name): Use it.
10110         (PRINT_FUNCTION_NAME): Merge into...
10111         (dump_function_name): ... here.  Use maybe_dump_asm_name.
10112
10113 2009-06-17  Cary Coutant  <ccoutant@google.com>
10114
10115         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
10116         Change caller.
10117         * debug.c (struct gcc_debug_hooks): Change placeholder for
10118         source_line hook.
10119         (debug_nothing_int_charstar_int): Replaced by...
10120         (debug_nothing_int_charstar_int_bool): ...this.
10121         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
10122         source_line prototype.
10123         (debug_nothing_int_charstar_int): Replaced by...
10124         (debug_nothing_int_charstar_int_bool): ...this.
10125         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
10126         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
10127         Output is_stmt operand when necessary.
10128         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
10129         (notice_source_line): Add is_stmt parameter.
10130         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
10131         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
10132         Change callers.
10133         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
10134         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
10135
10136 2009-06-17  Ian Lance Taylor  <iant@google.com>
10137
10138         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
10139         Change all uses.
10140         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
10141         call uses.
10142
10143 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
10144
10145         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
10146         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
10147         tree_strip_sign_nop_conversions and
10148         tree_ssa_strip_useless_type_conversions rather than stripping
10149         the operations here.
10150         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
10151         Declare them.
10152         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
10153         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
10154         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
10155         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
10156         functions.
10157
10158 2009-06-17  Michael Eager  <eager@eagercon.com>
10159
10160         * config/rs6000/constraints.md (register_constraint "d"): New.
10161         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
10162         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
10163         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
10164         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
10165         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
10166         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
10167         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
10168         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
10169         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
10170         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
10171         __fctiwz): Same.
10172         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
10173         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
10174         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
10175         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
10176         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
10177         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
10178         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
10179         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
10180         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
10181         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
10182         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
10183         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
10184         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
10185         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
10186
10187 2009-06-16  Ian Lance Taylor  <iant@google.com>
10188
10189         * profile.c (total_num_never_executed): Don't define.
10190         (compute_branch_probabilities): Don't count or print
10191         num_never_executed.
10192         (init_branch_prob): Don't set total_num_never_executed.
10193         (end_branch_prob): Don't print total_num_never_executed.
10194
10195 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
10196
10197         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
10198
10199 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
10200
10201         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
10202         (nabstd2_fpr): Same.
10203
10204 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
10205
10206         * expr.c (expand_assignment): Change complex type check.
10207
10208 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
10209
10210         * doc/plugins.texi (Building GCC plugins): Added new section.
10211
10212 2009-06-17  Ian Lance Taylor  <iant@google.com>
10213
10214         * c-pch.c (get_ident): Don't set size of templ array.
10215         (pch_init): Don't set size of partial_pch array.
10216
10217         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
10218         string constant to intialize an array whose size is the length of
10219         the string.
10220
10221 2009-06-17  Richard Guenther  <rguenther@suse.de>
10222
10223         PR tree-optimization/40389
10224         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
10225         to addressable types.
10226         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
10227
10228 2009-06-17  Richard Guenther  <rguenther@suse.de>
10229
10230         PR middle-end/40460
10231         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
10232         if there is no evolution of left in the loop bail out.
10233         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
10234         chrec_fold_multiply.
10235
10236 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
10237             Janis Johnson  <janis187@us.ibm.com>
10238
10239         PR target/39254
10240         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
10241         for the symbol ref of a constant that is the source of a move
10242         - nor for any other not-obvious-label-ref constants.
10243
10244 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
10245
10246         * plugin.c (position_pass): Skip newly inserted pass during list
10247         traversal to avoid repeated insertion.
10248
10249 2009-06-16  Ian Lance Taylor  <iant@google.com>
10250
10251         * vec.h (VEC_stack_alloc): Define different version if
10252         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10253         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10254         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10255         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10256
10257 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
10258
10259         * config.gcc (extra_headers): Add ia32intrin.h for x86.
10260
10261         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10262         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10263         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10264         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10265         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10266         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10267         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10268         (bdesc_special_args): Add __builtin_ia32_rdtsc and
10269         __builtin_ia32_rdtscp.
10270         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
10271         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
10272         and __builtin_ia32_rorhi.
10273         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
10274         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10275         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10276         (ix86_expand_args_builtin): Likewise.
10277         (ix86_expand_special_args_builtin): Likewise.
10278
10279         * config/i386/i386.md (UNSPECV_RDTSCP): New.
10280         (UNSPECV_RDTSC): Likewise.
10281         (UNSPECV_RDPMC): Likewise.
10282         (*bsr): Renamed to ...
10283         (bsr): This
10284         (*bsr_rex64): Renamed to ...
10285         (bsr_rex64): This.
10286         (rdpmc): New.
10287         (*rdpmc): Likewise.
10288         (*rdpmc_rex64): Likewise.
10289         (rdtsc): Likewise.
10290         (*rdtsc): Likewise.
10291         (*rdtsc_rex64): Likewise.
10292         (rdtscp): Likewise.
10293         (*rdtscp): Likewise.
10294         (*rdtscp_rex64): Likewise.
10295
10296         * config/i386/ia32intrin.h: New.
10297
10298         * config/i386/x86intrin.h: Include <ia32intrin.h>.
10299
10300 2009-06-16  Ian Lance Taylor  <iant@google.com>
10301
10302         * ira-build.c (copy_info_to_removed_store_destinations):
10303         Initialize parent_a.
10304
10305 2009-06-16  Ian Lance Taylor  <iant@google.com>
10306
10307         * c-decl.c (grokdeclarator): Change size_varies to bool.
10308
10309 2009-06-16  Ian Lance Taylor  <iant@google.com>
10310
10311         * sel-sched.c: Make forward declarations of move_op_hooks and
10312         fur_hooks explicitly extern.
10313
10314 2009-06-16  Ian Lance Taylor  <iant@google.com>
10315
10316         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
10317         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
10318
10319 2009-06-16  Ian Lance Taylor  <iant@google.com>
10320
10321         * resource.c (mark_referenced_resources): Change
10322         include_delayed_effects parameter to bool.  Change all callers.
10323         (mark_end_of_function_resources): Likewise.
10324         * reorg.c (insn_references_resource_p): Likewise.
10325         (insn_sets_resource_p): Likewise.
10326         * resource.h (mark_referenced_resources): Update declaration.
10327         (mark_end_of_function_resources): Update declaration.
10328
10329 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10330
10331         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10332
10333 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10334
10335         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10336         GCC can bootstrap on AIX with GNU Binutils 2.20.
10337
10338 2009-06-16  Ian Lance Taylor  <iant@google.com>
10339
10340         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10341
10342 2009-06-16  Ian Lance Taylor  <iant@google.com>
10343
10344         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10345         inline, not extern inline.
10346         (exact_log2): Likewise.
10347         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10348         test CLZ_HWI.
10349         (exact_log2): Likewise, but don't test CTZ_HWI.
10350
10351 2009-06-16  Ian Lance Taylor  <iant@google.com>
10352
10353         * bitmap.c (bitmap_clear): Don't declare as inline.
10354         * gimple.c (gimplify_assign): Likewise.
10355         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10356         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10357         (sched_scan_info): Remove duplicate definition.
10358
10359 2009-06-16  Ian Lance Taylor  <iant@google.com>
10360
10361         * c-common.c (skip_evaluation): Don't define.
10362         (c_inhibit_evaluation_warnings): Define global variable.
10363         (overflow_warning): Check c_inhibit_evaluation_warnings rather
10364         than skip_evaluation.
10365         (convert_and_check, warn_for_div_by_zero): Likewise.
10366         * c-common.h (skip_evaluation): Don't declare.
10367         (c_inhibit_evaluation_warnings): Declare.
10368         * c-parser.c (c_parser_typeof_specifier): Set
10369         c_inhibit_evaluation_warnings rather than skip_evaluation.
10370         (c_parser_conditional_expression): Likewise.
10371         (c_parser_binary_expression): Likewise.
10372         (c_parser_sizeof_expression): Likewise.
10373         (c_parser_alignof_expression): Likewise.
10374         * c-typeck.c (build_indirect_ref): Check
10375         c_inhibit_evaluation_warnings rather than skip_evaluation.
10376         (build_conditional_expr, build_binary_op): Likewise.
10377
10378 2009-06-16  Richard Guenther  <rguenther@suse.de>
10379
10380         * tree-ssa-alias.c (is_escape_site): Remove.
10381         * tree-ssa-alias.h (enum escape_type): Remove.
10382         (is_escape_site): Likewise.
10383         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10384         via casts and asms without deferring to is_escape_site.
10385
10386 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
10387
10388         PR middle-end/40446
10389         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10390         use gen_lowpart if op0 has complex mode.
10391
10392 2009-06-16  Richard Guenther  <rguenther@suse.de>
10393
10394         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10395         variables add them to ESCAPED.
10396         (find_func_aliases): Do not make all indirectly stored values escaped.
10397
10398 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
10399
10400         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10401         make_decl_one_only.
10402
10403 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10404
10405         PR tree-optimization/40432
10406         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10407         check whether we need to force gimple register operand.
10408
10409 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10410
10411         PR tree-optimization/40413
10412         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10413         build_ref_for_offset.
10414         (propagate_subacesses_accross_link): Fix a typo in a comment.
10415
10416 2009-06-16  Ira Rosen  <irar@il.ibm.com>
10417
10418         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10419         with additional parameter.
10420         * tree-vectorizer.h (enum vect_def_type): Add new value
10421         vect_nested_cycle.
10422         (enum vect_relevant): Add comments.
10423         (vect_is_simple_reduction): Add new argument.
10424         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10425         Detect nested cycles.
10426         (vect_is_simple_reduction): Update documentation, add an argument to
10427         distinguish inner-loop reduction from nested cycle, detect nested
10428         cycles, fix printings and indentation, don't swap operands in case
10429         of nested cycle.
10430         (get_initial_def_for_reduction): Handle subtraction.
10431         (vect_create_epilog_for_reduction): Add new argument to specify
10432         reduction variable.
10433         (vect_finalize_reduction): Handle subtraction, fix comments.
10434         (vectorizable_reduction): Handle nested cycles. In case of nested
10435         cycle keep track of the reduction variable position. Call
10436         vect_is_simple_reduction with additional parameter. Use original
10437         statement code in reduction epilogue for nested cycle. Call
10438         vect_create_epilog_for_reduction with additional parameter.
10439         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10440         inner-loop vectorization.
10441         (vect_recog_widen_sum_pattern): Likewise.
10442         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10443         and reductions.
10444         (vect_mark_stmts_to_be_vectorized): Likewise.
10445         (vect_get_vec_def_for_operand): Handle nested cycles.
10446
10447 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10448
10449         * doc/invoke.texi (Debugging Options): Fix option index entries
10450         for -fdump-statistics, -frandom-seed add entries for
10451         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10452         (FRV Options): Fix entries for -mTLS, -mtls.
10453         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10454         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10455         (M68hc1x Options): Fix @itemx for -mnominmax.
10456         (MCore Options): Fix entry for -mno-lsim.
10457         (MMIX Options): Fix entry for -mabi=mmixware.
10458         (PDP-11 Options): Fix entry for -mbcopy-builtin.
10459
10460 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
10461
10462         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10463         Mention the plugin mode of gengtype.
10464         * doc/gty.texi (Source Files Containing Type Information): Likewise.
10465         * gengtype.c: Updated copyright.
10466         (plugin_files, nb_plugin_files) Added new static variables.
10467         (measure_input_list) Care about plugin_files.
10468         (write_rtx_next): Added early return in plugin mode.
10469         (create_file): Updated copyright year in generated file. Added
10470         asserts.
10471         (oprintf): Added early return if NULL outf.
10472         (get_output_file_with_visibility): Care of plugin_files.
10473         (get_output_file_name): May return null.
10474         (write_local): Added early return.
10475         (put_mangled_filename): Ditto.
10476         (finish_root_table): Added check for base_files.
10477         (write_roots): Care about null when plugins.
10478         (main): Added plugin mode.
10479
10480 2009-06-15  Ian Lance Taylor  <iant@google.com>
10481
10482         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10483         * gcov.c (read_count_file): Add braces around variables declared
10484         before label.
10485
10486         * c.opt (Wjump-misses-init): New warning.
10487         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10488         -Wall and -Wc++-compat if not already set.
10489         (c_common_post_options): Clear warn_jump_misses_init if it was not
10490         set.
10491         * c-decl.c (struct c_binding): Change type field to a union with
10492         new label field.  Make it the first field in the struct.  Update
10493         references to type to use u.type instead.
10494         (struct c_spot_bindings): Define.
10495         (struct c_goto_bindings): Define.
10496         (c_goto_bindings_p): Define, along with VECs.
10497         (struct c_label_vars): Define.
10498         (struct c_scope): Add has_label_bindings field.
10499         (bind_label, set_spot_bindings): New static functions.
10500         (decl_jump_unsafe, update_spot_bindings): New static functions.
10501         (update_label_decls): New static function.
10502         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
10503         Update binding u.label field to shadowed field.
10504         (c_binding_start_stmt_expr): New function.
10505         (c_binding_end_stmt_expr): New function.
10506         (pushdecl): Don't call c_begin_vm_scope.
10507         (make_label): Add defining and p_label_vars parameters.  Change
10508         all callers.
10509         (lookup_label): Correct test for whether a label has not yet been
10510         defined.  Call bind_label rather than bind.
10511         (warn_about_goto): New static function.
10512         (lookup_label_for_goto): New function.
10513         (declare_label): Call bind_label rather than bind.
10514         (check_earlier_gotos): New static function.
10515         (define_label): Don't give errors about jumping into statement
10516         expressions or scopes of variably modified types.  Call
10517         set_spot_bindings and check_earlier_gotos.  Call bind_label
10518         instead of bind.  Don't set label_context_stack_se or
10519         label_context_stack_vm.
10520         (c_get_switch_bindings): New function.
10521         (c_release_switch_bindings): New function.
10522         (c_check_switch_jump_warnings): New function.
10523         (start_function): Don't set label_context_stack_se or
10524         label_context_stack_vm.
10525         (finish_function): Likewise.
10526         * c-typeck.c (label_context_stack_se): Don't define.
10527         (label_context_stack_vm): Don't define.
10528         (c_finish_goto_label): Call lookup_label_for_goto rather than
10529         lookup_label.  Don't give errors about jumping into a statement
10530         expression or the scope of a variably modified type.  Don't set
10531         label_context_stack_se or label_context_stack_vm.
10532         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
10533         fields.  Add bindings field.
10534         (c_start_case): Don't set deleted fields.  Set bindings field.
10535         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
10536         or blocked_vm.  Call c_check_switch_jump_warnings.
10537         (c_finish_case): Don't test blocked_stmt_expr field.  Call
10538         c_release_switch_bindings.
10539         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
10540         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10541         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
10542         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
10543         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10544         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
10545         (c_begin_vm_scope, c_end_vm_scope): Don't define.
10546         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
10547         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
10548         (C_DECL_UNJUMPABLE_VM): Don't define.
10549         (C_DECL_UNDEFINABLE_VM): Don't define.
10550         (struct c_label_list): Don't define.
10551         (struct c_label_context_se): Don't define.
10552         (struct c_label_context_vm): Don't define.
10553         (struct c_spot_bindings): Declare.
10554         (c_bindings_start_stmt_expr): Declare.
10555         (c_bindings_end_stmt_expr): Declare.
10556         (lookup_label_for_goto): Declare.
10557         (c_get_switch_bindings, c_release_switch_bindings): Declare.
10558         (c_check_switch_jump_warnings): Declare.
10559         (label_context_stack_se, label_context_stack_vm): Don't declare.
10560         (c_finish_goto_label): Update declaration.
10561         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
10562         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
10563         (Warning Options): Document -Wjump-misses-init.
10564
10565 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
10566
10567         * tree-object-size.c (addr_object_size): Fix a pasto in the last
10568         change.
10569
10570 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10571
10572         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
10573
10574 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10575
10576         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
10577
10578 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10579
10580         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
10581
10582 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10583
10584         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
10585         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
10586         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
10587         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
10588         * dwarf2asm.c (dw2_force_const_mem): Update call to
10589         make_decl_one_only.
10590         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
10591         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
10592         * langhooks.c (lhd_comdat_group): Remove.
10593         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
10594         * tree.h (DECL_COMDAT_GROUP): New.
10595         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
10596         (tree_decl_with_vis): Add comdat_group. Remove one_only.
10597         (make_decl_one_only): Change signature.
10598         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
10599         make_decl_one_only.
10600         (make_decl_one_only): Change signature.
10601         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
10602
10603 2009-06-15  Richard Guenther  <rguenther@suse.de>
10604
10605         PR middle-end/40439
10606         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
10607
10608 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10609
10610         * tree-ssa-math-opts.c: Remove extra divide.
10611
10612 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10613
10614         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
10615
10616 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10617
10618         * passes.c: Add bswap pass.
10619         * tree-pass.h: Add pass_optimize_bswap declaration.
10620         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
10621         Include rtl.h, expr.h and optabs.h for optab_handler check.
10622         (struct symbolic_number, pass_optimize_bswap): New definition.
10623         (do_shift_rotate, verify_symbolic_number_p): New functions.
10624         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
10625         (gate_optimize_bswap): New function.
10626         * tree.c (widest_int_cst_value): New function.
10627         * tree.h (widest_int_cst_value): Prototype added.
10628
10629 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
10630
10631         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
10632         REG_EQUAL/REG_EQUIV notes.
10633
10634 2009-06-14  Richard Guenther  <rguenther@suse.de>
10635
10636         PR middle-end/40389
10637         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10638         has its address taken if NRV was applied and it is addressable.
10639         * tree-ssa-structalias.c (get_constraint_for_address_of): New
10640         function split out from ...
10641         (get_constraint_for_1): ... here.
10642         (handle_rhs_call): Use it to mark the return slot escaped if
10643         it is addressable and NRV was applied.
10644
10645 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10646
10647         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
10648         Change first argument type to location_t.
10649         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
10650         Do not set input_location.
10651         Use loc instead of input_location throughout.
10652
10653 2009-06-13  Richard Guenther  <rguenther@suse.de>
10654
10655         PR tree-optimization/40421
10656         * tree-predcom.c (should_unroll_loop_p): Remove.
10657         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
10658
10659 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
10660
10661         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10662         Add location argument.
10663
10664 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10665
10666         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
10667         build_decl.
10668         * config/s390/s390.c (s390_build_builtin_va_list): Same.
10669         (s390_gimplify_va_arg): Pass location to create_artificial_label.
10670         * config/spu/spu-protos.h: Add location to
10671         spu_resolve_overloaded_builtin.
10672         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
10673         spu_build_builtin_va_list.
10674         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
10675         argument.  Pass location to build_function_call_vec.
10676         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
10677         build_decl.
10678         (emit_fpu_switch): Same.
10679         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
10680         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
10681         to build_decl and create_artificial_label.
10682         (xtensa_gimplify_va_arg_expr): Same.
10683         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
10684         (xstormy16_gimplify_va_arg_expr): Same.
10685         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
10686         * config/arm/arm.c (arm_build_builtin_va_list): Same.
10687         * config/mips/mips.c (mips_build_builtin_va_list): Same.
10688         (mips16_build_function_stub): Same.
10689         (mips16_build_call_stub): Same.
10690
10691 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
10692
10693         PR target/40327
10694         * arm/constraints.md (Pa, Pb): New constraints.
10695         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
10696         split pattern to deal with them.
10697
10698 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
10699
10700         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
10701         fix index entry for -Xpreprocessor.
10702
10703 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10704
10705         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10706         Add location argument to build_decl call.
10707         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
10708         (rs6000_init_builtins): Same.
10709         (spe_init_builtins): Same.
10710         (rs6000_gimplify_va_arg): Add location argument to
10711         create_artificial_label call.
10712
10713 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
10714
10715         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
10716         * combine-stack-adj.c (pass_stack_adjustments): Use it.
10717         * Makefile.in: Fix GGC dependency for gcse.o.
10718
10719 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
10720
10721         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
10722         * gimple-pretty-print.c (dump_gimple_stmt): Same.
10723         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
10724         created.
10725         * c-parser.c (c_parser_binary_expression): Use current column while
10726         building binary operations.
10727         * common.opt (fshow-column): Enable by default.
10728         * tree-vrp.c (check_array_ref): Use warning_at.
10729         (check_array_bounds): Use location from call back if expr has no
10730         location.
10731         * tree.h: Add location argument to maybe_fold_*.
10732         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
10733         (maybe_fold_offset_to_array_ref): Add location argument and use it.
10734         (maybe_fold_offset_to_component_ref): Same.
10735         (maybe_fold_offset_to_reference): Same.
10736         (maybe_fold_offset_to_address): Same.
10737         (maybe_fold_stmt_indirect): Same.
10738         (maybe_fold_stmt_addition): Same.
10739         (fold_stmt_r): Pass location to maybe_fold_*.
10740         (fold_gimple_assign): Same.
10741         * c-tree.h: Add location argument to finish_decl,
10742         default_function_array_conversion, store_init_value.
10743         * c-decl.c (define_label): Use error_at.
10744         (c_make_fname_decl): Pass location to finish_decl.
10745         (finish_decl): New location argument.
10746         (build_compound_literal): Pass location to store_init_value.
10747         (grokdeclarator): Pass location to finish_decl.
10748         (grokfield): Same.
10749         * c-typeck.c (array_to_pointer_conversion): New location argument.
10750         (function_to_pointer_conversion): Same.
10751         (default_function_array_conversion): Same.
10752         (parser_build_unary_op): Pass location to overflow_warning.
10753         (parser_build_binary_op): Same.  Use warning_at.
10754         (build_unary_op): Pass location to array_to_pointer_conversion.
10755         (build_c_cast): Pass location to digest_init.
10756         (build_modify_expr): New location argument.
10757         (convert_for_assignment): Same.
10758         (store_init_value): Same.
10759         (digest_init): Same.
10760         (output_init_element): Pass location to digest_init and
10761         array_to_pointer_conversion.
10762         (c_finish_return): Pass location to convert_for_assignment.
10763         * gimplify.c (gimplify_conversion): Pass location to
10764         maybe_fold_offset_to_address.
10765         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
10766         to maybe_fold_stmt_addition.
10767         * c-omp.c (c_finish_omp_atomic): Pass new location to
10768         build_modify_expr.
10769         (c_finish_omp_for): Same.
10770         * c-common.c (overflow_warning): New argument.
10771         * c-common.h: New argument to build_modify_expr, overflow_warning.
10772         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
10773         finish_decl.
10774         (c_parser_initializer): Pass location to
10775         default_function_array_conversion.
10776         (c_parser_initelt): Same.
10777         (c_parser_initval): Same.
10778         (c_parser_asm_operands): Same.
10779         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
10780         (c_parser_conditional_expression): Same.
10781         (c_parser_binary_expression): Add location info to stack.  Use it.
10782         (c_parser_unary_expression): Pass location to
10783         default_function_array_conversion, parser_build_unary_op,
10784         build_indirect_ref, c_parser_postfix_expression_after_primary.
10785         (c_parser_postfix_expression_after_primary): New location argument.
10786         Use it.
10787         (c_parser_expression_conv): Pass location to
10788         default_function_array_conversion.
10789         (c_parser_expr_list): Same.
10790         (c_parser_omp_atomic): Same.
10791         (c_parser_omp_for_loop): Same.
10792         * c-tree.h: (struct c_declarator): Add comment to id_loc.
10793         (build_array_declarator): New argument.
10794         * c-decl.c (build_array_declarator): Add location argument.
10795         (grokdeclarator): Set id_loc for cdk_array.
10796         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
10797         build_array_declarator.
10798         * tree.c (build_omp_clause): Add location argument.
10799         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
10800         (OMP_CLAUSE_LOCATION): New macro.
10801         (struct tree_omp_clause): Add location field.
10802         (build_omp_clause): Add argument.
10803         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
10804         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
10805         build_omp_clause.
10806         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
10807         (cp_parser_omp_clause_collapse): Same.
10808         (cp_parser_omp_clause_default): Same.
10809         (cp_parser_omp_clause_if): Same.
10810         (cp_parser_omp_clause_nowait): Same.
10811         (cp_parser_omp_clause_num_threads): Same.
10812         (cp_parser_omp_clause_ordered): Same.
10813         (cp_parser_omp_clause_schedule): Same.
10814         (cp_parser_omp_clause_untied): Same.
10815         (cp_parser_omp_for_loop): Same.
10816         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10817         * c-tree.h (c_start_case): Add location argument.
10818         (c_process_expr_stmt): Same.
10819         (c_finish_goto_*): Same.
10820         * tree-parloops.c (initialize_reductions): Pass location to
10821         build_omp_clause.
10822         (create_parallel_loop): Same.
10823         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
10824         (gfc_trans_omp_reduction_list): Same.
10825         (gfc_trans_omp_clauses): Same.
10826         (gfc_trans_omp_do): Same.
10827         * c-typeck.c (c_finish_goto_label): Same.
10828         (c_finish_goto_ptr): New location argument.
10829         (c_start_case): Same.
10830         (emit_side_effect_warnings): Same.
10831         (c_process_expr_stmt): Same.
10832         (c_finish_stmt_expr): Same.
10833         (c_finish_omp_clauses): Use error_at instead of error.
10834         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
10835         build_omp_clause.
10836         * c-omp.c (c_split_parallel_clauses): New location argument.
10837         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
10838         to build_omp_clause.
10839         (convert_local_reference_stmt): Same.
10840         (convert_gimple_call): Same.
10841         * c-common.h (c_split_parallel_clauses): New argument.
10842         * c-parser.c (c_parser_statement_after_labels): Pass location to
10843         c_finish_goto_label.
10844         (c_parser_switch_statement): Pass location to c_start_case.
10845         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
10846         and c_process_expr_stmt.
10847         (c_parser_omp_variable_list): Add location argument.
10848         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
10849         (c_parser_omp_clause_default): Same.
10850         (c_parser_omp_clause_if): Same.
10851         (c_parser_omp_clause_num_threads): Same.
10852         (-c_parser_omp_clause_ordered): Same.
10853         (c_parser_omp_clause_reduction): Pass location to
10854         c_parser_omp_variable_list.
10855         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
10856         (c_parser_omp_clause_untied): Same.
10857         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
10858         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
10859
10860         * c-tree.h (check_for_loop_decls, undeclared_variable,
10861         build_component_ref, build_array_ref, build_external_ref,
10862         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
10863         build_conditional_expr, build_compound_expr, c_cast_expr,
10864         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
10865         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
10866         argument.
10867         * c-semantics.c (build_stmt): Same.
10868         (build_case_label): Same.
10869         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
10870         (undeclared_variable): New argument.
10871         (make_label): Same.
10872         (lookup_label): Pass location on down.
10873         (define_label): Same.
10874         (finish_decl): Same.
10875         (build_compound_literal): Same.
10876         (finish_struct): Same.
10877         (finish_function): Do not set location here.
10878         (check_for_loop_decls): New argument.
10879         * tree.c (save_expr): Set location.
10880         (build_empty_stmt): New argument.
10881         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
10882         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
10883         * builtins.c (gimplify_va_arg_expr): Use locations.
10884         (expand_builtin_sync_operation): Same.
10885         * c-typeck.c (build_component_ref): New argument.
10886         (build_array_ref): Same.
10887         (build_external_ref): Same.
10888         (c_expr_sizeof_expr): Same.
10889         (c_expr_sizeof_type): Same.
10890         (parser_build_unary_op): Same.
10891         (build_conditional_expr): Same.
10892         (build_compound_expr): Pass location on down.
10893         (build_compound_expr): New argument.
10894         (build_c_cast): Same.
10895         (c_cast_expr): Same.
10896         (build_asm_expr): Same.
10897         (c_finish_return): Same.
10898         (c_process_expr_stmt): Pass location on down.
10899         (c_finish_stmt_expr): New argument.
10900         (push_clenaup): Same.
10901         (c_finish_omp_parallel): Same.
10902         (c_finish_omp_task): Same.
10903         * gimplify.c (gimplify_call_expr): Pass location on down.
10904         * c-omp.c (c_finish_omp_master): New argument.
10905         (c_finish_omp_critical): Same.
10906         (c_finish_omp_ordered): Same.
10907         (c_finish_omp_barrier): Same.
10908         (-c_finish_omp_taskwait): Same.
10909         (c_finish_omp_atomic): Same.
10910         (c_finish_omp_flush): Same.
10911         * tree-inline.c (copy_tree_body_r): Pass location on down.
10912         (inline_forbidden_p): Remove use of input_location.
10913         * c-gimplify.c (c_build_bind_expr): New argument.
10914         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
10915         (c_sizeof_or_alignof_type): New argument.
10916         (c_alignof_expr): Same.
10917         (build_va_arg): Same.
10918         (c_add_case_label): Same.
10919         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
10920         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
10921         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
10922         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
10923         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
10924         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
10925         New argument.
10926         * stub-objc.c (objc_build_selector_expr): Same.
10927         (objc_build_throw_stmt): Same.
10928         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
10929         (c_parser_initelt): Same.
10930         (c_parser_compound_statement): Same.
10931         (c_parser_compound_statement_nostart): Same.
10932         (c_parser_label): Same.
10933         (c_parser_statement_after_labels): Same.
10934         (c_parser_if_body): Same.
10935         (c_parser_else_body): Same.
10936         (c_parser_if_statement): Same.
10937         (c_parser_switch_statement): Same.
10938         (c_parser_while_statement): Same.
10939         (c_parser_do_statement): Same.
10940         (c_parser_for_statement): Same.
10941         (c_parser_asm_statement): Same.
10942         (c_parser_conditional_expression): Same.
10943         (c_parser_binary_expression): Same.
10944         (c_parser_cast_expression): Same.
10945         (c_parser_unary_expression): Same.
10946         (c_parser_sizeof_expression): Same.
10947         (c_parser_alignof_expression): Same.
10948         (c_parser_postfix_expression): Same.
10949         (c_parser_expression): Same.
10950         (c_parser_objc_receiver): Same.
10951         (c_parser_omp_variable_list): Same.
10952         (c_parser_omp_structured_block): Same.
10953         (c_parser_omp_atomic): New argument.
10954         (c_parser_omp_barrier): Same.
10955         (c_parser_omp_critical): Same.
10956         (c_parser_omp_flush): Pass location on down.
10957         (c_parser_omp_for_loop): New argument.
10958         (c_parser_omp_for): Same.
10959         (c_parser_omp_master): Same.
10960         (c_parser_omp_ordered): Same.
10961         (c_parser_omp_sections_scope): Same.
10962         (c_parser_omp_sections): Same.
10963         (c_parser_omp_parallel): Same.
10964         (c_parser_omp_single): Same.
10965         (c_parser_omp_task): Same.
10966         (c_parser_omp_taskwait): Pass location on down.
10967         (c_parser_omp_construct): Same.
10968         (c_parser_omp_threadprivate): Same.
10969         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
10970         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
10971         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
10972         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
10973         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
10974         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
10975         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
10976         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
10977         config/i386/i386.c, stmt.c:
10978         Add location argument to the following function definitions and/or
10979         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
10980         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
10981         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
10982         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
10983         do_case, c_finish_bc_stmt, build_compound_literal,
10984         build_function_call.
10985         * c-decl.c (build_compound_literal): Add location argument.
10986         Make all diagnostic calls use location.
10987         (start_struct): Same.
10988         (finish_struct): Same.
10989         (start_enum): Same.
10990         (build_enumerator): Same.
10991         (start_function): Same.
10992         (grokdeclarator): Make all diagnostic calls use location.
10993         (store_parm_decls_oldstyle): Same.
10994         * c-typeck.c (build_function_call): Add location argument.
10995         Make all diagnostic calls use location.
10996         (do_case): Same.
10997         (c_finish_bc_stmt): Same.
10998         * tree-nested.c (get_trampoline_type): Add argument.
10999         Pass location to build_decl.
11000         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
11001         * rtl.h (RTL_LOCATION): New.
11002         * c-common.c (c_add_case_label): Add location argument.
11003         Make all diagnostic calls use location.
11004         * c-common.h: Add location argument to make_fname_decl, do_case,
11005         c_add_case_label, build_function_call, resolve_overloaded_builtin.
11006         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
11007         Set it appropriately for every case.  Pass enum_loc to start_enum
11008         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
11009         parser_xref_tag.
11010         (c_parser_struct_or_union_specifier): Save location.  Use it for
11011         start_struct, finish_struct, and parser_xref_tag.
11012
11013 2009-06-12  Ian Lance Taylor  <iant@google.com>
11014
11015         * fold-const.c (fold_unary): Rename local variable and to and_expr.
11016
11017         * c-opts.c (c_common_handle_option): For -Wc++-compat set
11018         cpp_opts->warn_cxx_operator_names.
11019
11020 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11021
11022         PR tree-opt/38865
11023         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
11024         is returns NULL and OP is a VCE, look through the VCE.
11025
11026 2009-06-12  Ian Lance Taylor  <iant@google.com>
11027
11028         PR bootstrap/40430
11029         * collect2.c (main): Use CONST_CAST2 in code inside #if
11030         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
11031
11032 2009-06-12  Joey Ye  <joey.ye@intel.com>
11033
11034         PR middle-end/39146
11035         * cfgexpand.c (get_decl_align_unit): Update
11036         max_used_stack_slot_alignment with align instead of
11037         stack_alignment_needed.
11038
11039         * function.c (assign_stack_local_1): Update
11040         max_used_stack_slot_alignment with alignment_in_bits instead
11041         of stack_alignment_needed.
11042         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
11043         here.
11044
11045 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
11046
11047         * dwarf2out.c (last_var_location_insn): New variable.
11048         (dwarf2out_end_epilogue): Clear last_var_location_insn.
11049         (dwarf2out_var_location): Don't record anything after last real
11050         insn.  Only change labels if there were any real instructions
11051         in between last note and this one, or if changed sections.
11052
11053 2009-06-11  Richard Henderson  <rth@redhat.com>
11054
11055         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
11056         note when storing the frame pointer in a register.
11057         (FRP): Don't redefine to nothing for epilogue.
11058         (alpha_expand_epilogue): Mark register and sp restores.
11059         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
11060
11061         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
11062         when gen_lowpart is needed.
11063
11064 2009-06-11  Richard Henderson  <rth@redhat.com>
11065
11066         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
11067
11068         * dwarf2out.c (need_data_align_sf_opcode): New.
11069         (div_data_align): Move earlier.
11070         (def_cfa_1, reg_save): Use it.
11071
11072 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
11073
11074         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
11075         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
11076         (ix86_handle_option): Handle OPT_mcrc32.
11077         (ix86_target_string): Add -mcrc32.
11078         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
11079
11080         * config/i386/i386.h (TARGET_CRC32): New.
11081
11082         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
11083         (sse4_2_crc32di): Likewise.
11084
11085         * config/i386/i386.opt (mcrc32): New.
11086
11087         * doc/invoke.texi: Document -mcrc32.
11088
11089 2009-06-11  Richard Henderson  <rth@redhat.com>
11090
11091         * common.opt (gdwarf-): Accept a version number.
11092         * doc/invoke.texi (gdwarf-): Update docs.
11093         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
11094         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
11095         version level, and record it.
11096
11097         * dwarf2.h (DW_CIE_VERSION): Remove.
11098         * dwarf2out.c (DWARF_VERSION): Remove.
11099         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
11100         (output_call_frame_info): Use CIE version 3 for dwarf3,
11101         or if the return register column is out of range for version 1.
11102         (dwarf_stack_op_name): Add all dwarf3 values.
11103         (DEBUG_PUBTYPES_SECTION): New.
11104         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
11105         encoding change for dwarf3.
11106         (output_die) [dw_val_class_die_ref]: Likewise.
11107         (output_compilation_unit_header): Emit correct version for dwarf3.
11108         (output_line_info): Likewise.
11109         (output_pubnames): Update for DWARF_VERSION removal.
11110         (output_aranges): Likewise.
11111         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
11112         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
11113         (dwarf2out_finish): Likewise.
11114
11115 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11116
11117         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
11118         in r148403.
11119
11120 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11121
11122         PR c/39252
11123         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
11124         * builtins.c (expand_builtin_unreachable): New function.
11125         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
11126         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
11127         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
11128         successors.
11129         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
11130         searching for missing barriers.
11131
11132 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11133
11134         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
11135         when -fprofile-generate* was passed.
11136         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11137
11138 2009-06-11  Anthony Green  <green@moxielogic.com>
11139
11140         * config/moxie/moxie.md: Define length attribute for all instructions.
11141         (rCC): Define.
11142         (*b<cond:code>): Support limited branch ranges for new PC-relative
11143         branch instructions.
11144         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
11145
11146 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
11147
11148         * config/i386/i386.c (min_insn_size): Use get_attr_length
11149         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
11150         For __asm return 0.
11151
11152         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
11153         instead of emit_insn_before.
11154
11155 2009-06-10  Ian Lance Taylor  <iant@google.com>
11156
11157         PR bootstrap/40408
11158         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
11159         GIMPLE_SWITCH.
11160
11161 2009-06-10  Revital Eres  <eres@il.ibm.com>
11162
11163         * passes.c (init_optimization_passes): Reschedule
11164         predictive-commoning pass before complete unroll pass.
11165
11166 2009-06-10  Martin Jambor  <mjambor@suse.cz>
11167
11168         * cgraph.c (cgraph_node_can_be_local_p): New function.
11169         (cgraph_make_node_local): New function.
11170         * cgraph.h (cgraph_node_can_be_local_p): Declare.
11171         (cgraph_make_node_local): Declare.
11172
11173 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
11174
11175         * tree.h (tree_base): Add packed_flag and user_align fields.
11176         Decrease size of spare field.
11177         (TYPE_USER_ALIGN): Use user_align from tree_base.
11178         (DECL_USER_ALIGN): Likewise.
11179         (TYPE_PACKED): Use packed_flag from tree_base.
11180         (DECL_PACKED): Likewise.
11181         (tree_type): Delete packed_flag and user_align fields.  Widen
11182         precision field.  Widen mode field and shuffle fields to align
11183         mode on an 8-bit boundary.
11184         (tree_decl_common): Delete decl_flag_1 and user_align fields.
11185         Renumber decl_flag_* fields.  Fix comments.  Widen
11186         decl_common_unused field.
11187         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
11188         (DECL_EXTERNAL): Likewise.
11189         (DECL_BIT_FIELD): Likewise.
11190         (DECL_NONADDRESSABLE_P): Likewise.
11191         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
11192         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
11193
11194 2009-06-10  Ian Lance Taylor  <iant@google.com>
11195
11196         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
11197         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
11198         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
11199         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
11200         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
11201         DEF_VEC_ALLOC_FUNC_P.
11202         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
11203         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11204         DEF_VEC_ALLOC_FUNC_O.
11205         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
11206         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
11207         DEF_VEC_ALLOC_FUNC_I.
11208         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
11209         (vec_stack_p_reserve_exact_1): Declare.
11210         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
11211         (vec_stack_free): Declare.
11212         (VEC_stack_alloc): Define.
11213         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
11214         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
11215         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
11216         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
11217         for void_p.
11218         (stack_vecs): New static variable.
11219         (vec_stack_p_reserve_exact_1): New function.
11220         (vec_stack_o_reserve_1): New static function.
11221         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
11222         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
11223         (vec_stack_free): New function.
11224         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
11225         (VEC_df_ref_stack_alloc): Define.
11226         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
11227         DEF_VEC_ALLOC_P_STACK.
11228         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
11229         (struct df_collection_rec): Change _vec fields to VEC.  Remove
11230         _use fields.
11231         (df_free_collection_rec): Adjust for new fields.
11232         (df_insn_rescan): Use new df_collection_rec fields.
11233         (df_notes_rescan, df_canonize_collection_rec): Likewise.
11234         (df_ref_create_structure, df_ref_record): Likewise.
11235         (df_get_conditional_uses, df_get_call_refs): Likewise.
11236         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
11237         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
11238         (df_record_exit_block_uses, df_bb_verify): Likewise.
11239         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
11240         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
11241         Remove count parameter.  Change return type to void.  Change all
11242         callers.
11243         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
11244         Remove count parameter.  Change return type to void.  Change all
11245         callers.
11246         (df_install_refs): Change old_vec parameter to VEC.  Remove count
11247         parameter.  Change all callers.
11248         (df_install_mws): Change old_vec parameter to VEC.  Remove count
11249         parameter.  Change all callers.
11250         (df_refs_verify): Change new_rec parameter to VEC.  Change call
11251         callers.
11252         (df_mws_verify): Likewise.
11253
11254 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
11255
11256         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11257
11258 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
11259
11260         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11261
11262 2009-06-10  Anthony Green  <green@moxielogic.com>
11263
11264         * config/moxie/crti.asm: New file.
11265         * config/moxie/crtn.asm: New file.
11266         * config/moxie/moxie.c: New file.
11267         * config/moxie/moxie.h: New file.
11268         * config/moxie/sfp-machine.h: New file.
11269         * config/moxie/moxie-protos.h: New file.
11270         * config/moxie/t-moxie: Created.
11271         * config/moxie/t-moxie-softfp: Created.
11272         * config/moxie/moxie.md: Created.
11273         * config/moxie/constraints.md: Created.
11274         * config.gcc: Add moxie support.
11275         * doc/md.texi (Machine Constraints): Add moxie constraints.
11276         * doc/contrib.texi (Contributors): Mention moxie port.
11277         * doc/install.texi (Specific): Mention the moxie port.
11278
11279 2009-06-09  Ian Lance Taylor  <iant@google.com>
11280
11281         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
11282         compiling with C++.
11283         * optabs.c (optab_table): Only use designated initializers if
11284         HAVE_DESIGNATED_INITIALIZERS is defined.
11285         (convert_optab_table): Likewise.
11286         (init_optabs): Always call init_insn_codes if
11287         HAVE_DESIGNATED_INITIALIZERS is not defined.
11288
11289 2009-06-09  Ian Lance Taylor  <iant@google.com>
11290
11291         * targhooks.c (default_builtin_vectorized_function): Change fn
11292         parameter to unsigned int.
11293         (default_builtin_vectorized_conversion): Change code parameter to
11294         unsigned int.
11295         (default_builtin_reciprocal): Change fn parameter to unsigned int.
11296         * targhooks.h: Update declarations.
11297         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
11298         parameter to unsigned int.
11299
11300         * c-typeck.c (comptypes_check_enum_int): New static function.
11301         (comptypes_internal): Add enum_and_int_p parameter.  Change all
11302         callers.
11303         (comp_target_types): Add location parameter.  Change all callers.
11304         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
11305         Change all callers.
11306         (function_types_compatible_p, type_lists_compatible_p): Likewise.
11307         (build_conditional_expr): Add colon_loc parameter.  Change all
11308         callers.
11309         (convert_for_assignment): Add location parameter.  Change all callers.
11310         * c-parser.c (c_parser_conditional_expression): Pass location of
11311         colon to build_conditional_expr.
11312         * c-tree.h (build_conditional_expr): Update declaration.
11313
11314 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11315
11316         * graphite.c: Revert previous patch.
11317
11318 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11319
11320         PR bootstrap/40103
11321         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11322
11323 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11324
11325         * tree-ssa-loop-prefetch.c
11326         (loop_prefetch_arrays): Fixed a portability problem in printf format
11327         string.
11328
11329 2009-06-09  Martin Jambor  <mjambor@suse.cz>
11330
11331         PR tree-optimization/40351
11332         * tree-sra.c (propagate_subacesses_accross_link): Check that a
11333         refrence to a potential artifical subaccess can be constructed.
11334
11335 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11336
11337         * config/sh/sh-protos.h (sh_optimization_options): Declare.
11338         (sh_override_options): Likewise.
11339         * config/sh/sh.c: Include params.h.
11340         (sh_optimization_options): New.
11341         (sh_override_options): Likewise.
11342         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11343         (OVERRIDE_OPTIONS): Use sh_override_options.
11344
11345 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11346
11347         * dwarf2out.c (emit_cfa_remember): New variable.
11348         (add_fde_cfi): If emit_cfa_remember, recurse to add
11349         DW_CFA_remember_state first.
11350         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11351         instead just set emit_cfa_remember.
11352
11353 2009-06-08  Jan Hubicka  <jh@suse.cz>
11354
11355         PR debug/40126
11356         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11357
11358 2009-06-08  Jan Hubicka  <jh@suse.cz>
11359
11360         PR middle-end/39834
11361         * cgraphunit.c (save_inline_function_body): Do not copy transform
11362         hooks for saved inline bodies.
11363         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11364         for given function.
11365
11366 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
11367
11368         * jump.c (returnjump_p): Handle delayed branches.  Add missing
11369         function comment.
11370
11371 2009-06-08  Jan Hubicka  <jh@suse.cz>
11372
11373         PR middle-end/40102
11374         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11375         original node might've been modified.
11376         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11377
11378 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11379
11380         * tree-object-size.c (addr_object_size): Add OSI argument.
11381         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11382         (compute_builtin_object_size, expr_object_size): Adjust callers.
11383         (plus_stmt_object_size): Call addr_object_size instead of
11384         compute_builtin_object_size.
11385
11386 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11387             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11388
11389         * tree-ssa-loop-prefetch.c
11390         (gather_memory_references): Introduced a counter for the number of
11391         memory references.
11392         (anything_to_prefetch_p): Introduced a counter for the number of
11393         prefetches.
11394         (is_loop_prefetching_profitable): New function with a cost model
11395         for prefetching.
11396         (loop_prefetch_arrays): Use the new cost model to determine if
11397         prefetching is profitable.
11398         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11399         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11400         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11401         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11402         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11403         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11404
11405 2009-06-08  Michael Matz  <matz@suse.de>
11406
11407         PR debug/40012
11408         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11409         partitions use the same.
11410         (expand_one_var): Deal with DECL_RTL sometimes begin set also
11411         for basevars of SSA_NAMEs.
11412         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11413         to not expand them twice.
11414         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11415         multiple places.
11416
11417 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
11418
11419         * common.opt (fcompare-debug=, fcompare-debug-second): New.
11420         (fdump-final-insns=, gtoggle): New.
11421         * doc/invoke.texi: Document them.
11422         * final.c (rest_of_clean_state): Dump final insn stream.
11423         * gcc.c (invoke_as): Hook in -fcompare-debug.
11424         (static_spec_functions): Add compare-debug-dump-opt,
11425         compare-debug-self-opt and compare-debug-auxbase-opt.
11426         (compare_debug, compare_debug_second, compare_debug_opt): New.
11427         (switches_debug_check, n_switches_debug_check): New.
11428         (debug_auxbase_opt, debug_check_temp_file): New.
11429         (process_command): Handle -fno-compare-debug, -fcompare-debug and
11430         -fcompare-debug=*.
11431         (do_self_spec): Handle arguments after switches.
11432         (do_spec_1): Add .gk extension to temp file basenames for compare.
11433         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11434         (cc1_options): Use it instead of normal auxbase computation for
11435         the second compare-debug compilation.
11436         (compare_files): New.
11437         (main): Set up and implement compare debug mode.
11438         (compare_debug_dump_opt_spec_function): New.
11439         (compare_debug_self_opt_spec_function): New.
11440         (compare_debug_auxbase_opt_spec_function): New.
11441         * toplev.c (process_options): Handle flag_gtoggle,
11442         flag_dump_final_insns.
11443         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11444         during -fcompare-debug-second compilation.
11445
11446 2009-06-07  Ian Lance Taylor  <iant@google.com>
11447
11448         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11449         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11450
11451         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11452         with no default node.  Change warning with %H to warning_at.
11453         Don't clear warn_switch around case checking.
11454         * doc/invoke.texi (Warning Options): Clarify distinction between
11455         -Wswitch and -Wswitch-enum.
11456
11457 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11458
11459         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11460
11461 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11462
11463         * gbl-ctors.h: Add header guard.
11464
11465 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11466
11467         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11468         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11469         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11470         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11471         prototypes for removed functions.
11472         (expressions_equal_p): Move to ...
11473         * tree-ssa-sccvn.h: ... here and ...
11474         * matrix-reorg.c: ... adjust includes.
11475
11476 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11477
11478         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11479
11480 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11481
11482         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11483         (finish_function): Remove erroneous whitespace.
11484
11485 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11486
11487         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11488         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11489
11490 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11491
11492         * errors.c (internal_error): Commentary typo fix.
11493         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
11494         * tree-ssa-pre.c: Ditto.
11495
11496 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11497
11498         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
11499         them is supposed to hold actual statements.
11500
11501 2009-06-06  Ian Lance Taylor  <iant@google.com>
11502
11503         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
11504         empty statements can now have attributes.
11505
11506 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
11507
11508         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
11509         * config/mips/mips.md: Ditto.
11510
11511 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11512
11513         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
11514         _RELOCATABLE.
11515         (__eabi_uconvert): Likewise.
11516
11517 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11518
11519         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
11520         CFI_* definitions with IN_GCC.
11521
11522 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
11523
11524         * xcoffout.h (xcoffout_source_line): Update prototype.
11525
11526 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11527
11528         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
11529         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
11530
11531 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11532
11533         PR middle-end/40340
11534         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
11535         inlined_function_outer_scope_p blocks for artificial inlines
11536         even at -g0/-g1.
11537         * tree.c (tree_nonartificial_location): Rewrite using
11538         block_nonartificial_location.
11539
11540 2009-06-05  Revital Eres  <eres@il.ibm.com>
11541             Leehod Baruch  <leehod@il.ibm.com>
11542
11543         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
11544         (expand_expr_real_1): Remove comment.
11545         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
11546         Vectorize misaligned access when the target supports it.
11547         (vect_supportable_dr_alignment): Check for unaligned access support.
11548         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
11549         and remove asset.
11550
11551 2009-06-05  Julian Brown  <julian@codesourcery.com>
11552
11553         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
11554         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
11555
11556 2009-06-05  Richard Guenther  <rguenther@suse.de>
11557
11558         PR bootstrap/40350
11559         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
11560         as possibly unused.
11561
11562 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11563
11564         * config/s390/s390.c (global_not_special_regno_p): New static inline.
11565         (save_gprs): Don't tell unwinder when a global register is saved.
11566         (s390_emit_epilogue): Emit needed epilogue unwind info.
11567
11568 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11569
11570         * dwarf2out.c (deferred_asm_name): New.
11571         (add_name_and_src_coords_attributes): Defer creation of
11572         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
11573         computed yet.
11574         (move_linkage_attr): New.
11575         (dwarf2out_finish): Revisit deferrals and emit attributes at the
11576         right place.
11577
11578 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11579
11580         * tree-nested.c (finalize_nesting_tree_1): Declare the
11581         frame_decl in the binding tree.
11582
11583 2009-06-04  Cary Coutant  <ccoutant@google.com>
11584
11585         * basic-block.h (struct basic_block_def): Add discriminator field.
11586         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
11587         callers.
11588         * debug.c (do_nothing_debug_hooks): Add additional entry.
11589         (debug_nothing_int_charstar_int): New function.
11590         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
11591         (debug_nothing_int_charstar_int): New declaration.
11592         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
11593         discriminator value in .loc directive.
11594         * final.c (last_discriminator): New variable.
11595         (discriminator): New variable.
11596         (final_start_function): Initialize above variables, pass current
11597         discriminator to debug hook.
11598         (notice_source_line): Check for discriminator change.
11599         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
11600         * sdbout.c (sdbout_source_line): New parameter.
11601         * tree-cfg.c (struct locus_discrim_map): New structure type.
11602         (discriminator_per_locus): New hash table.
11603         (build_gimple_cfg): Allocate and free discriminator hash table.
11604         (make_edges): Call assign_discriminator.
11605         (locus_map_hash): New function.
11606         (locus_map_eq): New function.
11607         (next_discriminator_for_locus): New function.
11608         (same_line_p): New function.
11609         (assign_discriminator): New function.
11610         (make_cond_expr_edges): Call assign_discriminator.
11611         (make_gimple_switch_edges): Likewise.
11612         (first_non_label_stmt): New function.
11613         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
11614         all callers.
11615         * xcoffout.c (xcoffout_source_line): Add new parameter.
11616
11617         * configure.ac (gcc_cv_as_discriminator): New configury check for
11618         gas support for discriminator.
11619         * configure: Regenerate.
11620         * config.in: Regenerate.
11621
11622 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11623
11624         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
11625         val after checking for integers.
11626
11627 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
11628
11629         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
11630         X64_REGPARM_MAX.
11631         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11632         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
11633         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
11634         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
11635         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
11636         X64_SSE_REGPARM_MAX.
11637         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
11638         X64_SSE_REGPARM_MAX.
11639
11640 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11641
11642         * gcc.c (report_times_to_file): New.
11643         (execute): Implement it.
11644         (process_command): Support -time=.
11645         * doc/invoke.texi: Document it.
11646
11647 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11648
11649         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
11650         that have value exprs.
11651
11652 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11653
11654         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
11655         declarations for constants until...
11656         (dw2_output_indirect_constant_1): ... this point.
11657
11658 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
11659
11660         PR target/10242
11661         * arm.md (arm_addsi3): Don't try to split an add with an
11662         eliminable register until after reload has completed.
11663
11664 2009-06-03  Ian Lance Taylor  <iant@google.com>
11665
11666         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
11667         * genattrtab.c (write_length_unit_log): Likewise.
11668         * genchecksum.c (dosum): Likewise.
11669         * gengtype.c (write_rtx_next): Likewise.
11670         (finish_root_table, write_roots): Likewise.
11671         * gimple.c (gimple_ops_offset_): Likewise.
11672         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
11673         * config/arc/arc.c (arc_attribute_table): Likewise.
11674         * config/arm/arm.c (arm_attribute_table): Likewise.
11675         * config/avr/avr.c (avr_attribute_table): Likewise.
11676         * config/crx/crx.c (crx_attribute_table): Likewise.
11677         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
11678         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
11679         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
11680         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
11681         * config/sh/sh.c (sh_attribute_table): Likewise.
11682         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
11683         * config/spu/spu.c (spu_attribute_table): Likewise.
11684         * config/v850/v850.c (v850_attribute_table): Likewise.
11685
11686         * config/alpha/alpha.c (vms_attribute_table): Make static.
11687         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
11688         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
11689         * config/mips/mips.c (mips_attribute_table): Likewise.
11690
11691         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
11692         $(SYSTEM_H).
11693         (cc1-checksum.o): Likewise.
11694
11695 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
11696
11697         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
11698
11699 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
11700
11701         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
11702         insn if it is changing sp.  Use gen_add3_insn instead of
11703         conditionally gen_addsi3 and gen_adddi3.
11704         (offset_below_red_zone_p): New static inline function.
11705         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
11706         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
11707         * config/rs6000/ppc-asm.h: Include auto-host.h.
11708         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
11709         CFI_RESTORE): Define.
11710         * config/rs6000/crtresxgpr.asm: Add unwind info.
11711         * config/rs6000/crtresxfpr.asm: Likewise.
11712         * config/rs6000/crtresgpr.asm: Likewise.
11713         * config/rs6000/crtresfpr.asm: Likewise.
11714         * config/rs6000/crtsavgpr.asm: Likewise.
11715         * config/rs6000/crtsavfpr.asm: Likewise.
11716
11717         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
11718         argument of DWARF2_FRAME_REG_OUT macros.
11719
11720 2009-06-03  Julian Brown  <julian@codesourcery.com>
11721
11722         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
11723         words or less (including TImode) in core registers.
11724
11725 2009-06-03  Richard Guenther  <rguenther@suse.de>
11726
11727         PR middle-end/40328
11728         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
11729
11730 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
11731
11732         * statistics.c (statistics_counter_event): Do not record event
11733         in pass dump if its number == -1.
11734         (curr_statistics_hash): Add assert that we never get passes
11735         with static number == -1.
11736
11737 2009-06-03  Richard Guenther  <rguenther@suse.de>
11738             Andrey Belevantsev  <abel@ispras.ru>
11739
11740         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
11741         non-BLKmode arrays addressable.
11742
11743 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
11744
11745         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
11746         * config/m68k/m68k.h: ... here.
11747         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
11748         m68k and fido.
11749
11750 2009-06-03  Martin Jambor  <mjambor@suse.cz>
11751
11752         PR tree-optimization/40323
11753         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
11754         assignment.
11755
11756 2009-06-03  Richard Guenther  <rguenther@suse.de>
11757
11758         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11759         consistently.
11760
11761 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
11762
11763         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
11764         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
11765         JUMP_TABLE_DATA_P where applicable.
11766         * config/sh/sh.c: Ditto.
11767         * config/sh/sh.h: Ditto.
11768         * config/sh/sh.md: Ditto.
11769         * config/sh/symbian.c: Ditto.
11770
11771 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
11772
11773         * config/i386/driver-i386.c (describe_cache): Optimize
11774         concatenation of strings.  Use snprintf instead of sprintf.
11775         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
11776         target when not compiling with GCC.
11777
11778 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
11779
11780         * config/sh/sh.c: Revert last change.
11781         (sh_expand_epilogue): Emit a blockage insn before the frame
11782         pointer adjustment unconditionally.
11783
11784 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11785
11786         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
11787         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
11788         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
11789         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
11790         to COLLECT_GCC_OPTIONS.
11791
11792 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11793
11794         * collect2.c (target_system_root): New variable.
11795         (main): Handle --sysroot=.
11796         (ignore_library): Strip the sysroot from the library path.
11797
11798 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11799
11800         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
11801         (collect2.o): Depend on collect2-aix.h.
11802         (collect2-aix.o): New rule.
11803         * collect2-aix.h: New file.
11804         * collect2-aix.c: Likewise.
11805         * collect2.c: Include collect2-aix.h.  Don't undefine
11806         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
11807         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
11808         Use TARGET_AIX_VERSION instead of _AIX51.
11809         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
11810         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
11811         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
11812         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
11813         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
11814
11815 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11816
11817         * collect2.c (ignore_library): Avoid premature post-increment
11818         and null deference.
11819
11820 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
11821
11822         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
11823         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
11824         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
11825         CROSS_DIRECTORY_STRUCTURE too.
11826         (LINK_LIBG_SPEC): Likewise.
11827         (LIB_SPEC): Add %R to sysroot paths.
11828         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
11829         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
11830         * config/rs6000/aix51.h: As for aix43.h.
11831         * config/rs6000/aix52.h: Likewise.
11832         * config/rs6000/aix53.h: Likewise.
11833         * config/rs6000/aix61.h: Likewise.
11834         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
11835         to the beginning of sysroot paths.
11836
11837 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11838
11839         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
11840         INSN_LISTs that are out of the REG_NOTE range.
11841
11842 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11843
11844         * loop-unroll.c (struct iv_to_split): Add pointer to next.
11845         (struct var_to_expand): Likewise.
11846         (struct opt_info): Add head and tail for linked lists of the above.
11847         (analyze_insn_to_expand_var): Initialize next.
11848         (analyze_iv_to_split_insn): Likewise.
11849         (analyze_insns_in_loop): Create linked lists.
11850         (allocate_basic_variable): Simplify for use without hash table.
11851         (insert_var_expansion_initialization): Likewise, make it type-safer.
11852         (combine_var_copies_in_loop_exit): Likewise.
11853         (apply_opt_in_copies): Walk lists rather than hash tables.
11854         (release_var_copies): Simplified and inlined by hand into...
11855         (free_opt_info): ... this function.
11856
11857 2009-06-02  Richard Guenther  <rguenther@suse.de>
11858
11859         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
11860         for field decls.
11861
11862 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11863
11864         * cfgexpand.c (gimple_expand_cfg): Discard the source location
11865         only for builtins that are not overridden.
11866
11867 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11868
11869         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
11870         label string.
11871
11872 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11873
11874         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
11875
11876 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11877
11878         * combine.c (move_deaths): Compare LUIDs within the same BB only.
11879
11880 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
11881
11882         * common.opt (fdump-unnumbered-links): New.
11883         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
11884         * print-rtl.c (flag_dump_unnumbered_links): New.
11885         (print_rtx): Test it.
11886
11887 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
11888
11889         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
11890         push/pop multiple to 8-byte alignment.
11891
11892 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
11893
11894         * config/i386/i386.c (queued_cfa_restores): New static variable.
11895         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
11896         functions.
11897         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
11898         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
11899         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
11900         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
11901         note unconditionally.
11902         (ix86_emit_restore_regs_using_mov): Likewise.
11903         (ix86_emit_restore_sse_regs_using_mov): Likewise.
11904         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
11905         it through to ix86_emit_restore_reg_using_pop.
11906         (ix86_emit_leave): Add RED_OFFSET argument.  Call
11907         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
11908         instead of adding REG_CFA_OFFSET note unconditionally.
11909         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
11910         the above functions.  Call ix86_add_queued_cfa_restore_notes when
11911         needed.
11912
11913         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
11914         force output of the label even for dwarf2out_do_cfi_asm.
11915         (add_fde_cfi): If -g2 and above and cfi might change CFA,
11916         force creation of CFI label and chain DW_CFA_set_loc jumping to it
11917         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
11918         caller.
11919         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
11920         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
11921         dwarf2out_cfi_label callers.
11922         * tree.h (dwarf2out_cfi_label): Adjust prototype.
11923         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
11924         Adjust dwarf2out_cfi_label callers.
11925         * config/vax/vax.c (vax_output_function_prologue): Likewise.
11926
11927         * config/i386/i386.h (struct machine_cfa_state,
11928         struct machine_function): Guard with ifndef USED_FOR_TARGET
11929         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
11930
11931         PR other/40024
11932         * emutls.c (__emutls_get_address): Change arr->size to mean number
11933         of allocated arr->data entries instead of # of slots + 1.
11934
11935         PR middle-end/40316
11936         * recog.c (peep2_reinit_state): New function.
11937         (peephole2_init_state): Use it at the end of a basic block and also
11938         when seeing a RTX_FRAME_RELATED_P insn.
11939
11940 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
11941
11942         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
11943         fixuns_truncrfdi2): New.
11944         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
11945         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
11946         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
11947         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
11948         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
11949         *recip_approx): Remove.
11950         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
11951         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
11952         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
11953         move to div.md.
11954         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
11955         setf_exp_rf): New.
11956
11957 2009-06-01  Ian Lance Taylor  <iant@google.com>
11958
11959         * attribs.c (register_attribute): Use CONST_CAST.
11960         * collect2.c (main): Use CONST_CAST2.
11961         (scan_prog_file): Likewise.
11962         * gcc.c (process_command, main): Likewise.
11963         * toplev.c (toplev_main): Likewise.
11964
11965         * c-typeck.c (handle_warn_cast_qual): New static function,
11966         partially broken out of build_c_cast.
11967         (build_c_cast): Call handle_warn_cast_qual.
11968         * doc/invoke.texi (Warning Options): Document new effect of
11969         -Wcast-qual.
11970
11971 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
11972
11973         * diagnostic.c (diagnostic_build_prefix): Always print columns.
11974         (diagnostic_report_current_module): Print columns.
11975         * common.opt (flag_show_column): Enable by default.
11976
11977 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
11978
11979         * alias.c (find_base_term): Check for NULL term before returning.
11980
11981 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11982
11983         Revert due to PR40320:
11984         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
11985         * calls.c (emit_library_call_value_1): Don't force_operand for move
11986         and push insns.
11987
11988 2009-06-01  Olivier Hainque  <hainque@adacore.com>
11989             Eric Botcazou  <ebotcazou@adacore.com>
11990
11991         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
11992         to be processed as a bitfield for constructor output purposes.
11993         * output.h (initializer_constant_valid_for_bitfield_p): Declare
11994         new function.
11995         * varasm.c (oc_local_state): New type, output_constructor
11996         local state to support communication with helpers.
11997         (oc_outer_state): New type, output_constructor outer state of
11998         relevance in recursive calls.
11999         (output_constructor_array_range): New output_constructor helper,
12000         extracted code for an array range element.
12001         (output_constructor_regular_field): New output_constructor helper,
12002         extracted code for an element that is not a bitfield.
12003         (output_constructor_bitfield): New output_constructor helper,
12004         extracted code for a bitfield element.  Accept an OUTER state
12005         argument for recursive processing.  Recurse on record or array
12006         CONSTRUCTOR values, possibly past noop conversions.
12007         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
12008         VALUE is a valid constant-valued expression for use in a static
12009         bit-field initializer.
12010         (output_constructor): Rework to use helpers.  Accept and honor an
12011         OUTER state argument for recursive calls.  Return total size.  Be
12012         prepared for nested constructors initializing bitfields.
12013         (output_constant): Feed OUTER in calls to output_constructor.
12014
12015 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12016
12017         * calls.c (emit_library_call_value_1): Don't force_operand for move
12018         and push insns.
12019
12020 2009-06-01  Nick Clifton  <nickc@redhat.com>
12021
12022         * doc/invoke.texi (IA-64 Options): Fix typo.
12023
12024 2009-06-01  Ira Rosen  <irar@il.ibm.com>
12025
12026         PR tree-optimization/39129
12027         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
12028         printed message.
12029         (vect_do_peeling_for_loop_bound): Use
12030         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12031         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12032         (vect_loop_versioning): Likewise.
12033         (vect_create_cond_for_alias_checks): Fix indentation.
12034         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
12035         macros.
12036         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
12037         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
12038         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
12039         "control flow in loop".
12040         (vect_estimate_min_profitable_iters): Use
12041         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12042         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12043         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12044         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
12045         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
12046         statement belongs to a group of strided accesses with the exact code
12047         check.
12048         (vectorizable_load): Likewise.
12049         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
12050         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12051
12052 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
12053
12054         * config/freebsd-stdint.h: New file.
12055         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
12056         Add freebsd-stdint.h to tm_file.
12057
12058 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
12059
12060         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
12061         (thumb2_extendhidi2): Likewise.
12062
12063 2009-05-31  Ian Lance Taylor  <iant@google.com>
12064
12065         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
12066
12067 2009-05-31  Ian Lance Taylor  <iant@google.com>
12068
12069         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
12070         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
12071         (ipa-reference.o): Depend upon gt-ipa-reference.h.
12072
12073 2009-05-31  Jason Merrill  <jason@redhat.com>
12074
12075         * tree-pretty-print.c (print_call_name): Take the callee, not the
12076         call itself.  Make non-static.  Use dump_function_name for functions.
12077         (dump_generic_node): Adjust.
12078         * diagnostic.h: Declare print_call_name.
12079         * gimple-pretty-print.c (dump_gimple_call): Use it.
12080
12081 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12082
12083         * config/sh/sh.md (ashldi3_std): New define_expand.
12084         (ashldi3): Use it.
12085
12086 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12087
12088         PR target/40313
12089         * config/sh/sh.c: Include debug.h.
12090         (sh_expand_epilogue): Emit a blockage insn before the frame
12091         pointer adjustment also when dwarf2out_do_frame returns true.
12092
12093 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
12094
12095         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
12096         (thumb2_extendqidi2): New pattern.
12097
12098 2009-05-31  Ira Rosen  <irar@il.ibm.com>
12099
12100         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
12101         mark phis for renaming.
12102         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
12103         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
12104         Call mark_sym_for_renaming.
12105         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
12106         * tree-vect-loop.c (vect_transform_loop): Remove
12107         vect_memsyms_to_rename initialization and a call to
12108         mark_set_for_renaming.
12109
12110 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
12111
12112         PR middle-end/40304
12113         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
12114         frame related even if !set_cfa && style < 0.
12115
12116 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
12117
12118         * config/i386/mingw-tls.c: New file.
12119         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
12120         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
12121         defining _WIN32 but not __CYGWIN__.
12122
12123 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12124
12125         * configure.ac: Add MPC support.
12126
12127         * config.in, configure: Regenerate.
12128
12129 2009-05-29  Richard Henderson  <rth@redhat.com>
12130
12131         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
12132         NOTE_INSN_BASIC_BLOCK.
12133         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
12134         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
12135         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
12136         to be deleted.
12137         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
12138         add in_use field.
12139         (add_cfi): Disable check redefining cfa away from drap.
12140         (lookup_cfa_1): Add remember argument; handle remember/restore.
12141         (lookup_cfa): Pass remember argument.
12142         (cfa_remember): New.
12143         (compute_barrier_args_size_1): Remove sibcall check.
12144         (dwarf2out_frame_debug_def_cfa): New.
12145         (dwarf2out_frame_debug_adjust_cfa): New.
12146         (dwarf2out_frame_debug_cfa_offset): New.
12147         (dwarf2out_frame_debug_cfa_register): New.
12148         (dwarf2out_frame_debug_cfa_restore): New.
12149         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
12150         (dwarf2out_begin_epilogue): New.
12151         (dwarf2out_frame_debug_restore_state): New.
12152         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
12153         DW_CFA_restore_state.
12154         (output_cfi_directive): Likewise.
12155         (convert_cfa_to_fb_loc_list): Likewise.
12156         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
12157         * dwarf2out.h: Update.
12158         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
12159         (copy_insn_1): Early out for null.
12160         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
12161         and dwarf2out_frame_debug_restore_state.
12162         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
12163         (prologue_insn_hash, epilogue_insn_hash): New.
12164         (free_after_compilation): Adjust freeing accordingly.
12165         (record_insns): Create hash table if needed; push insns into
12166         hash instead of array.
12167         (maybe_copy_epilogue_insn): New.
12168         (contains): Search hash table instead of array.
12169         (sibcall_epilogue_contains): Remove.
12170         (thread_prologue_and_epilogue_insns): Split eh_return insns
12171         and mark them as epilogues.
12172         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
12173         scanning in terms of basic blocks.
12174         * insn-notes.def (CFA_RESTORE_STATE): New.
12175         * jump.c (returnjump_p_1): Accept EH_RETURN.
12176         (eh_returnjump_p_1, eh_returnjump_p): New.
12177         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
12178         CFA_REGISTER, CFA_RESTORE): New.
12179         * rtl.def (EH_RETURN): New.
12180         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
12181
12182         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
12183         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
12184
12185         * config/i386/i386.c (gen_push): Update cfa state.
12186         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
12187         add a CFA_ADJUST_CFA note.
12188         (ix86_dwarf_handle_frame_unspec): Remove.
12189         (ix86_expand_prologue): Update cfa state.
12190         (ix86_emit_restore_reg_using_pop): New.
12191         (ix86_emit_restore_regs_using_pop): New.
12192         (ix86_emit_leave): New.
12193         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
12194         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
12195         * config/i386/i386.h (struct machine_cfa_state): New.
12196         (ix86_cfa_state): New.
12197         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
12198         (eh_return_internal): Merge from eh_return_<mode>,
12199         use eh_return rtx, split w/ epilogue.
12200
12201 2009-05-29  Ian Lance Taylor  <iant@google.com>
12202
12203         * builtins.c (validate_gimple_arglist): Don't use va_arg with
12204         enum type.
12205         * calls.c (emit_library_call_value_1): Likewise.
12206
12207         * c-typeck.c (c_build_va_arg): New function.
12208         * c-tree.h (c_build_va_arg): Declare.
12209         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
12210         instead of build_va_arg.
12211
12212 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
12213
12214         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
12215         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
12216         (ptr_difference_cost): Use affine combinations to compute it.
12217         (difference_cost): Likewise.
12218         (get_computation_cost_at): Compute more accurate cost for addresses
12219         if the ratio is a multiplier allowed in addresses.
12220         For non-addresses, consider that an additional offset or symbol is
12221         added only once.
12222
12223 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12224
12225         * config/i386/i386.c (ix86_decompose_address): Avoid useless
12226         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
12227
12228         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
12229         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
12230         (prefix_rex): For UNIT_MMX don't imply the prefix by default
12231         if MODE_DI.
12232         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
12233         to 1 for TYPE_SSE{IADD1,CVT1}.
12234         (prefix_vex_imm8): Removed.
12235         (length_vex): Only pass 1 as second argument to
12236         ix86_attr_length_vex_default if prefix_extra is 0.
12237         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
12238         (length): For prefix vex computation use length_immediate
12239         attribute instead of prefix_vex_imm8.
12240         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
12241         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
12242         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
12243         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
12244         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
12245         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
12246         a space in between the operands.
12247         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
12248         if one operand is 0xff and the other one si, di, bp or sp.
12249         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12250         other one si, di, bp or sp.
12251         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12252         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12253         type and mode attributes.
12254         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12255         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12256         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12257         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12258         prefix_data16 attribute iff MODE_DF.
12259         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12260         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12261         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12262         constm128_operand in length_immediate computation.
12263         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
12264         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12265         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12266         length_immediate attribute to 1.
12267         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12268         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12269         for certain alternatives.
12270         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
12271         prefix_data16 attribute if MODE_V1DF.
12272         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
12273         length_immediate to 1.
12274         (set_got_rex64, set_rip_rex64): Remove length attribute, set
12275         length_address to 4, set mode attribute to MODE_DI.
12276         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
12277         (fxam<mode>2_i387): Set length attribute to 4.
12278         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
12279         *prefetch_3dnow_rex): Override length_address attribute.
12280         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
12281         attributes.
12282         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
12283         (constm128_operand): Removed.
12284         * config/i386/i386.c (memory_address_length): For
12285         disp && !index && !base in 64-bit mode account for SIB byte if
12286         print_operand_address can't optimize disp32 into disp32(%rip)
12287         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
12288         for fs: or gs: segment.
12289         (ix86_attr_length_immediate_default): When checking if shortform
12290         is possible, truncate immediate to the length of the non-shortened
12291         immediate.
12292         (ix86_attr_length_address_default): Ignore MEM_P operands
12293         with X constraint.
12294         (ix86_attr_length_vex_default): Only check for DImode on
12295         GENERAL_REG_P operands.
12296         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
12297         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
12298         (sse_cvttps2pi): Clear prefix_rep attribute.
12299         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
12300         attribute.
12301         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
12302         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
12303         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
12304         iff operand 2 is const_int_operand.
12305         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
12306         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
12307         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
12308         instead of vex.
12309         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
12310         prefix_data16.
12311         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
12312         prefix_data16 attribute for movlpd and movhpd instructions.
12313         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
12314         length_immediate for shufpd instruction.
12315         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
12316         (avx_cmpp<avxmodesuffixf2c><mode>3,
12317         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
12318         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
12319         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
12320         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
12321         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
12322         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
12323         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
12324         prefix_data16 attribute for the first alternative to 1.
12325         (*avx_loadlps): Override length_immediate for the first alternative.
12326         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
12327         attributes for second alternative.
12328         (*vec_concatv2sf_sse4_1): Override length_immediate and
12329         prefix_data16 attributes for second alternative.
12330         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12331         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12332         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12333         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12334         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12335         prefix_data16 and length_immediate to 1.
12336         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12337         to 1.
12338         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12339         prefix_extra attribute for variants that don't have 0f prefix alone.
12340         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
12341         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12342         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12343         *sse4_1_pextrd): Set length_immediate to 1.
12344         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
12345         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12346         to 1.
12347         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12348         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12349         length_immediate to 1 for second alternative.
12350         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12351         prefix_extra and length_immediate attributes for the first
12352         alternative.
12353         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12354         first alternative.
12355         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
12356         to 1 for the first and third alternative.
12357         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12358         alternative.
12359         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12360         attribute.
12361         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12362         attribute to 0.
12363         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12364         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12365         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12366         *avx_psign<mode>3): Set prefix_extra attribute to 1.
12367         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12368         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12369         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12370         ssse3_psign<mode>3): Override prefix_rex attribute.
12371         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12372         (ssse3_palignrti): Override length_immediate to 1.
12373         (ssse3_palignrdi): Override length_immediate to 1, override
12374         prefix_rex attribute.
12375         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12376         (sse4a_extrqi): Override length_immediate to 2.
12377         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
12378         (sse4a_insertq): Override prefix_data16 to 0.
12379         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12380         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12381         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12382         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12383         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12384         and length_immediate to 1.
12385         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12386         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12387         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12388         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12389         and length_immediate to 1.
12390         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12391         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12392         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12393         avx_ptest256): Override prefix_extra to 1.
12394         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12395         Override prefix_data16 and length_immediate to 1.
12396         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12397         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12398         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12399         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12400         prefix_data16 to 0 and prefix_extra to 2.
12401         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12402         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12403         attribute.
12404         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12405         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12406         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12407         and prefix_extra to 2.
12408         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12409         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12410         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12411         avx_vpermilvar<mode>3,
12412         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12413         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12414         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12415         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12416         Override prefix_extra to 1.
12417         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12418         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12419         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12420         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12421         prefix_extra and length_immediate to 1.
12422         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12423         modrm to 0.
12424         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12425         to 1 for the first alternative.
12426         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12427         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12428         cases.
12429         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12430         *movv2sf_internal_avx, *movv2sf_internal): Override
12431         prefix_rep attribute for certain alternatives.
12432         (*mov<mode>_internal): Override prefix_rep or prefix_data16
12433         attributes for certain alternatives.
12434         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12435         attributes for certain alternatives.
12436         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12437         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12438         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12439         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12440         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12441         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12442         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12443         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12444         length_immediate to 1 if operand 2 is const_int_operand.
12445         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12446         *vec_extractv2si_1): Set length_immediate attribute to 1.
12447         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12448         using old 3DNOW insn rather than SSE/3DNOW_A.
12449         (mmx_emms, mmx_femms): Clear modrm attribute.
12450
12451 2009-05-29  Martin Jambor  <mjambor@suse.cz>
12452
12453         * tree-sra.c:  New implementation of SRA.
12454
12455         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12456         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12457         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12458         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12459         (SRA_MAX_STRUCTURE_COUNT): Removed.
12460         (SRA_FIELD_STRUCTURE_RATIO): Removed.
12461         * doc/invoke.texi (sra-max-structure-size): Removed.
12462         (sra-field-structure-ratio): Removed.
12463
12464 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12465
12466         PR middle-end/40291
12467         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12468         before expansion.
12469
12470 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
12471
12472         PR rtl-optimization/40101
12473         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12474         seqno.  Adjust comment.
12475         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12476         inserting bookkeeping before a jump, the jump is not scheduled.
12477         When no positive seqno found, provide a value.  Add comment.
12478
12479 2009-05-29  Richard Guenther  <rguenther@suse.de>
12480
12481         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12482         short-cutting on the first component.
12483
12484 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12485
12486         PR middle-end/39958
12487         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12488         for trees other than decls/types.
12489
12490 2009-05-29  Richard Guenther  <rguenther@suse.de>
12491
12492         * tree-ssa-operands.c (get_expr_operands): Do not handle
12493         INDIRECT_REFs in the handled-component case.  Remove
12494         unused get_ref_base_and_extent case.
12495         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
12496         tree_low_cst and host_integerp where possible.
12497         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
12498         codes for equivalence.
12499         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
12500
12501 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
12502
12503         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
12504         to tmake_file for i[34567]86-*-cygwin*.
12505
12506 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12507
12508         PR target/40017
12509         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
12510         (altivec_categorize_keyword, init_vector_keywords,
12511         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
12512         similar to bool.
12513
12514 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
12515
12516         * tree.c (handle_dll_attribute): Check if node is
12517         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
12518
12519 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
12520
12521         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
12522         component.
12523         (thumb2_zero_extendqidi2): Likewise.
12524
12525 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
12526
12527         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
12528         instead of gen_movrt.
12529         * config/sh/sh.md (movrt): Remove.
12530
12531 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
12532
12533         * doc/invoke.texi (IA-64 Options):
12534         Add -msdata, -mfused-madd, -mno-inline-float-divide,
12535         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
12536         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
12537         -msched-prefer-non-control-spec-insns,
12538         -msched-stop-bits-after-every-cycle,
12539         -msched-count-spec-in-critical-path,
12540         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
12541         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
12542         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
12543         and -msched-spec-verbose.
12544
12545 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
12546
12547         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
12548         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
12549         error if used.
12550         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
12551
12552 2009-05-28  Richard Guenther  <rguenther@suse.de>
12553
12554         * tree-ssa-alias.c (ao_ref_init): New function.
12555         (ao_ref_base): Likewise.
12556         (ao_ref_base_alias_set): Likewise.
12557         (ao_ref_alias_set): Likewise.
12558         (refs_may_alias_p_1): Change signature.
12559         (refs_may_alias_p): Adjust.
12560         (refs_anti_dependent_p): Likewise.
12561         (refs_output_dependent_p): Likewise.
12562         (call_may_clobber_ref_p_1): Change signature.
12563         (call_may_clobber_ref_p): Adjust.
12564         (stmt_may_clobber_ref_p_1): New function split out from ...
12565         (stmt_may_clobber_ref_p): ... here.
12566         (maybe_skip_until): Adjust signature.
12567         (get_continuation_for_phi): Likewise.
12568         (walk_non_aliased_vuses): Likewise.
12569         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
12570         (ao_ref_init): Declare.
12571         (ao_ref_base): Likewise.
12572         (ao_ref_alias_set): Likewise.
12573         (stmt_may_clobber_ref_p_1): Likewise.
12574         (walk_non_aliased_vuses): Adjust.
12575         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
12576         (get_ref_from_reference_ops): remove.
12577         (vn_reference_lookup_2): Adjust signature.
12578         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
12579         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
12580         (vn_reference_lookup): Adjust.
12581         (vn_reference_insert): Likewise.
12582         (vn_reference_insert_pieces): Adjust signature.
12583         (visit_reference_op_call): Adjust.
12584         * tree-ssa-pre.c (get_expr_type): Simplify.
12585         (phi_translate_1): Adjust.
12586         (compute_avail): Likewise.
12587         (translate_vuse_through_block): Do not re-build trees.
12588         (value_dies_in_block_x): Likewise.
12589         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
12590         fields.
12591         (vn_reference_lookup_pieces): Adjust declaration.
12592         (vn_reference_insert_pieces): Likewise.
12593
12594 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
12595
12596         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
12597         with checking disabled.
12598
12599 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
12600
12601         PR target/37216
12602
12603         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
12604         macro definition for support of three-operand format aligned
12605         .comm directive in assembler on cygwin/pe/mingw target OS.
12606         * configure:  Regenerate.
12607         * config.h:  Regenerate.
12608
12609         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
12610         aligned form of .comm directive if -mpe-aligned-commons is in effect.
12611         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
12612
12613         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
12614         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
12615
12616 2009-05-28  Ira Rosen  <irar@il.ibm.com>
12617
12618         PR tree-optimization/40254
12619         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
12620         in analysis of basic blocks.
12621
12622 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
12623
12624         PR middle-end/33699
12625         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
12626         * target-def.h (TARGET_CONST_ANCHOR): New macro.
12627         (TARGET_INITIALIZER): Use it.
12628         * cse.c (CHEAPER): Move it up to the other macros.
12629         (insert): Rename this ...
12630         (insert_with_costs): ... to this.  Add cost parameters.  Update
12631         function comment.
12632         (insert): New function.  Call insert_with_costs.
12633         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
12634         find_reg_offset_for_const, try_const_anchors): New functions.
12635         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
12636         when using a const-anchor.  Call insert_const_anchors.
12637         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
12638         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
12639
12640 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12641
12642         * tree-inline.c (remap_decls): Enable nonlocalized variables
12643         when not optimizing.
12644
12645 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12646
12647         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
12648         Simplify other tests involving optimize.
12649
12650 2009-05-27  Tom Tromey  <tromey@redhat.com>
12651
12652         * unwind-dw2.c (_Unwind_DebugHook): New function.
12653         (uw_install_context): Call _Unwind_DebugHook.
12654
12655 2009-05-27  Tom Tromey  <tromey@redhat.com>
12656
12657         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
12658
12659 2009-05-27  Ian Lance Taylor  <iant@google.com>
12660
12661         * Makefile.in (LINKER, LINKER_FLAGS): Define.
12662         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
12663         (ALL_LINKERFLAGS): Define.
12664         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
12665         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12666         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
12667         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12668         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
12669         $(LINKER_FOR_BUILD).
12670         (build/gcov-iov$(build_exeext)): Likewise.
12671
12672 2009-05-27  Julian Brown  <julian@codesourcery.com>
12673
12674         * gcse.c (target.h): Include.
12675         (can_assign_to_reg_without_clobbers_p): Check that the target allows
12676         copy of argument to a pseudo register.
12677
12678 2009-05-27  Diego Novillo  <dnovillo@google.com>
12679
12680         * tree-ssa-live.c (dump_scope_block): Document arguments.
12681         (dump_scope_blocks): Document.
12682         (debug_scope_blocks): New.
12683         * tree-flow.h (debug_scope_blocks): Declare.
12684
12685 2009-05-21  Denis Chertykov  <denisc@overta.ru>
12686
12687         * doc/contrib.texi (Contributors): Add myself to the list.
12688
12689 2009-05-27  Olivier Hainque  <hainque@adacore.com>
12690
12691         * expr.c (target_align): New function.  Alignment the TARGET of an
12692         assignment may be assume to have.
12693         (highest_pow2_factor_for_target): Use it instead of relying on
12694         immediate tree attributes of TARGET, not necessarily honored when
12695         intermediate bitfields are involved.
12696
12697 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
12698
12699         PR target/40266
12700         * config/i386/driver-i386.c (host_detect_local_cpu): Support
12701         AVX, SSE4, AES, PCLMUL and POPCNT.
12702
12703 2009-05-27  Diego Novillo  <dnovillo@google.com>
12704
12705         * tree-pretty-print.c (dump_location): New.
12706         (dump_generic_node): Call it.
12707         Factor code to handle BLOCK nodes ...
12708         (dump_block_node): ... here.
12709
12710 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
12711
12712         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
12713         with it.
12714         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
12715         included.
12716         * gcc-plugin.h: Include config.h and system.h.
12717         (IN_GCC): Define if not defined.
12718
12719 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
12720
12721         PR middle-end/40249
12722         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
12723         with -fno-inline.
12724
12725 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
12726
12727         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
12728         applicable.
12729         * config/m32r/m32r.h: Ditto.
12730         * config/m32r/m32r.md: Ditto.
12731         * config/m32r/predicates.md: Ditto.
12732
12733 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
12734
12735         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
12736
12737 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
12738
12739         * doc/plugins.texi
12740         (Loading plugins): typo.
12741         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
12742         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12743         (Interacting with the GCC Garbage Collector): Added new section.
12744         (Giving information about a plugin): Added new section for
12745         PLUGIN_INFO.
12746         * ggc.h (ggc_register_root_tab): Added declaration.
12747         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
12748         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
12749         (register_callback): Improved comment in declaration.
12750         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
12751         (extra_root_vec) Added static variable for dynamic roots registration.
12752         (ggc_register_root_tab) Added new routine.
12753         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
12754         PLUGIN_GGC_MARKING event.
12755         * ggc-zone.c: Include plugin.h.
12756         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12757         * ggc-page.c: Include plugin.h.
12758         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
12759         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
12760         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
12761         (register_callback): check lack of callbacks for
12762         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
12763         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
12764         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
12765         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12766         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
12767         dependency on plugin.h.
12768         (plugin.o): Added dependency on ggc.h...
12769
12770 2009-05-26  Richard Guenther  <rguenther@suse.de>
12771
12772         PR middle-end/40248
12773         Revert
12774         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
12775         with mismatched comparison modes.
12776
12777         * expr.c (expand_expr_real_1): Expand the operand of a
12778         VIEW_CONVERT_EXPR in its natural mode.
12779
12780 2009-05-26  Ian Lance Taylor  <iant@google.com>
12781
12782         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
12783         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
12784         (ALL_COMPILERFLAGS): Define.
12785         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
12786         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12787         (collect2$(exeext), collect2.o): Likewise.
12788         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
12789         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
12790         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
12791         (libbackend.o, intl.o, cppdefault.o): Likewise.
12792         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12793         (build/%.o): Use $(COMPILER_FOR_BUILD).
12794         (build/gen%$(build_exeext)): Likewise.
12795         (build/gcov-iov$(build_exeext)): LIkewise.
12796         * config/t-darwin (darwin.o): Use $(COMPILER).
12797         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
12798         * config/t-sol2 (sol2-c.o): Likewise.
12799         (sol2.o): Likewise.
12800         * config/t-vxworks (vxworks.o): Likewise.
12801         * config/x-darwin (host-darwin.o): Likewise.
12802         * config/x-hpux (host-hpux.o): Likewise.
12803         * config/x-linux (host-linux.o): Likewise.
12804         * config/x-solaris (host-solaris.o): Likewise.
12805         * config/alpha/x-alpha (driver-alpha.o): Likewise.
12806         * config/arm/t-arm (arm-c.o): Likewise.
12807         * config/arm/t-pe (pe.o): Likewise.
12808         * config/arm/t-wince-pe (pe.o): Likewise.
12809         * config/i386/t-cygming (winnt.o): Likewise.
12810         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
12811         * config/i386/t-cygwin (cygwin1.o): Likewise.
12812         (cygwin2.o): Likewise.
12813         * config/i386/t-i386 (i386-c.o): Likewise.
12814         * config/i386/t-interix (winnt.o): Likewise.
12815         * config/i386/t-netware (netware.o): Likewise.
12816         * config/i386/t-nwld (nwld.o): Likewise.
12817         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
12818         * config/i386/x-i386 (driver-i386.o): Likewise.
12819         * config/i386/x-cygwin (host-cygwin.o): Likewise.
12820         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
12821         * config/ia64/t-ia64 (ia64-c.o): Likewise.
12822         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
12823         * config/mips/x-native (driver-native.o): Likewise.
12824         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
12825         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
12826         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
12827         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
12828         * config/score/t-score-elf (score7.o): Likewise.
12829         (score3.o): Likewise.
12830         * config/sh/t-sh (sh-c.o): Likewise.
12831         * config/sh/t-symbian (sh-c.o): Likewise.
12832         (symbian.o): Likewise.
12833         * config/spu/t-spu-elf (spu-c.o): Likewise.
12834         * config/v850/t-v850 (v850-c.o): Likewise.
12835         * config/v850/t-v850e (v850-c.o): Likewise.
12836
12837 2009-05-26  Richard Guenther  <rguenther@suse.de>
12838
12839         PR tree-optimization/40122
12840         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
12841         VECTOR_CSTs if possible.
12842         (fold_gimple_assign): Likewise.
12843
12844 2009-05-26  Richard Guenther  <rguenther@suse.de>
12845
12846         PR middle-end/40252
12847         * fold-const.c (fold_binary): Use the correct types for building
12848         rotates.
12849
12850 2009-05-26  Richard Guenther  <rguenther@suse.de>
12851
12852         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
12853         redundant calls to merge_alias_info.
12854         (bump_vector_ptr): Likewise.
12855         * tree-ssa-copy.c (merge_alias_info): Remove.
12856         (replace_exp_1): Remove call to merge_alias_info.
12857         (propagate_tree_value): Likewise.
12858         (fini_copy_prop): Propagate points-to info.
12859         * tree-flow.h (merge_alias_info): Remove.
12860
12861 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
12862
12863         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
12864
12865 2009-05-25  Jan Hubicka  <jh@suse.cz>
12866
12867         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
12868         * cgraph.h (struct inline_summary): New filed self_wize,
12869         size_inlining_benefit, self_time and time_inlining_benefit.
12870         (struct cgraph_global_info): Replace insns by time ans size fields.
12871         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
12872         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
12873         (ipcp_update_callgraph): Do not touch function bodies.
12874         * ipa-inline.c: Include except.h
12875         (MAX_TIME): New constant.
12876         (overall_insns): Remove.
12877         (leaf_node_p): New.
12878         (overall_size, max_benefit): New static variables.
12879         (cgraph_estimate_time_after_inlining): New function.
12880         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
12881         (cgraph_clone_inlined_nodes): Update size.
12882         (cgraph_mark_inline_edge): Update size.
12883         (cgraph_estimate_growth): Use size info.
12884         (cgraph_check_inline_limits): Check size.
12885         (cgraph_default_inline_p): Likewise.
12886         (cgraph_edge_badness): Compute badness based on benefit and size cost.
12887         (cgraph_decide_recursive_inlining): Check size.
12888         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
12889         and times.
12890         (cgraph_decide_inlining): Likewise.
12891         (cgraph_decide_inlining_incrementally): Likewise; honor
12892         PARAM_EARLY_INLINING_INSNS.
12893         (likely_eliminated_by_inlining_p): New predicate.
12894         (estimate_function_body_sizes): New function.
12895         (compute_inline_parameters): Use it.
12896         * except.c (must_not_throw_labels): New function.
12897         * except.h (must_not_throw_labels): Declare.
12898         * tree-inline.c (init_inline_once): Kill inlining_weigths
12899         * tree-ssa-structalias.c: Avoid uninitialized warning.
12900         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
12901         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
12902         (PARAM_INLINE_CALL_COST): Remove.
12903         (PARAM_EARLY_INLINING_INSNS): New.
12904
12905 2009-05-25  Richard Guenther  <rguenther@suse.de>
12906
12907         PR tree-optimization/36327
12908         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
12909         callback for reference translation or lookup at the point of may-defs.
12910         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
12911         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
12912         for union COMPONENT_REFs.
12913         (vn_reference_lookup_3): New callback.  Lookup from memset
12914         and CONSTRUCTOR assignment, translate through struct copies.
12915         (vn_reference_lookup_pieces): Make sure to not free the
12916         passed operands array.  Adjust walk_non_aliased_vuses call.
12917         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
12918         make sure we do not leak memory.
12919
12920 2009-05-25  Richard Guenther  <rguenther@suse.de>
12921
12922         * tree-ssa-alias.h (dump_points_to_solution): Declare.
12923         * tree-inline.c (expand_call_inline): Reset the escaped and
12924         callused solutions.
12925         * tree-ssa-structalias.c (pass_build_ealias): New.
12926         * tree-pass.h (pass_build_ealias): Declare.
12927         * passes.c (init_optimization_passes): Add PTA during
12928         early optimizations.
12929         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
12930         and CALLUSED solutions.
12931         (dump_points_to_solution): New function, split out from ...
12932         (dump_points_to_info_for): ... here.
12933         * tree-parloops.c (parallelize_loops): Reset the escaped and
12934         callused solutions.
12935
12936 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12937
12938         PR bootstrap/40027
12939         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
12940         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
12941
12942 2009-05-25  Ira Rosen  <irar@il.ibm.com>
12943
12944         PR tree-optimization/40238
12945         * tree-vect-stmts.c (vect_init_vector): Insert initialization
12946         statements after basic block's labels.
12947         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
12948         to free the allocated memory.
12949
12950 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12951
12952         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
12953         return address with a USE.
12954
12955 2009-05-24  Richard Guenther  <rguenther@suse.de>
12956
12957         PR middle-end/40233
12958         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
12959         array type from the main variant of the inner type.
12960
12961 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12962
12963         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
12964         definition to bool (from int) to un-break build.
12965         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
12966
12967 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
12968
12969         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
12970         discard_stmt_changes): Delete.
12971         * tree-ssa-operands.c (scb_stack): Delete.
12972         (init_ssa_operands): Do not initialize it.
12973         (fini_ssa_operands): Do not free it.
12974         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
12975
12976         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
12977         update_stmt, remove the others.  Fix comments.
12978         * tree-dfa.c (optimize_stack_restore): Likewise.
12979         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
12980         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
12981         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
12982         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
12983         Likewise.
12984         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
12985         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
12986         (dom_opt_finalize_block): Likewise, adjusting access to
12987         stmts_to_rescan.
12988         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
12989         (stmts_to_rescan): Change item type to gimple.
12990         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
12991
12992 2009-05-24  Ira Rosen  <irar@il.ibm.com>
12993
12994         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
12995         * tree-pass.h (pass_slp_vectorize): New pass.
12996         * params.h (SLP_MAX_INSNS_IN_BB): Define.
12997         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
12998         * tree-vectorizer.c (timevar.h): Include.
12999         (user_vect_verbosity_level): Declare.
13000         (vect_location): Fix comment.
13001         (vect_set_verbosity_level): Update user_vect_verbosity_level
13002         instead of vect_verbosity_level.
13003         (vect_set_dump_settings): Add an argument. Ignore user defined
13004         verbosity if dump flags require higher level of verbosity. Print to
13005         stderr only for loop vectorization.
13006         (vectorize_loops): Update call to vect_set_dump_settings.
13007         (execute_vect_slp): New function.
13008         (gate_vect_slp): Likewise.
13009         (struct gimple_opt_pass pass_slp_vectorize): New.
13010         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
13011         access its members.
13012         (vec_info_for_bb): New function.
13013         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
13014         (VECTORIZATION_ENABLED): New macro.
13015         (SLP_ENABLED, SLP_DISABLED): Likewise.
13016         (vect_is_simple_use): Add bb_vec_info argument.
13017         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
13018         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
13019         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
13020         vect_schedule_slp, vect_analyze_slp): Likewise.
13021         (vect_analyze_stmt): Add slp_tree argument.
13022         (find_bb_location): Declare.
13023         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13024         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
13025         (vect_analyze_loop_operations, vect_analyze_loop,
13026         get_initial_def_for_induction, vect_create_epilog_for_reduction,
13027         vect_finalize_reduction, vectorizable_reduction,
13028         vectorizable_live_operation, vect_transform_loop): Likewise.
13029         * tree-data-ref.c (dr_analyze_innermost): Update comment,
13030         skip evolution analysis if analyzing a basic block.
13031         (dr_analyze_indices): Likewise.
13032         (initialize_data_dependence_relation): Skip the test whether the
13033         object is invariant for basic blocks.
13034         (compute_all_dependences): Skip dependence analysis for data
13035         references in basic blocks.
13036         (find_data_references_in_stmt): Don't fail in case of invariant
13037         access in basic block.
13038         (find_data_references_in_bb): New function.
13039         (find_data_references_in_loop): Move code to
13040         find_data_references_in_bb and add a call to it.
13041         (compute_data_dependences_for_bb): New function.
13042         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
13043         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
13044         that STEP is 0.
13045         (vect_analyze_data_ref_dependence): Check for interleaving in case of
13046         unknown dependence in basic block and fail in case of dependence in
13047         basic block.
13048         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
13049         dependence instances from either loop or basic block vectorization
13050         info.
13051         (vect_compute_data_ref_alignment): Check if it is loop vectorization
13052         before calling nested_in_vect_loop_p.
13053         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
13054         dependence instances from either loop or basic block vectorization
13055         info.
13056         (vect_verify_datarefs_alignment): Likewise.
13057         (vect_enhance_data_refs_alignment): Adjust function calls.
13058         (vect_analyze_data_refs_alignment): Likewise.
13059         (vect_analyze_group_access): Fix printing. Skip different checks if
13060         DR_STEP is 0. Keep strided stores either in loop or basic block
13061         vectorization data structure. Fix indentation.
13062         (vect_analyze_data_ref_access): Fix comments, allow zero step in
13063         basic blocks.
13064         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
13065         dependence instances from either loop or basic block vectorization
13066         info.
13067         (vect_analyze_data_refs): Update comment. Call
13068         compute_data_dependences_for_bb to analyze basic blocks.
13069         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
13070         case of loop vectorization. In case of basic block vectorization use
13071         data-ref itself as a base.
13072         (vect_create_data_ref_ptr): In case of basic block vectorization:
13073         don't advance the pointer, add new statements before the current
13074         statement.  Adjust function calls.
13075         (vect_supportable_dr_alignment): Support only aligned accesses in
13076         basic block vectorization.
13077         * common.opt (ftree-slp-vectorize): New flag.
13078         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
13079         (vect_pattern_recog_1): Likewise.
13080         * tree-vect-stmts.c (process_use): Likewise.
13081         (vect_init_vector): Add new statements in the beginning of the basic
13082         block in case of basic block SLP.
13083         (vect_get_vec_def_for_operand): Adjust function calls.
13084         (vect_finish_stmt_generation): Likewise.
13085         (vectorizable_call): Add assert that it is loop vectorization, adjust
13086         function calls.
13087         (vectorizable_conversion, vectorizable_assignment): Likewise.
13088         (vectorizable_operation): In case of basic block SLP, take
13089         vectorization factor from statement's type and skip the relevance
13090         check. Adjust function calls.
13091         (vectorizable_type_demotion): Add assert that it is loop
13092         vectorization, adjust function calls.
13093         (vectorizable_type_promotion): Likewise.
13094         (vectorizable_store): Check for outer loop only in case of loop
13095         vectorization. Adjust function calls. For basic blocks, skip the
13096         relevance check and don't advance pointers.
13097         (vectorizable_load): Likewise.
13098         (vectorizable_condition): Add assert that it is loop vectorization,
13099         adjust function calls.
13100         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
13101         that it is not reduction, get vector type, call only supported
13102         functions, skip loop specific parts.
13103         (vect_transform_stmt): Check for outer loop only in case of loop
13104         vectorization.
13105         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
13106         (vect_is_simple_use): Fix comment, add new argument, fix conditions
13107         for external definition.
13108         * passes.c (pass_slp_vectorize): New pass.
13109         * tree-vect-slp.c (find_bb_location): New function.
13110         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
13111         check for patterns only in loops.
13112         (vect_build_slp_tree): Add argument, adjust function calls, fail in
13113         case of multiple types in basic block SLP.
13114         (vect_mark_slp_stmts_relevant): New function.
13115         (vect_supported_load_permutation_p): Fix comment.
13116         (vect_analyze_slp_instance): Add argument. In case of basic block
13117         SLP, take vectorization factor from statement's type, check that
13118         unrolling factor is 1. Adjust function call. Save SLP instance in
13119         either loop or basic block vectorization structure. Return FALSE,
13120         if SLP failed.
13121         (vect_analyze_slp): Add argument. Get strided stores groups from
13122         either loop or basic block vectorization structure. Return FALSE
13123         if basic block SLP failed.
13124         (new_bb_vec_info): New function.
13125         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
13126         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
13127         (vect_schedule_slp): Add argument. Get SLP instances from either
13128         loop or basic block vectorization structure. Set vectorization factor
13129         to be 1 for basic block SLP.
13130         (vect_slp_transform_bb): New function.
13131         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
13132
13133 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
13134
13135         * final.c (shorten_branches): Do not align labels for jump tables.
13136         (final_scan_insn): Use JUMP_TABLE_DATA_P.
13137
13138 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13139
13140         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
13141         Remove outdated reference to flow.c and fix nits.
13142         * doc/gccint.texi: Tweak RTL description.
13143         * doc/rtl.texi: Likewise.
13144
13145 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
13146
13147         * config/avr/avr.c: Change my email address.
13148         * config/avr/avr.h: Likewise.
13149         * config/avr/avr.md: Likewise.
13150         * config/avr/avr-protos.h: Likewise.
13151         * config/avr/libgcc.S: Likewise.
13152
13153 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
13154
13155         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
13156         (spu_split_load, spu_split_store): Change return type to int.
13157         (spu_split_convert): Declare.
13158         * config/spu/predicates.md (spu_mem_operand): Remove.
13159         (spu_mov_operand): Update.
13160         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
13161         * config/spu/spu.c (regno_aligned_for_load): Remove.
13162         (reg_aligned_for_addr, spu_expand_load): Define.
13163         (spu_expand_extv): Reimplement and handle MEM.
13164         (spu_expand_insv): Handle MEM.
13165         (spu_sched_reorder): Handle insn's with length 0.
13166         (spu_legitimate_address_p): Reimplement.
13167         (store_with_one_insn_p): Return TRUE for any mode with size
13168         larger than 16 bytes.
13169         (address_needs_split): Define.
13170         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
13171         operands.
13172         (spu_convert_move): Define.
13173         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
13174         (spu_split_store): Change all MEM's to TImode.
13175         (spu_init_expanders): Preallocate registers that correspond to
13176         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
13177         mark_reg_pointer.
13178         (spu_split_convert): Define.
13179         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
13180         (_move<mode>, _movdi, _movti): Update predicate and condition.
13181         (load, store): Change to define_split.
13182         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
13183         extend<mode>ti2.
13184         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
13185         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
13186         define_insn_and_split of lshr<mode>3.
13187         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
13188         (<v>ashr<mode>3_imm): Define.
13189         (extv, extzv, insv): Allow MEM operands.
13190         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
13191         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
13192         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
13193         (_spu_convert2): Change to define_insn_and_split and remove the
13194         corresponding define_peephole2.
13195         (stack_protect_set, stack_protect_test, stack_protect_test_si):
13196         Change predicates to memory_operand.
13197
13198 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13199
13200         * config/arm/thumb2.md: Add 16-bit multiply instructions.
13201
13202 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
13203
13204         PR tree-optimization/40219
13205         * tree.c (iterative_hash_expr): Make sure the builtin function is
13206         a normal builtin function and not a front end or back end builtin
13207         before indexing into the built_in_decls array.
13208
13209 2009-05-22  Richard Guenther  <rguenther@suse.de>
13210
13211         PR middle-end/38964
13212         * alias.c (write_dependence_p): Do not use TBAA for answering
13213         anti-dependence or output-dependence.
13214         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
13215         (emit_pointer_definition): Remove.
13216         (emit_alias_warning): Likewise.
13217         (find_what_var_points_to): Remove TBAA pruning code.
13218         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
13219         violations.
13220         (compute_points_to_sets): Remove code computing the set of
13221         dereferenced pointers.
13222         * tree-data-ref.c (dr_may_alias_p): Properly use the split
13223         oracle for querying anti and output dependencies.
13224         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
13225         if TBAA may be applied.
13226         (refs_anti_dependent_p): New function.
13227         (refs_output_dependent_p): Likewise.
13228         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
13229         (refs_output_dependent_p): Likewise.
13230         * doc/tree-ssa.texi (Memory model): New section.
13231         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13232         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13233         * cfgexpand.c (expand_gimple_basic_block): Do not handle
13234         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
13235         * expr.c (expand_expr_real_1): Likewise.
13236         * gimple-low.c (lower_stmt): Likewise.
13237         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
13238         (dump_gimple_cdt): Remove.
13239         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13240         (gimple_size): Likewise.
13241         (walk_gimple_op): Likewise.
13242         (is_gimple_stmt): Likewise.
13243         (walk_stmt_load_store_addr_ops): Likewise.
13244         (gimple_build_cdt): Remove.
13245         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13246         * gimple.h (gimple_cdt_new_type): Remove.
13247         (gimple_cdt_new_type_ptr): Likewise.
13248         (gimple_cdt_set_new_type): Likewise.
13249         (gimple_cdt_location): Likewise.
13250         (gimple_cdt_location_ptr): Likewise.
13251         (gimple_cdt_set_location): Likewise.
13252         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13253         * tree-cfg.c (remove_useless_stmts_1): Do not handle
13254         GIMPLE_CHANGE_DYNAMIC_TYPE.
13255         (verify_types_in_gimple_stmt): Likewise.
13256         * tree-inline.c (estimate_num_insns): Likewise.
13257         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13258         (copy_decl_to_var): Likewise.
13259         (copy_result_decl_to_var): Likewise.
13260         * tree-pretty-print.c (dump_generic_node): Do not handle
13261         CHANGE_DYNAMIC_TYPE_EXPR.
13262         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13263         * tree-ssa-operands.c (get_expr_operands): Likewise.
13264         * tree-ssa-structalias.c (struct variable_info): Remove
13265         no_tbaa_pruning member.
13266         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13267         (unify_nodes): Do not copy it.
13268         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13269         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13270         (set_uids_in_ptset): Do not check it.
13271         (find_what_var_points_to): Likewise.
13272         (compute_tbaa_pruning): Remove.
13273         (compute_points_to_sets): Do not call it.
13274         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13275         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13276         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
13277         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
13278         (DECL_NO_TBAA_P): Likewise.
13279         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
13280         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
13281         (expand_omp_atomic_pipeline): Do not set it.
13282         * print-tree.c (print_node): Do not dump it.
13283         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13284         redundant check.
13285
13286 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
13287
13288         PR target/39856
13289         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
13290         for clobber.
13291
13292 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13293
13294         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
13295         non-external.
13296
13297 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13298
13299         * Makefile.in (bversion.h, s-bversion): New targets.
13300         (TOPLEV_H): Add bversion.h.
13301         * toplev.h: Include "bversion.h".
13302         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
13303         the __format__ attribute only if compiling with the same version
13304         of GCC as the sources (the "build version").
13305
13306 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13307
13308         * c-format.c (handle_format_attribute): Fix comment typo.
13309
13310 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
13311
13312         PR target/37846
13313         * config/ia64/ia64.opt (mfused-madd): New.
13314         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
13315         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
13316         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
13317         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
13318         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
13319         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
13320         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
13321         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
13322         instruction if !TARGET_FUSED_MADD.
13323         (fpma, fpms): Remove colon from name.
13324
13325 2009-05-22  Richard Guenther  <rguenther@suse.de>
13326
13327         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
13328         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
13329         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13330         TARGET_MEM_REF.
13331         (create_expression_by_pieces): Only convert if necessary.
13332         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13333         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13334
13335 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
13336
13337         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13338         regular pattern from a template and rename it ...
13339         (*extzv_truncsi_exts): ... to this.
13340
13341 2009-05-21  Richard Guenther  <rguenther@suse.de>
13342
13343         * cgraph.h (struct cgraph_node): Remove inline_decl member.
13344         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13345         (cgraph_default_inline_p): Likewise.
13346         (cgraph_decide_inlining_incrementally): Likewise.
13347
13348 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13349             Uros Bizjak  <ubizjak@gmail.com>
13350
13351         * config/i386/cpuid.h (bit_MOVBE): New.
13352
13353         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13354
13355         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13356         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13357         (ix86_handle_option): Handle OPT_mmovbe.
13358         (ix86_target_string): Add -mmovbe.
13359         (pta_flags): Add PTA_MOVBE.
13360         (processor_alias_table): Add PTA_MOVBE to "atom".
13361         (override_options): Handle PTA_MOVBE.
13362
13363         * config/i386/i386.h (TARGET_MOVBE): New.
13364
13365         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13366         (*bswapsi_movbe): New.
13367         (*bswapdi_movbe): Likewise.
13368         (bswapdi2): Renamed to ...
13369         (*bswapdi_1): This.
13370         (bswapdi2): New expander.
13371
13372         * config/i386/i386.opt (mmovbe): New.
13373
13374         * doc/invoke.texi: Document -mmovbe.
13375
13376 2009-05-21  Taras Glek  <tglek@mozilla.com>
13377
13378         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13379         * gcc-plugin.h (plugin_init): Updated signature.
13380         * gcc-plugin.h (plugin_name_args): Moved to this header.
13381         * doc/plugins.texi (plugin_init): Updated documention to reflect
13382         API change.
13383         * doc/plugins.texi (plugin_name_args): Added to documention.
13384
13385 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
13386
13387         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13388         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13389
13390 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
13391
13392         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13393         JUMP_TABLE_DATA_P predicates where applicable.
13394         * config/i386/predicates.md: Ditto.
13395         * config/i386/sse.md: Ditto.
13396
13397 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
13398
13399         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13400         operand2 -128 override length_immediate attribute to 1.
13401         * config/i386/predicates.md (constm128_operand): New predicate.
13402
13403         * config/i386/i386.c (memory_address_length): Handle %r12
13404         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
13405         also check REGNO.
13406         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13407         mode look through optional ZERO_EXTEND and SUBREG.
13408         * config/i386/i386.md (R12_REG): New define_constant.
13409         (prefix_data16): For sse unit set also for MODE_TI insns.
13410         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
13411         insns set if operand 1 is ext_QIreg_operand.
13412         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
13413         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13414         immediate.
13415         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13416         mode from MODE_DI to MODE_SI.
13417         (movdi_1_rex64): Override modrm and length_immediate attributes
13418         only for movabs (TYPE_IMOV, alternative 2).
13419         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13420         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13421         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13422         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13423         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13424         prefix_rex attribute if DImode.
13425         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13426         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13427         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13428         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13429         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13430         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13431         Likewise.  For TYPE_IMOV clear length_immediate attribute.
13432         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13433         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13434         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13435         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13436         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13437         or one operand TYPE_ISHIFT.
13438         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13439         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13440         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13441         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13442         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13443         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13444         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13445         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13446         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13447         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13448         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13449         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13450         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13451         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13452         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13453         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13454         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13455         set mode attribute, don't override length attribute.
13456         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13457         to 1.
13458         (return_internal_long): Set length attribute to 2 instead of 1.
13459         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13460         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13461         prefix_rex attribute.
13462         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13463         New predicates.
13464         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13465
13466 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13467
13468         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13469
13470 2009-05-20  Ian Lance Taylor  <iant@google.com>
13471
13472         * tree.c (build_tree_list_vec_stat): New function.
13473         (ctor_to_vec): New function.
13474         (build_nt_call_vec): New function.
13475         (build_call_array): Change args to be a const pointer.
13476         (build_call_vec): New function.
13477         * tree.h (build_nt_call_vec): Declare.
13478         (build_tree_list_vec_stat): Declare.
13479         (build_tree_list_vec): Define.
13480         (build_call_array): Update declaration.
13481         (build_call_vec): Declare.
13482         (ctor_to_vec): Declare.
13483         * c-common.c (tree_vector_cache): New static variable.
13484         (make_tree_vector): New function.
13485         (release_tree_vector): New function.
13486         (make_tree_vector_single): New function.
13487         (make_tree_vector_copy): New function.
13488         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13489         (make_tree_vector_single, make_tree_vector_copy): Declare.
13490         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13491         (c_parser_expr_list): Don't manage cache here, instead call
13492         make_tree_vector.
13493         (c_parser_release_expr_list): Remove static function.
13494         (c_parser_vec_to_tree_list): Remove static function.
13495         (c_parser_attributes): Call build_tree_list_vec instead of
13496         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
13497         c_parser_release_expr_list.
13498         (c_parser_postfix_expression_after_primary): Likewise.
13499         (c_parser_objc_keywordexpr): Likewise.
13500
13501 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13502
13503         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
13504         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
13505         TARGET_CONVERT_TO_TYPE.
13506         * hooks.c (hook_tree_const_tree_null): Define.
13507         * hooks.h (hook_tree_const_tree_null): Declare.
13508         * target.h (struct gcc_target):  Add invalid_parameter_type,
13509         invalid_return_type, promoted_type, and convert_to_type fields.
13510         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
13511         (TARGET_INVALID_RETURN_TYPE): Define.
13512         (TARGET_PROMOTED_TYPE): Define.
13513         (TARGET_CONVERT_TO_TYPE): Define.
13514         (TARGET_INITIALIZER): Update for new fields.
13515         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
13516         (grokparms): Check targetm.invalid_parameter_type.
13517         * c-typeck.c (default_conversion): Check targetm.promoted_type.
13518         * c-convert.c (convert): Check targetm.convert_to_type.
13519
13520 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
13521
13522         * config/mips/mips.md (*extenddi_truncate<mode>,
13523         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
13524         defintions.
13525         (*extendhi_truncateqi): New define_insn_and_sptit.
13526
13527 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
13528
13529         PR middle-end/40204
13530         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
13531         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
13532
13533 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
13534
13535         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
13536         the operand of VIEW_CONVERT_EXPR.
13537
13538 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13539
13540         * config/i386/driver-i386.c (host_detect_local_cpu): Check
13541         extended family and model for Intel processors.  Support Intel Atom.
13542
13543 2009-05-20  Olivier Hainque  <hainque@adacore.com>
13544
13545         * gstab.h (stab_code_type): Define, to be used instead of the
13546         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
13547         notice.
13548         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
13549         occurrences by stab_code_type.
13550         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
13551
13552 2009-05-20  Martin Jambor  <mjambor@suse.cz>
13553
13554         * tree-flow.h (insert_edge_copies_seq): Undeclare.
13555         (sra_insert_before): Likewise.
13556         (sra_insert_after): Likewise.
13557         (sra_init_cache): Likewise.
13558         (sra_type_can_be_decomposed_p): Likewise.
13559         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
13560         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
13561         (sra_insert_before): Likewise.
13562         (sra_insert_after): Likewise.
13563         (sra_init_cache): Likewise.
13564         (insert_edge_copies_seq): Made static and moved upwards.
13565
13566         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
13567         case.
13568
13569         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
13570
13571         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
13572         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
13573         simple copies.
13574
13575 2009-05-20  Richard Guenther  <rguenther@suse.de>
13576
13577         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13578         with mismatched comparison modes.
13579
13580 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13581
13582         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
13583         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
13584         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
13585         with shifts for Thumb2.
13586         (orsi_notsi): New for orn.
13587         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
13588         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
13589         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
13590         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
13591         Don't invert remainder for IOR.
13592
13593 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
13594
13595         PR tree-optimization/40087
13596         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
13597         number_of_iterations_ne): Rename never_infinite argument.
13598         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
13599         number_of_iterations_le): Handle pointer-type ivs when
13600         exit_must_be_taken is false.
13601         (number_of_iterations_cond):  Do not always assume that
13602         exit_must_be_taken if the control variable is a pointer.
13603
13604 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13605
13606         * c-typeck.c (build_binary_op): Allow % on integal vectors.
13607         * doc/extend.texi (Vector Extension): Document that % is allowed too.
13608
13609 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13610
13611         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
13612         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
13613
13614 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13615
13616         PR c/40172
13617         * c.opt (Wlogical-op): Disabled by default.
13618         * c-opt (c_common_post_options): Do not enable Wlogical-op with
13619         Wextra.
13620         * doc/invoke.texi (Wlogical-op): Likewise.
13621
13622 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
13623
13624         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
13625         into CASE_CONVERT.
13626         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
13627         Propagate the type of the first operand.
13628         <ASSERT_EXPR>: Simplify.
13629         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
13630         Rewrite using the RHS code as discriminant.
13631         <NOP_EXPR>: Turn into CASE_CONVERT.
13632         <PLUS_EXPR>: Propagate the type of the first operand.
13633
13634 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
13635
13636         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
13637         (ia64_dconst_0_375): New.
13638         * config/ia64/ia64.c (ia64_override_options): Remove
13639         -minline-sqrt-min-latency warning.
13640         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
13641         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
13642         * config/ia64/ia64.md (*sqrt_approx): Remove.
13643         (sqrtsf2): Remove #if 0.
13644         (sqrtsf2_internal_thr): Rewrite and move to div.md.
13645         (sqrtdf): Remove assert.
13646         (sqrtdf2_internal_thr): Rewrite and move to div.md.
13647         (sqrtxf2): Remove #if 0.
13648         (sqrtxf2_internal_thr): Rewrite and move to div.md.
13649         * div.md (sqrt_approx_rf): New.
13650         (sqrtsf2_internal_thr): New implementation.
13651         (sqrtsf2_internal_lat): New.
13652         (sqrtdf2_internal_thr: New implementation.
13653         (sqrtxf2_internal): New implementation.
13654
13655 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13656             Hans-Peter Nilsson  <hp@axis.com>
13657
13658         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
13659         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
13660         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
13661         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
13662         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
13663         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
13664         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
13665         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
13666         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
13667         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
13668         * c-common.c: ...from here.
13669
13670 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13671
13672         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
13673
13674 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13675
13676         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
13677
13678 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13679
13680         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
13681         assignments with memcpy calls.
13682         (add_fdes): Likewise.
13683         (binary_search_unencoded_fdes): Likewise.
13684         (linear_search_fdes): Eliminate type puns.
13685
13686 2009-05-19  Richard Guenther  <rguenther@suse.de>
13687
13688         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
13689         not falsely claim to have propagated into all uses.
13690
13691 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13692
13693         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
13694         version to v3.0.
13695
13696 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13697
13698         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
13699         * config/sh/sh.c (sh_legitimate_address_p): Make static.
13700         (TARGET_LEGITIMATE_ADDRESS_P): New.
13701         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13702         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13703
13704 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
13705
13706         PR debug/40109
13707         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
13708         child of the containing namespace's DIE.
13709
13710 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
13711
13712         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
13713         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
13714         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
13715         extend patterns.
13716
13717 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
13718
13719         PR target/39942
13720         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
13721         gen_align with gen_pad.
13722         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
13723         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
13724
13725         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
13726         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
13727
13728         * config/i386/i386.md (align): Renamed to ...
13729         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
13730         ASM_OUTPUT_MAX_SKIP_PAD.
13731
13732 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
13733
13734         * config.gcc: Fix variable syntax.
13735
13736         PR target/39531
13737         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
13738         before calling exact_log2.
13739         (output_iorsi3): Likewise.
13740         (output_xorsi3): Likewise.
13741
13742 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13743
13744         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
13745         for the none zero constant operand except for EQ and NE
13746         comprisons even when the first operand is R0.
13747
13748 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
13749
13750         * config/s390/2064.md: Remove trailing whitespaces.
13751         * config/s390/2084.md: Likewise.
13752         * config/s390/constraints.md: Likewise.
13753         * config/s390/fixdfdi.h: Likewise.
13754         * config/s390/libgcc-glibc.ver: Likewise.
13755         * config/s390/s390-modes.def: Likewise.
13756         * config/s390/s390-protos.h: Likewise.
13757         * config/s390/s390.c: Likewise.
13758         * config/s390/s390.h: Likewise.
13759         * config/s390/s390.md: Likewise.
13760         * config/s390/tpf-unwind.h: Likewise.
13761
13762 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13763
13764         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
13765
13766 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13767
13768         M68K TLS support.
13769         * configure.ac (m68k-*-*): Check if binutils support TLS.
13770         * configure: Regenerate.
13771         * config/m68k/predicates.md (symbolic_operand): Extend comment.
13772         * config/m68k/constraints.md (Cu): New constraint.
13773         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
13774         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
13775         (movsi): Handle TLS symbols.
13776         (addsi3_5200): Handle XTLS symbols, indent.
13777         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
13778         (m68k_tls_reference_p): Declare.
13779         (m68k_legitimize_address): Declare.
13780         (m68k_unwrap_symbol): Declare.
13781         * config/m68k/m68k.opt (mxtls): New option.
13782         * config/m68k/m68k.c (ggc.h): Include.
13783         (m68k_output_dwarf_dtprel): Implement hook.
13784         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
13785         (m68k_expand_prologue): Load GOT pointer when function needs it.
13786         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
13787         (m68k_legitimate_constant_address_p): Same.
13788         (m68k_decompose_address): Handle TLS references.
13789         (m68k_get_gp): New static function.
13790         (enum m68k_reloc): New contants.
13791         (TLS_RELOC_P): New macro.
13792         (m68k_wrap_symbol): New static function.
13793         (m68k_unwrap_symbol): New function.
13794         (m68k_final_prescan_insn_1): New static function.
13795         (m68k_final_prescan_insn): New function.
13796         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
13797         functions.
13798         (legitimize_pic_address): Handle TLS references..
13799         (m68k_tls_get_addr, m68k_get_tls_get_addr)
13800         (m68k_libcall_value_in_a0_p)
13801         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
13802         (m68k_call_m68k_read_tp): Helper variables and functions for ...
13803         (m68k_legitimize_tls_address): Handle TLS references.
13804         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
13805         New functions.
13806         (m68k_legitimize_address): Handle TLS symbols.
13807         (m68k_get_reloc_decoration): New static function.
13808         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
13809         UNSPEC_RELOC32.
13810         (m68k_output_dwarf_dtprel): Implement hook.
13811         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
13812         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
13813         m68k_call_* routines.
13814         (sched_attr_op_type): Handle TLS symbols.
13815         (gt-m68k.h): Include.
13816         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
13817         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
13818
13819 2009-05-18  Martin Jambor  <mjambor@suse.cz>
13820
13821         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
13822         (visit_store_addr_for_mod_analysis): New function.
13823         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
13824         (determine_cst_member_ptr): Use gimple_assign_single_p.
13825         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
13826         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
13827         operands.  Don't check number of operands of a NOP_EXPR.
13828
13829 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
13830
13831         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
13832
13833 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13834
13835         PR c/40172
13836         * c-common.c (warn_logical_operator): Don't warn if one of
13837         expression isn't always true or false.
13838
13839 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
13840
13841         * config/i386/biarch32.h: New file.
13842         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
13843
13844 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
13845
13846         * config/mips/mips.md (*zero_extend<mode>_trunchi,
13847         *zero_extend<mode>_truncqi): Merge these into ...
13848         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
13849         Name the pattern following this as *zero_extendhi_truncqi.
13850
13851 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
13852
13853         PR middle-end/39301
13854         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
13855         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
13856         (output_info): Make field HOST_WIDEST_INT.
13857         (print_statistics): Use HOST_WIDEST_INT_PRINT.
13858         (dump_bitmat_statistics): Same.
13859
13860 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13861
13862         * config.gcc (use_gcc_stdint):  Set to wrap.
13863         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
13864         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
13865         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13866         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13867         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13868         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13869         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13870         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13871
13872 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
13873
13874         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
13875         tune_64.
13876         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
13877         Move definitions earlier.
13878         (OPT_ARCH64, OPT_ARCH32): Define.
13879         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
13880         and tune_64.
13881
13882 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13883
13884         PR target/40153
13885         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
13886         implies.
13887
13888 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
13889
13890         * arm.md (movdi2): Copy non-reg values to DImode registers.
13891
13892 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
13893
13894         PR target/39942
13895         * final.c (label_to_max_skip): New function.
13896         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
13897         CODE_LABEL_NUMBER <= max_labelno.
13898         * output.h (label_to_max_skip): New prototype.
13899         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
13900         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
13901         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
13902         Handle CODE_LABELs with >= 16 byte alignment or with
13903         max_skip == (1 << align) - 1.
13904         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
13905         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
13906
13907         PR target/39942
13908         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
13909         .p2align 3 if MAX_SKIP is smaller than 7.
13910         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
13911
13912 2009-05-15  Ian Lance Taylor  <iant@google.com>
13913
13914         * alias.c (struct alias_set_entry_d): Rename from struct
13915         alias_set_entry.  Change all uses.
13916         * except.c (struct call_site_record_d): Rename from struct
13917         call_site_record.  Change all uses.
13918         * except.h (struct eh_region_d): Rename from struct eh_region.
13919         Change all uses.
13920         * gcse.c (struct hash_table_d): Rename from struct hash_table.
13921         Change all uses.
13922         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
13923         ivtype_map_elt.  Change all uses.
13924         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
13925         Change all uses.
13926         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
13927         * graphite.h (struct name_tree_d): Rename from struct name_tree.
13928         Change all uses.
13929         (struct sese_d): Rename from struct sese.  Change all uses.
13930         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
13931         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
13932         * optabs.h (struct optab_d): Rename from struct optab.  Change all
13933         uses.
13934         (struct convert_optab_d): Rename from struct convert_optab.
13935         Change all uses.
13936         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
13937         ipa_opt_pass.  Change all uses.
13938         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
13939         all uses.
13940
13941         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
13942         defined as a typedef.
13943         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
13944         defined as a tag.
13945
13946 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13947
13948         PR 16302
13949         * fold-const.c (make_range,build_range_check,merge_ranges): Move
13950         declaration to...
13951         (merge_ranges): Returns bool.
13952         * tree.h (make_range): .. to here.
13953         (build_range_check): Likewise.
13954         (merge_ranges): Likewise. Renamed from merge_ranges.
13955         * c-typeck.c (parser_build_binary_op): Update calls to
13956         warn_logical_operator.
13957         * c-common.c (warn_logical_operator): Add new warning.
13958         * c-common.h (warn_logical_operator): Update declaration.
13959
13960 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13961
13962         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
13963
13964 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13965
13966         * doc/install.texi: Document MPC requirements, flags etc.
13967
13968         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
13969         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
13970         Evaluate constant arguments.
13971         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
13972         (fold_builtin_1): Likewise, also evaluate constant arguments.
13973         Remove superfluous break.
13974         (do_mpc_ckconv): New.
13975         * real.h: Include mpc.h.
13976         * toplev.c (print_version): Output MPC version info if available.
13977
13978 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
13979
13980         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
13981
13982 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
13983
13984         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
13985         only once.
13986
13987 2009-05-15  Jan Hubicka  <jh@suse.cz>
13988
13989         * doc/invoke.texi (max-early-inliner-iterations): New flag.
13990         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
13991         (try_inline): Fix return value.
13992         (cgraph_decide_inlining_incrementally): Honor new value.
13993         (cgraph_early_inlining): Handle indirect inlining.
13994         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
13995
13996 2009-05-15  Jan Hubicka  <jh@suse.cz>
13997
13998         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
13999         * cgraphunit.c (cgraph_finalize_function): Set it.
14000         (cgraph_expand_function): Use it.
14001
14002 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14003
14004         * real.c (encode_ieee_half): Define.
14005         (decode_ieee_half): Define.
14006         (ieee_half_format): Define.
14007         (arm_half_format): Define.
14008         * real.h (ieee_half_format): Declare.
14009         (arm_half_format): Declare.
14010
14011 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14012
14013         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
14014         swapped, and reversed optabs exist before trying to use them.
14015
14016 2009-05-15  Paul Brook  <paul@codesourcery.com>
14017             Sandra Loosemore  <sandra@codesourcery.com>
14018
14019         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
14020         loads.  Allow PRE_DEC.
14021         (output_move_neon): Handle PRE_DEC.
14022         (arm_print_operand): Add 'A' for neon structure loads.
14023         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
14024         * config/arm/neon.md (neon_mov): Update comment.
14025         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
14026         calls.
14027         (Um): New constraint.
14028
14029 2009-05-15  Jan Hubicka  <jh@suse.cz>
14030
14031         Revert the following patch until testsuite fallout is fixed:
14032         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14033         * cgraph.h (struct inline_summary): New filed self_wize,
14034         size_inlining_benefit, self_time and time_inlining_benefit.
14035         (struct cgraph_global_info): Replace insns by time ans size fields.
14036         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14037         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14038         (ipcp_update_callgraph): Do not touch function bodies.
14039         * ipa-inline.c: Include except.h
14040         (MAX_TIME): New constant.
14041         (overall_insns): Remove
14042         (overall_size, max_benefit): New static variables.
14043         (cgraph_estimate_time_after_inlining): New function.
14044         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14045         (cgraph_clone_inlined_nodes): Update size.
14046         (cgraph_mark_inline_edge): Update size.
14047         (cgraph_estimate_growth): Use size info.
14048         (cgraph_check_inline_limits): Check size.
14049         (cgraph_default_inline_p): Likewise.
14050         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14051         (cgraph_decide_recursive_inlining): Check size.
14052         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14053         and times.
14054         (cgraph_decide_inlining): Likewise.
14055         (cgraph_decide_inlining_incrementally): Likewise; honor
14056         PARAM_EARLY_INLINING_INSNS.
14057         (likely_eliminated_by_inlining_p): New predicate.
14058         (estimate_function_body_sizes): New function.
14059         (compute_inline_parameters): Use it.
14060         * except.c (must_not_throw_labels): New function.
14061         * except.h (must_not_throw_labels): Declare.
14062         * tree-inline.c (init_inline_once): Kill inlining_weigths
14063         * tree-ssa-structalias.c: Avoid uninitialized warning.
14064         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14065         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14066         (PARAM_INLINE_CALL_COST): Remove.
14067         (PARAM_EARLY_INLINING_INSNS): New.
14068
14069 2009-05-15  Richard Guenther  <rguenther@suse.de>
14070
14071         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
14072         not TODO_update_ssa.
14073
14074 2009-05-15  Richard Guenther  <rguenther@suse.de>
14075
14076         PR tree-optimization/39999
14077         * gimple.h (gimple_expr_type): Use the expression type looking
14078         through useless conversions.
14079         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
14080         (vn_nary_op_insert_stmt): Likewise.
14081         (simplify_binary_expression): Likewise.
14082
14083 2009-05-15  Richard Guenther  <rguenther@suse.de>
14084
14085         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14086         New options, enabled by default.
14087         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14088         Document.
14089         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
14090         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
14091         * tree-ssa-structalias.c (gate_tree_pta): New function.
14092         (pass_build_alias): Use it.
14093
14094 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
14095
14096         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
14097         recurse on an invariant address if a conversion from a pointer
14098         type to a wider integer type is involved.
14099
14100 2009-05-15  Jan Hubicka  <jh@suse.cz>
14101
14102         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14103         * cgraph.h (struct inline_summary): New filed self_wize,
14104         size_inlining_benefit, self_time and time_inlining_benefit.
14105         (struct cgraph_global_info): Replace insns by time ans size fields.
14106         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14107         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14108         (ipcp_update_callgraph): Do not touch function bodies.
14109         * ipa-inline.c: Include except.h
14110         (MAX_TIME): New constant.
14111         (overall_insns): Remove
14112         (overall_size, max_benefit): New static variables.
14113         (cgraph_estimate_time_after_inlining): New function.
14114         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14115         (cgraph_clone_inlined_nodes): Update size.
14116         (cgraph_mark_inline_edge): Update size.
14117         (cgraph_estimate_growth): Use size info.
14118         (cgraph_check_inline_limits): Check size.
14119         (cgraph_default_inline_p): Likewise.
14120         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14121         (cgraph_decide_recursive_inlining): Check size.
14122         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14123         and times.
14124         (cgraph_decide_inlining): Likewise.
14125         (cgraph_decide_inlining_incrementally): Likewise; honor
14126         PARAM_EARLY_INLINING_INSNS.
14127         (likely_eliminated_by_inlining_p): New predicate.
14128         (estimate_function_body_sizes): New function.
14129         (compute_inline_parameters): Use it.
14130         * except.c (must_not_throw_labels): New function.
14131         * except.h (must_not_throw_labels): Declare.
14132         * tree-inline.c (init_inline_once): Kill inlining_weigths
14133         * tree-ssa-structalias.c: Avoid uninitialized warning.
14134         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14135         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14136         (PARAM_INLINE_CALL_COST): Remove.
14137         (PARAM_EARLY_INLINING_INSNS): New.
14138         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
14139         (inline-call-cost): Remove.
14140         (early-inlining-insns): New.
14141
14142 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
14143
14144         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
14145         for bounds.
14146         (print_int_cst_bounds_in_octal_p): Likewise.
14147         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
14148         with subtypes.
14149         * dwarf2out.c (base_type_die): Likewise.
14150         (is_subrange_type): Delete.
14151         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
14152         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
14153         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
14154         if the destination type is boolean.
14155         (build_range_check): Do not special-case subtypes.
14156         (fold_sign_changed_comparison): Likewise.
14157         (fold_unary): Likewise.
14158         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
14159         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
14160         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
14161         * tree.c (subrange_type_for_debug_p): New predicate based on the
14162         former is_subrange_type.
14163         * tree.h (subrange_type_for_debug_p): Declare.
14164         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
14165         (convert_affine_scev): Remove call to above function.
14166         (chrec_convert_aggressive): Likewise.
14167         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
14168         false for conversions involving subtypes.
14169         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
14170         (vrp_val_min): Likewise.
14171         (needs_overflow_infinity): Likewise.
14172         (extract_range_from_unary_expr): Likewise.
14173
14174 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
14175
14176         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14177         * config/frv/frv.c: Likewise.
14178         * config/s390/s390.c: Likewise.
14179         * config/sparc/sparc.h: Likewise.
14180         * config/i386/i386.h: Likewise.
14181         * config/i386/i386.c: Likewise.
14182         * config/crx/crx.c: Likewise.
14183         * config/m68hc11/m68hc11.h: Likewise.
14184         * config/iq2000/iq2000.c: Likewise.
14185         * config/mn10300/mn10300.h: Likewise.
14186         * config/mn10300/mn10300.c: Likewise.
14187         * config/m68k/m68k.c: Likewise.
14188         * config/rs6000/rs6000.c: Likewise.
14189         * config/rs6000/xcoff.h: Likewise.
14190         * config/rs6000/linux64.h: Likewise.
14191         * config/rs6000/sysv4.h: Likewise.
14192         * config/score/score3.c: Likewise.
14193         * config/score/score7.c: Likewise.
14194         * config/score/score.c: Likewise.
14195         * config/arm/arm.md: Likewise.
14196         * config/mips/mips.c: Likewise.
14197         * config/mips/mips.md: Likewise.
14198         * config/bfin/bfin.h: Likewise.
14199         * config/pa/pa.c: Likewise.
14200         * config/pa/constraints.md: Likewise.
14201
14202         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
14203         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
14204         * config/pdp11/pdp11.h: Use memory_address_p instead.
14205
14206 2009-05-14  Ian Lance Taylor  <iant@google.com>
14207
14208         * passes.c (finish_optimization_passes): Change i to int.
14209         * plugin.c (plugins_active_p): Change event to int.
14210         (dump_active_plugins): Likewise.
14211         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
14212         Add cast.
14213         * tree.c (tree_range_check_failed): Change c to unsigned int.
14214         (omp_clause_range_check_failed): Likewise.
14215         (build_common_builtin_nodes): Change mode to int.  Add cast.
14216         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
14217         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
14218
14219         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
14220         ++ or -- with a variable of enum type.
14221
14222 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14223
14224         PR driver/40144
14225         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
14226
14227 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14228
14229         * store-motion.c: Do not include params.h
14230         * Makefile.in: Fix dependencies for various files.
14231
14232 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14233
14234         * auto-inc-dec.c: Fix pass description, remove apparent
14235         accidental duplication.
14236
14237 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14238
14239         PR middle-end/40147
14240         * ipa-utils.h (memory_identifier_string): Moved to ...
14241         * tree.h (memory_identifier_string): Here.  Add GTY(()).
14242
14243 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14244
14245         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
14246         in the former documentation of...
14247         (GO_IF_LEGITIMATE_ADDRESS): ... this.
14248         * ira-conflicts.c (get_dup_num): Use address_operand.
14249         * targhooks.c (default_legitimate_address_p): New.
14250         * targhooks.h (default_legitimate_address_p): New.
14251         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14252         Call hook.
14253         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14254         * target.h (struct target): Add legitimate_address_p.
14255         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14256         (TARGET_INITIALIZER): Include it.
14257
14258         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14259         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14260         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14261         (TARGET_LEGITIMATE_ADDRESS_P): New.
14262
14263         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14264         (REG_OK_STRICT_P): Delete.
14265         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14266         (frv_legitimate_address_p_1): ... this.
14267         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14268         (frv_legitimate_address_p_1): ... the renamed old
14269         frv_legitimate_address_p.
14270         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
14271         (TARGET_LEGITIMATE_ADDRESS_P): New.
14272
14273         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14274         * config/s390/s390-protos.h (legitimate_address_p): Remove.
14275         * config/s390/s390.c (legitimate_address_p): Rename to...
14276         (s390_legitimate_address_p): ... this, make static.
14277         (legitimize_address): Adjust call.
14278         (TARGET_LEGITIMATE_ADDRESS_P): New.
14279         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
14280
14281         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14282         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
14283         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
14284         (TARGET_LEGITIMATE_ADDRESS_P): New.
14285
14286         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14287         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
14288         * config/spu/spu.c (spu_legitimate_address): Rename to...
14289         (spu_legitimate_address_p): ... this, make static.
14290         (TARGET_LEGITIMATE_ADDRESS_P): New.
14291
14292         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14293         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
14294         * config/sparc/sparc.c (legitimate_address_p): Rename to...
14295         (sparc_legitimate_address_p): ... this, make static and return bool.
14296         (legitimize_address): Adjust call.
14297         (TARGET_LEGITIMATE_ADDRESS_P): New.
14298
14299         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14300         * config/i386/i386-protos.h (legitimate_address_p): Remove.
14301         * config/i386/i386.c (legitimate_address_p): Rename to...
14302         (ix86_legitimate_address_p): ... this, make static.
14303         (constant_address_p): Move after it, adjust call.
14304         (TARGET_LEGITIMATE_ADDRESS_P): New.
14305
14306         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14307         * config/avr/avr-protos.h (legitimate_address_p): Remove.
14308         * config/avr/avr.c (legitimate_address_p): Rename to...
14309         (avr_legitimate_address_p): ... this, make static.
14310         (legitimize_address): Adjust call.
14311         (TARGET_LEGITIMATE_ADDRESS_P): New.
14312
14313         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14314         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
14315         * config/crx/crx.c (crx_legitimate_address_p): Make static.
14316         (TARGET_LEGITIMATE_ADDRESS_P): New.
14317
14318         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14319         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
14320         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
14321         (TARGET_LEGITIMATE_ADDRESS_P): New.
14322
14323         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14324         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
14325         Remove.
14326         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
14327         Make static.
14328         (TARGET_LEGITIMATE_ADDRESS_P): New.
14329
14330         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14331         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14332         Remove.
14333         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14334         Rename to...
14335         (m68hc11_legitimate_address_p): ... this, make static.
14336         (go_if_legitimate_address_internal): Rename to...
14337         (m68hc11_legitimate_address_p_1): ... this.
14338         (legitimize_address): Adjust call.
14339         (TARGET_LEGITIMATE_ADDRESS_P): New.
14340
14341         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14342         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14343         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14344         (TARGET_LEGITIMATE_ADDRESS_P): New.
14345
14346         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14347         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14348         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14349         (mn10300_legitimate_address_p): ... this, make static.
14350         (TARGET_LEGITIMATE_ADDRESS_P): New.
14351
14352         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14353         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14354         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14355         (TARGET_LEGITIMATE_ADDRESS_P): New.
14356
14357         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14358         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14359         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14360         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14361         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14362         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14363         (rs6000_legitimate_address_p): ... this, make static.
14364         (TARGET_LEGITIMATE_ADDRESS_P): New.
14365         (REG_MODE_OK_FOR_BASE_P): Delete.
14366         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14367
14368         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14369         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14370         Delete.
14371         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14372         static, adjust types.
14373         (TARGET_LEGITIMATE_ADDRESS_P): New.
14374
14375         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14376         * config/score/score.c (score_address_p): Rename to...
14377         (score_legitimate_address_p): ... this.
14378         (TARGET_LEGITIMATE_ADDRESS_P): New.
14379         * config/score/score3.c (score3_address_p): Rename to...
14380         (score3_legitimate_address_p): ... this.
14381         * config/score/score7.c (score7_address_p): Rename to...
14382         (score7_legitimate_address_p): ... this.
14383
14384         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14385         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14386         GO_IF_LEGITIMATE_ADDRESS): Delete.
14387         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14388         thumb2_legitimate_address_p): Delete.
14389         (arm_legitimate_address_p): Rename to...
14390         (arm_legitimate_address_outer_p): ... this.
14391         * config/arm/constraints.md ("Uq"): Adjust call.
14392         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14393         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14394         to...
14395         (arm_legitimate_address_outer_p): ... this.
14396         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14397         static.
14398         (TARGET_LEGITIMATE_ADDRESS_P): New.
14399
14400         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14401         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14402         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14403         (TARGET_LEGITIMATE_ADDRESS_P): New.
14404
14405         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14406         * config/vax/vax-protos.h (legitimate_address_p): Remove.
14407         * config/vax/vax.c (legitimate_address_p): Rename to...
14408         (vax_legitimate_address_p): ... this, make static.
14409         (TARGET_LEGITIMATE_ADDRESS_P): New.
14410
14411         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14412         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14413         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14414         (TARGET_LEGITIMATE_ADDRESS_P): New.
14415
14416         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14417         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14418         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14419         (mmix_legitimate_address_p): ... this, make static.
14420         (TARGET_LEGITIMATE_ADDRESS_P): New.
14421
14422         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14423         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14424         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14425         (TARGET_LEGITIMATE_ADDRESS_P): New.
14426
14427 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14428
14429         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14430         of MODE_COMPLEX_INT.
14431
14432 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14433
14434         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14435         LCT_NORMAL in function call.
14436         * mips-tdump.c (print_file_desc): Add cast to enum type.
14437         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14438         (mark_stabs): Add casts to enum types.
14439         (parse_stabs_common): Add casts to enum types.
14440
14441 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14442
14443         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14444         Check for invalid values of LETTER.
14445
14446 2009-05-13  Taras Glek  <tglek@mozilla.com>
14447
14448         * attribs.c (register_attribute): moved out attribute registration
14449         into register_attribute.
14450         * doc/plugins.texi: Documented register_attribute and
14451         PLUGIN_ATTRIBUTES.
14452         * gcc-plugin.h: Added forward decl for register_attribute.
14453         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14454         * plugin.c (register_callback, invoke_plugin_callbacks): Added
14455         PLUGIN_ATTRIBUTES boilerplate.
14456
14457 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
14458
14459         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
14460         values even in sentinel and empty entries.
14461         (ms_printf_flag_specs):  Likewise.
14462         (ms_scanf_flag_specs):  Likewise.
14463         (ms_strftime_flag_specs):  Likewise.
14464         (ms_print_char_table):  Likewise.
14465         (ms_scan_char_table):  Likewise.
14466         (ms_time_char_table):  Likewise.
14467
14468 2009-05-13  Doug Kwan  <dougkwan@google.com>
14469
14470         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14471
14472 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14473
14474         * config/mips/mips.md (store): Add attributes for QI and HI.
14475         Update comment.
14476         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14477         (truncdi<mode>2): ... this new pattern.
14478
14479 2009-05-13  Brad Hards  <bradh@kde.org>
14480
14481         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14482
14483 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
14484             Ben Elliston <bje@au.ibm.com>
14485
14486         PR middle-end/40035
14487         * dse.c (check_mem_read_rtx): Guard against width == -1.
14488
14489 2009-05-13  Michael Matz  <matz@suse.de>
14490
14491         PR middle-end/39976
14492         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14493         (trivially_conflicts_p): New function.
14494         (insert_backedge_copies): Use it.
14495
14496 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
14497
14498         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
14499         (handle_stdc_pragma): Use new enum constant names.
14500         (handle_pragma_float_const_decimal64): Ditto.
14501
14502 2009-05-13  Ian Lance Taylor  <iant@google.com>
14503
14504         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
14505         tree.def.
14506
14507 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
14508
14509         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
14510         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
14511         multilibs.
14512         * config/m68k/m68k.h (FL_UCLINUX): Define.
14513
14514 2009-05-13  Jan Hubicka  <jh@suse.cz>
14515
14516         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
14517
14518 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14519
14520         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
14521         unless -fschedule-insns is specified.
14522
14523 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14524
14525         PR target/39561
14526         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
14527         TARGET_EXPAND_CBRANCHDI4.
14528         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
14529         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
14530         (cmpeqdi): Fix comment.
14531
14532 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14533
14534         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
14535         (sh_legitimate_address_p): Likewise.
14536         * config/sh/sh.c (sh_legitimate_index_p): New.
14537         (sh_legitimate_address_p): Likewise.
14538         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
14539         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
14540         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
14541         (MAYBE_BASE_REGISTER_RTX_P): New macro.
14542         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14543         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
14544         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
14545         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
14546         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
14547
14548 2009-05-12  Jan Hubicka  <jh@suse.cz>
14549
14550         * tree-inline.c (estimate_operator_cost): Add operands;
14551         when division happens by constant, it is cheap.
14552         (estimate_num_insns): Loads and stores are not having cost of 0;
14553         EH magic stuff is cheap; when computing runtime cost of switch,
14554         use log2 base of amount of its cases; builtin_expect has cost of 0;
14555         compute cost for moving return value of call.
14556         (init_inline_once): Initialize time_based flags.
14557         * tree-inline.h (eni_weights_d): Add time_based flag.
14558
14559 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14560
14561         * df-core.c: Update head documentation.
14562
14563 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
14564
14565         PR bootstrap/40118
14566         * rs6000.c (rs6000_generate_compare): Use op1b instead of
14567         shadowing exisiting variable op1.
14568
14569 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
14570
14571         PR target/37179
14572         * config/i386/driver-i386.c (processor_signatures): New enum.
14573         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
14574         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
14575         processor signature to detect geode processor.
14576
14577 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14578
14579         Revert:
14580
14581         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14582
14583         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14584         causes spurious differences between trunk and cond-optab branch.
14585
14586 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14587
14588         * dojump.c (compare_from_rtx): Delete.
14589         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
14590         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
14591         if the comparison does not satisfy the predicate; test predicates for
14592         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
14593         further if one existing pattern fails.
14594         * expr.h (compare_from_rtx): Delete.
14595         (prepare_operand): Declare it.
14596         * optabs.c: Change "lib call" to "libcall" throughout.
14597         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
14598         HAVE_conditional_trap, emit_cmp_insn): Delete.
14599         (can_compare_p): Delete cmp_optab case.
14600         (prepare_float_lib_cmp): Return an rtx and a machine mode.
14601         Accept other parameters by value.
14602         (prepare_operand): Make non-static.
14603         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
14604         other parameters by value.  Try to widen operands here based on
14605         an optab_methods argument and looking at cbranch_optab.
14606         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
14607         loop.  Use cbranch_optab directly.
14608         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
14609         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
14610         assertion.
14611         (emit_conditional_move, emit_conditional_add): Inline what's needed
14612         of compare_from_rtx, using new prepare_cmp_insn for the rest.
14613         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
14614         with COMPARE.  Move cmov_optab and cstore_optab above
14615         with cbranch_optab, move cmp_optab down with ucmp_optab,
14616         remove tst_otpab.  Do not initialize trap_rtx.
14617         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
14618         for trap code.  Do not check HAVE_conditional_trap.  Use
14619         prepare_cmp_insn.  Accept no predicate for operand 3.
14620         * optabs.h (OTI_cmp): Mark as used only for libcalls.
14621         (OTI_ctrap, ctrap_optab): New.
14622         (tst_optab): Delete.
14623         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
14624         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
14625         with lookup of ctrap_optab.
14626         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
14627         Delete.
14628         (ctrap_optab): New.
14629
14630         * combine.c (combine_simplify_rtx, simplify_set): Do not
14631         special case comparing against zero for cc0 machines.
14632         * simplify-rtx.c (simplify_binary_operation_1): Never remove
14633         COMPARE on cc0 machines.
14634         (simplify_relational_operation): Return a new expression when
14635         a COMPARE could be removed.
14636         * final.c (final_scan_insn): Compare cc_status values
14637         against LHS of a (compare FOO (const_int 0)) cc0 source.
14638         Also check if cc_status.value is the full compare.
14639
14640         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
14641         (cstoreMM4): Document.
14642         (conditional_trap): Document ctrapMM4 instead.
14643         (sync_compare_and_swapMM): Refer to cbranchcc4.
14644         (Dependent Patterns): Eliminate obsolete information referring to
14645         the old jump optimization phase.
14646         (Canonicalization): Include cbranchcc4 case, omit canonicalization
14647         of compares with 0 on cc0 machines.
14648         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
14649         avoiding references to cc0.  Remove text about storing operands
14650         in cmpMM.
14651         * doc/tm.texi (Condition Codes): Include blurb on different
14652         condition code representations, separate into subsections for
14653         CC0, MODE_CC and conditional execution.
14654
14655         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
14656         alpha_emit_setcc): Accept operands and a machine mode.
14657         * config/alpha/alpha.c (alpha_emit_conditional_branch):
14658         Get code/op0/op1 from operands, use machine mode argument
14659         instead of alpha_compare.fp_p.  Emit the branch here.
14660         (alpha_emit_setcc): Likewise, and return boolean.
14661         (alpha_emit_conditional_move): Likewise.  Assert that
14662         cmp_op_mode == cmp_mode, and simplify accordingly.
14663         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
14664         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
14665         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
14666         Delete.
14667         (stack probe test): Use cbranchdi4.
14668         * config/alpha/predicates.md (alpha_cbranch_operator): New.
14669
14670         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
14671         * config/arc/arc.h (movsicc, movsfcc): Use it.
14672         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
14673         (cbranchsi4, cstoresi4): New.
14674         (cmpsi, bCC and sCC expanders): Remove.
14675
14676         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
14677         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
14678         * config/arm/predicates.md (arm_comparison_operator): Only include
14679         floating-point operators if there is a hardware floating-point unit.
14680         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
14681         deferring to cbranch_cc and cstore_cc respectively.
14682         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
14683         cbranch_cc, cstore_cc): New.
14684         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
14685         arm_compare_op1.
14686         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
14687
14688         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
14689         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
14690         as an argument.
14691         (adjust_insn_length): Adjust calls.
14692         (avr_reorg): Handle (compare (foo) (const_int 0)).
14693         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
14694         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
14695         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
14696         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
14697         (bCC): Remove.
14698         (cbranchqi4, cbranchhi4, cbranchsi4): New.
14699         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
14700
14701         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
14702         (cbranchsi4, cstorebi4, cstoresi4): New.
14703         (movbisi): This insn is duplicate, split it to zero_extend.
14704         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
14705         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
14706         (bfin_optimize_loop): Use cbranch expander.
14707         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
14708         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
14709         (bfin_bimode_comparison_operator): ... this.
14710         (bfin_direct_comparison_operator): New.
14711
14712         * config/cris/cris.c (cris_normal_notice_update_cc): Look
14713         inside (compare FOO (const_int 0)).
14714         (cris_rtx_costs): Handle ZERO_EXTRACT.
14715         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
14716         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
14717         (*tstdi_v32): Delete.
14718         (*cmpdi_non_v32): Add M alternative for operand 1.
14719         (cmpsi, cmp<mode>): Make private.
14720         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
14721         with COMPARE.
14722         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
14723
14724         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
14725         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
14726         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
14727         (cc_reg_operand): New.
14728         (any_cond): Delete.
14729         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
14730         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
14731         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
14732         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
14733         crx_expand_scond): Delete.
14734
14735         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
14736         (cbranchsi4): New.
14737         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
14738         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
14739
14740         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
14741         cstoresi4, cstoresf4, cstoredf4): New.
14742         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
14743         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14744         Receive the entire operands array.
14745         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
14746         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
14747         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14748         Get test/op0/op1 from the operands array.
14749         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
14750
14751         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
14752         (h8300_expand_store): New.
14753         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
14754         (const_int 0)).
14755         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
14756         (h8300_expand_store): New.
14757         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
14758         or do not try to produce (set (cc0) REG).
14759         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
14760         change a compare into a move to a scratch register.  Disable some
14761         peepholes when comparing with zero.
14762         (tstsi, tsthi, tstsi, cmpqi): Make private.
14763         (cmphi): Delete.
14764         (bCC, sCC): Delete.
14765         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
14766         cstoresi4): New.
14767
14768         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
14769         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
14770         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
14771         (ix86_emit_i387_log1p): Use cbranchxf2.
14772         (ix86_expand_setcc): Return void.
14773         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
14774         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
14775         cmp<MODEF>, cmpcc): Remove.
14776         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
14777         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
14778         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
14779         (sCC and bCC expanders): Remove.
14780         (stack_protect_test): Use cbranchcc4.
14781
14782         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
14783         Delete.
14784         (ia64_expand_compare): Accept three rtx by reference and return void.
14785         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
14786         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
14787         from *expr.  Update *expr with the BImode comparison to do.
14788         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
14789         cmptf, bCC, sCC, conditional_trap): Delete.
14790         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
14791         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
14792         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
14793         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
14794         * config/ia64/predicates.md (ia64_cbranch_operator): New.
14795
14796         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
14797         type of last argument.
14798         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
14799         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
14800         use machine mode argument instead of branch_type.  Remove dead
14801         code for floating-point comparisons.
14802         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
14803         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
14804         Remove.
14805         (cbranchsi4, cstoresi4): New.
14806         * config/iq2000/predicates.md (reg_or_const_operand): New.
14807
14808         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
14809         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
14810         (b<code>_op): Rewrite to...
14811         (bcc_op): ... this, using match_operator.
14812         (s<code>_op): Rewrite to...
14813         (scc_op): ... this, using match_operator.
14814         (s<code>_24_op): Rewrite to...
14815         (scc_op_24): ... this, using match_operator.
14816         (s<code>_<mode>): Rewrite to...
14817         (cstore<mode>4): ... this, using match_operator.
14818         (s<code>_<mode>_24): Rewrite to...
14819         (cstore<mode>4_24): ... this, using match_operator.
14820         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
14821         m32c_unpend_compare, m32c_expand_scc): Delete.
14822         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
14823         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
14824         (m32c_expand_movcc): Change NE to EQ if necessary.
14825         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
14826
14827         * config/m32r/m32r-protos.h (gen_cond_store): New.
14828         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
14829         (gen_cond_store): New, from sCC patterns.
14830         (m32r_expand_block_move): Use cbranchsi4.
14831         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
14832         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
14833         (cbranchsi4, cstoresi4): New.
14834
14835         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
14836         Delete.
14837         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
14838         (m68hc11_notice_update_cc): Look into a compare with 0.
14839         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
14840         Delete.
14841         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
14842         cmphi, cmpqi, bCC): Delete.
14843         (cbranchsi4, cbranchhi4, cbranchqi4): New.
14844         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
14845         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
14846         sets with COMPARE.
14847
14848         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
14849         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
14850         * config/m68k/constraints.md (H): New.
14851         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
14852         the define_insn below.
14853         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
14854         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
14855         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
14856         patterns): Wrap RHS with COMPARE.
14857         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
14858         (*cmpdi_internal): Name this pattern.
14859         (cmpdi): Change to define_insn.
14860         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
14861         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
14862         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
14863         predicate.
14864         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
14865         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
14866         (conditional_trap): Change to...
14867         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
14868         (*conditional_trap): Use the ordered_comparison_operator and
14869         const1_operand predicates.
14870         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
14871         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
14872         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
14873         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
14874
14875         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
14876         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
14877         (mcore_gen_compare): New.
14878         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
14879         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
14880         (mcore_gen_compare): ... this.
14881         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
14882         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
14883         (stack probe pattern): Use cbranchsi4.
14884
14885         * config/mips/predicates.md (mips_cstore_operator): New.
14886         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
14887         * config/mips/mips.md (any_cond): Delete.
14888         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
14889         always succeed.
14890         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
14891         fixuns_truncsfdi2): Use cbranch patterns.
14892         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
14893         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
14894         Adjust call to mips_expand_conditional_branch.
14895         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
14896         cstore<GPR:mode>4.
14897         * config/mips/mips-protos.h (mips_expand_conditional_branch,
14898         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
14899         * config/mips/mips.c (cmp_operands): Delete.
14900         (mips_emit_compare): Get comparison operands from *op0/*op1.
14901         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
14902         that it succeeds.  Use op0/op1 instead of cmp_operands.
14903         (mips_expand_conditional_branch, mips_expand_conditional_move,
14904         mips_expand_conditional_trap): Likewise.
14905         (mips_block_move_loop): Use cbranch patterns.
14906         * config/mips/mips.h (cmp_operands): Delete.
14907
14908         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
14909         (mmix_gen_compare_reg): Just return a register in the right CC mode.
14910         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
14911         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
14912         (*cmpcc_folded): Rename to...
14913         (*cmpdi_folded): this.
14914         (*cmpcc): Rename to...
14915         (*cmps): ... this.
14916         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
14917         (bCC): Remove.
14918         (cbranchdi4): New.
14919         (cbranchdf4): New.  Handle invalid comparisons here.
14920         * config/mmix/predicates.md (float_comparison_operator): New.
14921
14922         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
14923         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
14924         * config/mn10300/mn10300.md (tst): Delete.
14925         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
14926         Name these patterns and wrap RHS in a compare.
14927         (*cmpsi): Make this pattern private.  Include tst.
14928         (*cmpsf): Make this pattern private.
14929         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
14930         (compare with zero peepholes): Likewise.
14931         (bCC): Remove.
14932         (cbranchsi4, cbranchsf4): New.
14933         (casesi): Use cbranchsi4.
14934
14935         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
14936         hppa_branch_type): Delete.
14937         (return_addr_rtx): Use cbranchsi4.
14938         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
14939         Emit CCFPmode comparison here.
14940         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
14941         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
14942         hppa_branch_type): Delete.
14943         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
14944         (movsicc, movdicc): Remove references to hppa_compare_op0,
14945         hppa_compare_op1 and compare_from_rtx.
14946         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
14947         (casesi): Use cbranchsi4.
14948
14949         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
14950         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
14951         * config/pdp11/pdp11.md (register_or_const0_operand): New.
14952         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
14953         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
14954         (bCC): Delete.
14955         (cbranchdf4, cbranchhi4, cbranchqi4): New.
14956         (*branch, *branch_inverted): New.
14957
14958         * config/picochip/picochip.md (cbranchhi4): Use
14959         ordered_comparison_operator.
14960         (cmphi, bCC): Remove.
14961
14962         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
14963         (trap_comparison_operator): Delete.
14964         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
14965         rs6000_emit_cbranch): Accept mode and operands.
14966         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
14967         rs6000_compare_fp_p): Delete.
14968         (rs6000_generate_compare): Accept mode and comparison.  Extract code
14969         and op0/op1 from there.  Replace references to rs6000_compare_op0
14970         and rs6000_compare_op1.
14971         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
14972         extract result from passed operands.
14973         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
14974         extract loc from passed operands.
14975         (rs6000_emit_cmove): Likewise.
14976         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
14977         rs6000_compare_fp_p): Delete.
14978         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
14979         (cbranch<GPR>4, cbranch<FP>4): New.
14980         (cstore<mode>4): New.  Consolidate here all choices about when to use
14981         portable or specialized sCC sequences.
14982         (stack_protect_test): Use cbranchsi4.
14983         (conditional_trap): Replace with ctrap<GPR>4.
14984         (conditional trap insn): Replace trap_comparison_operator with
14985         ordered_comparison_operator.
14986
14987         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
14988         (s390_emit_prologue): Use ctrap.
14989         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
14990         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
14991         New predicates replacing...
14992         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
14993         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
14994         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
14995         (add<mode>cc): Do not use s390_compare_op0/op1.
14996         (s<code>): Change to...
14997         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
14998         (seq): Change to...
14999         (cstorecc4): ... this.  Handle EQ or NE equally.
15000         (*sne): Un-privatize for use in cstorecc4.
15001         (b<code>): Change to...
15002         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
15003         (conditional_trap): Replace with...
15004         (ctrap<GPR>4, ctrap<FP>4): ... these.
15005         (stack_protect): Use cbranchcc4.
15006
15007         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
15008         * config/score/score-protos.h (score_gen_cmp): Delete.
15009         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
15010         (score_block_move-loop): Use cbranchsi4.
15011         * config/score/score.md (cbranchsi4): New.
15012         (cmpsi, bCC): Delete.
15013         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
15014         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15015         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
15016         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15017         * config/score/score3.h (score3_gen_cmp): Delete.
15018         * config/score/score7.h (score7_gen_cmp): Delete.
15019
15020         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
15021         (sh_emit_scc_to_t): ... this.  Return void.
15022         (from_compare): Rename to...
15023         (sh_emit_compare_and_branch): ... this.
15024         (sh_emit_compare_and_set): New.
15025         (sh_expand_t_scc): Accept operands.
15026         * config/sh/predicates.md (sh_float_comparison_operator): New.
15027         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
15028         (prepare_scc_operands): Rename to...
15029         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
15030         arguments.
15031         (sh_emit_cheap_store_flag): New.
15032         (sh_emit_set_t_insn): New.
15033         (from_compare): Rename to...
15034         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
15035         handling of TARGET_SH2E floating point to avoid recursive call.
15036         Generate branch here.
15037         (sh_emit_compare_and_set): New.
15038         (sh_expand_t_scc): Get op0/op1 from arguments.
15039         (sh_emit_cheap_store_flag): New.
15040         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
15041         cases.
15042         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
15043         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
15044         (movsicc, movdicc): Do nothing when it recreated operands from
15045         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
15046         prepare_scc_operands (now sh_emit_scc_to_t).
15047         (udivdi3): Use cstoresi4.
15048         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
15049         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
15050         (cbranchint4_media, cbranchfp4_media): New.
15051         (casesi): Use cbranchdi4.
15052         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
15053         Delete.
15054         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
15055         (movnegt): Remove second operand.
15056         (cbranchsf4, cbranchdf4): New.
15057         (stack_protect): Use cbranchdi4/cbranchsi4.
15058
15059         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
15060         (gen_compare_reg): Accept comparison, extract part of it to...
15061         (gen_compare_reg_1): ... this.
15062         (gen_compare_operator): Delete.
15063         (gen_v9_scc): Accept separate destination, comparison code and arms.
15064         Do not use sparc_compare_op0/sparc_compare_op1.
15065         (emit_scc_insn, emit_conditional_branch_insn): New.
15066         (emit_v9_brxx): Make static.  Remove useless assertion.
15067         (sparc_emit_float_lib_cmp): Return RTL instead of calling
15068         emit_cmp_insn.
15069         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
15070         * config/sparc/sparc-protos.h (gen_compare_reg,
15071         sparc_emit_float_lib_cmp): Adjust prototype.
15072         (emit_scc_insn, emit_conditional_branch_insn): New.
15073         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
15074         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
15075         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
15076         iterators to the top.
15077         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
15078         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
15079         snedi_special_trunc): Delete.
15080         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
15081         and snedi_special_trunc.
15082         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
15083         cbranchdi4, cbranch<F:mode>4): New.
15084         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
15085         here.  Use gen_compare_reg instead of gen_compare_operator.
15086         (conditional_trap): Replace with...
15087         (ctrapsi4, ctrapdi4): ... this.
15088         (stack_protect_test): Use cbranchcc4.
15089
15090         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
15091         argument to rtx.
15092         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
15093         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
15094         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
15095         from operands[0] or operands[3] depending on is_set.
15096         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
15097         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
15098         cmpdf, bCC), sCC: Remove.
15099         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
15100         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
15101         cstoredf4): New.
15102         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
15103         spu_emit_branch_or_set.
15104
15105         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
15106         Add two arguments.
15107         * config/stormy16/stormy16.h (xstormy16_compare_op0,
15108         xstormy16_compare_op1): Delete.
15109         * config/stormy16/stormy16.c (xstormy16_compare_op0,
15110         xstormy16_compare_op1): Delete.
15111         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
15112         Adjust calls.
15113         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
15114         (cmphi, cmpsi, bCC): Remove.
15115
15116         * config/v850/v850.md (tstsi, cmpsi): Fold into...
15117         (*cmpsi): ... this one.
15118         (cbranchsi4, cstoresi4): New.
15119         (bCC expanders): Delete.
15120         (sCC insns): Fold into...
15121         (*setcc): ... this one.
15122         (casesi): Do not use gen_cmpsi and gen_bgtu.
15123         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
15124         (movsicc): Simplify.
15125         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
15126
15127         * config/vax/vax-protos.h (cond_name): New.
15128         (vax_output_conditional_branch): Remove.
15129         * config/vax/vax.c (cond_name): New.
15130         (vax_output_conditional_branch): Remove.
15131         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
15132         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
15133         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
15134         (bit<VAXint>): Wrap source with (compare).
15135         (b<code> and following unnamed pattern): Rename to *branch and
15136         *branch_reversed.  Change macroization to match_operator.
15137         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
15138
15139         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
15140         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
15141         Change last argument to machine_mode.
15142         (xtensa_expand_scc): Add machine_mode argument.
15143         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
15144         (gen_conditional_move, xtensa_expand_conditional_branch,
15145         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
15146         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
15147         Adjust operand numbers.
15148         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
15149         Delete.
15150         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
15151         (cmpsi, cmpsf, b<code>, s<code>): Delete.
15152         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
15153
15154 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15155
15156         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15157         causes spurious differences between trunk and cond-optab branch.
15158
15159 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15160
15161         PR target/37137
15162         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
15163
15164 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15165
15166         * tree.c (iterative_hash_pointer): Delete.
15167         (iterative_hash_expr): Short-circuit handling of NULL pointer.
15168         Hash UIDs and versions of SSA names.  Don't special-case built-in
15169         function declarations.
15170
15171 2009-05-11  Ian Lance Taylor  <iant@google.com>
15172
15173         PR bootstrap/40103
15174         * graphite.c: Force -Wc++-compat to only be a warning before
15175         #including "cloog/cloog.h".
15176
15177 2009-05-11  Martin Jambor  <mjambor@suse.cz>
15178
15179         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
15180
15181 2009-05-11  Jan Hubicka  <jh@suse.cz>
15182
15183         * tree-ssa-loop-ivcanon.c: Include target.h
15184         (struct loop_size): new structure.
15185         (constant_after_peeling): New predicate.
15186         (tree_estimate_loop_size): New function.
15187         (estimated_unrolled_size): Rewrite for new estimates.
15188         (try_unroll_loop_completely): Use new estimates.
15189         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
15190
15191 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15192
15193         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
15194         libcpp interface change.
15195         (spu_macro_to_expand): Likewise.
15196
15197 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
15198
15199         PR tree-optimization/40026
15200         * gimplify.c (gimplify_init_constructor): Change initial conditional
15201         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
15202         optimize_compound_literals_in_ctor.
15203
15204 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
15205
15206         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
15207         New devices.
15208         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
15209
15210 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
15211
15212         * tree-vect-data-refs.c (vect_analyze_group_access): Use
15213         HOST_WIDE_INT for gap.
15214
15215 2009-05-11  Ira Rosen  <irar@il.ibm.com>
15216
15217         PR tree-optimization/40074
15218         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
15219         account in group size and step comparison.
15220
15221 2009-05-11  Richard Guenther  <rguenther@suse.de>
15222
15223         * passes.c (init_optimization_passes): Strip now incorrect comment.
15224         (execute_function_todo): Do not set PROP_alias.
15225         * tree-pass.h (PROP_alias): Remove.
15226         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
15227         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
15228         * tree-nrv.c (pass_return_slot): Likewise.
15229         * tree-object-size.c (pass_object_sizes): Likewise.
15230         * tree-ssa-dom.c (pass_dominator): Likewise.
15231         (pass_phi_only_cprop): Likewise.
15232         * tree-ssa-dse.c (pass_dse): Likewise.
15233         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
15234         (pass_cselim): Likewise.
15235         * tree-ssa-pre.c (pass_pre): Likewise.
15236         (pass_fre): Likewise.
15237         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
15238         * tree-ssa-sink.c (pass_sink_code): Likewise.
15239         * tree-stdarg.c (pass_stdarg): Likewise.
15240         * tree-tailcall.c (pass_tail_calls): Likewise.
15241         * tree-vrp.c (pass_vrp): Likewise.
15242
15243 2009-05-10  Ian Lance Taylor  <iant@google.com>
15244
15245         * basic-block.h (enum profile_status): Break out of struct
15246         control_flow_graph.
15247         * cgraph.h (struct inline_summary): Break out of struct
15248         cgraph_local_info.
15249         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15250         of struct cgraph_order_sort.
15251         * combine.c (enum undo_kind): New enum, broken out of struct undo.
15252         * cse.c (struct branch_path): Break out of struct
15253         cse_basic_block_data.
15254         * except.h (enum eh_region_type): Break out of struct eh_region.
15255         * gcc.c (enum add_del): Break out of struct modify_target.
15256         * genrecog.c (enum decision_type): Break out of struct decision_test.
15257         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15258         ggc_pch_data.
15259         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15260         * regmove.c (enum match_use): New enum, broken out of struct match.
15261         * sched-int.h (enum post_call_group): New enum, broken out of
15262         struct deps.
15263         (struct deps_reg): Break out of struct deps.
15264         * target.h (struct asm_int_op): Break out of struct gcc_target.
15265         * tree-eh.c (struct goto_queue_node): Break out of struct
15266         leh_tf_state.
15267         * tree-inline.h (enum copy_body_cge_which): Break out of
15268         copy_body_data.
15269         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15270
15271         * c-decl.c (in_struct, struct_types): New static variables.
15272         (pushtag): Add loc parameter.  Change all callers.
15273         (lookup_tag): Add ploc parameter.  Change all callers.
15274         (check_compound_literal_type): New function.
15275         (parser_xref_tag): Add loc parameter.  Change all callers.  If
15276         -Wc++-compat, warn about struct/union/enum types defined within a
15277         struct or union.
15278         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
15279         and loc parameters.  Change all callers.  Change error calls to
15280         error_at, using loc.  For a redefinition, if the location of the
15281         original definition is known, report it.  Set in_struct and
15282         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
15283         (finish_struct): Add new parameters enclosing_in_struct and
15284         enclosing_struct_types.  Change all callers.  Set
15285         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
15286         in the struct.  If in a struct, add this struct to struct_types.
15287         (start_enum): Add loc parameter.  Change all callers.  Use
15288         error_at for errors, using loc.  For a redefinition, if the
15289         location of the original definition is known, report it.  If in a
15290         struct, add this enum type to struct_types.  If -Wc++-compat warn
15291         if in sizeof, typeof, or alignof.
15292         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
15293         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
15294         (c_parser_enum_specifier): Get enum location for start_enum.
15295         (c_parser_struct_or_union_specifier): Get struct location for
15296         start_struct.  Save in_struct and struct_types status between
15297         start_struct and finish_struct.
15298         (c_parser_cast_expression): Get location of cast.
15299         (c_parser_alignof_expression): Get location of type.
15300         (c_parser_postfix_expression): Likewise.
15301         (c_parser_postfix_expression_after_paren_type): Add type_loc
15302         parameter.  Change all callers.  Call check_compound_literal_type.
15303         Use type_loc for error about variable size type.
15304         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
15305         of an enum constant from an enum type defined in a struct or union.
15306         (c_cast_expr): Add loc parameter.  Change all callers.  If
15307         -Wc++-compat, warn about defining a type in a cast.
15308         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
15309         (start_enum, start_struct, finish_struct): Update declarations.
15310         (parser_xref_tag, c_cast_expr): Update declarations.
15311         (check_compound_literal_type): Declare.
15312
15313 2009-05-11  Ben Elliston  <bje@au.ibm.com>
15314
15315         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
15316         for recent libcpp interface change.
15317         (rs6000_macro_to_expand): Likewise.
15318
15319 2009-05-10  Michael Matz  <matz@suse.de>
15320
15321         PR target/40031
15322         * config/arm/arm.c (require_pic_register): Emit on entry edge,
15323         not at entry of function.
15324
15325 2009-05-10  Richard Guenther  <rguenther@suse.de>
15326
15327         PR tree-optimization/40081
15328         Revert
15329         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15330         using the main variant of the element type.  Do not fiddle with
15331         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15332
15333         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15334         structs with volatile fields.
15335
15336 2009-05-10  Jan Hubicka  <jh@suse.cz>
15337
15338         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15339         (estimate_move_cost): Assert that it does not get called for
15340         VOID_TYPE_P.
15341         (estimate_num_insns): Skip VOID types in argument handling.
15342         (optimize_inline_calls): Delete unreachable blocks and verify that
15343         callgraph is valid.
15344
15345 2009-05-10  Jan Hubicka  <jh@suse.cz>
15346
15347         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15348         * cgraph.c (cgraph_mark_address_taken_node): New function.
15349         (dump_cgraph_node): Dump new flag.
15350         * cgraph.h (struct cgraph_node): Add address_taken.
15351         (cgraph_mark_address_taken_node): New function.
15352         * ipa.c (cgraph_postorder): Prioritize functions with address taken
15353         since new direct calls can be born.
15354
15355 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15356
15357         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15358         tok->val.node.node.
15359
15360 2009-05-10  Jan Hubicka  <jh@suse.cz>
15361
15362         PR middle-end/40084
15363         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15364         argument; rewrite.
15365         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15366         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15367         * tree-inline.c (copy_bb): Set frequency correctly.
15368         (fold_marked_statements): Update call to
15369         cgraph_update_edges_for_call_stmt.
15370
15371 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15372
15373         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15374         identifiers in diagnostics.
15375         * config/arm/arm.c (arm_handle_fndecl_attribute,
15376         arm_handle_isr_attribute): Likewise.
15377         * config/avr/avr.c (avr_handle_progmem_attribute,
15378         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15379         * config/bfin/bfin.c (handle_int_attribute,
15380         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15381         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15382         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15383         Likewise.
15384         * config/darwin.c (darwin_handle_kext_attribute,
15385         darwin_handle_weak_import_attribute): Likewise.
15386         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15387         h8300_handle_eightbit_data_attribute,
15388         h8300_handle_tiny_data_attribute): Likewise.
15389         * config/i386/i386.c (ix86_handle_cconv_attribute,
15390         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15391         * config/i386/winnt.c (ix86_handle_shared_attribute,
15392         ix86_handle_selectany_attribute): Likewise.
15393         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15394         * config/m32c/m32c.c (function_vector_handler): Likewise.
15395         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15396         m68hc11_handle_fntype_attribute): Likewise.
15397         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15398         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15399         * config/mips/mips.c (mips_insert_attributes,
15400         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15401         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15402         rs6000_handle_struct_attribute): Likewise.
15403         * config/sh/sh.c (sh_insert_attributes,
15404         sh_handle_resbank_handler_attribute,
15405         sh_handle_interrupt_handler_attribute,
15406         sh2a_handle_function_vector_handler_attribute,
15407         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15408         Likewise.
15409         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15410         * config/spu/spu.c (spu_handle_fndecl_attribute,
15411         spu_handle_vector_attribute): Likewise.
15412         * config/stormy16/stormy16.c
15413         (xstormy16_handle_interrupt_attribute): Likewise.
15414         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15415         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15416
15417 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15418
15419         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15420         (pp_translate_identifiers): New.
15421         (pp_identifier): Only conditionally translate identifier to locale
15422         character set.
15423         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15424         (pp_base_tree_identifier): Only conditionally translate identifier
15425         to locale character set.
15426         * c-pretty-print.c (M_): Define.
15427         (pp_c_type_specifier, pp_c_primary_expression): Mark English
15428         fragments for conditional translation with M_.
15429         * tree-pretty-print.c (maybe_init_pretty_print): Disable
15430         identifier translation.
15431
15432 2009-05-10  Richard Guenther  <rguenther@suse.de>
15433
15434         PR tree-optimization/40081
15435         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15436         using the main variant of the element type.  Do not fiddle with
15437         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15438
15439 2009-05-09  Jan Hubicka  <jh@suse.cz>
15440
15441         PR middle-end/40080
15442         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15443         indirect calls; verify cgraph afterwards.
15444
15445 2009-05-09  Jan Hubicka  <jh@suse.cz>
15446
15447         PR bootstrap/40082
15448         * ipa.c (update_inlined_to_pointer): New function.
15449         (cgraph_remove_unreachable_nodes): Use it.
15450
15451 2009-05-09  Jan Hubicka  <jh@suse.cz>
15452
15453         * tree-eh.c (struct leh_state): Remove prev_try.
15454         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15455         not track prev_try.
15456         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15457         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15458         remove_eh_handler_and_replace, foreach_reachable_handler,
15459         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15460         * except.h (struct eh_region): Remove eh_region_u_cleanup.
15461         (gen_eh_region_cleanup): Update prototype.
15462
15463 2009-05-09  Jan Hubicka  <jh@suse.cz>
15464
15465         PR middle-end/40043
15466         * except.c (copy_eh_region): Always set prev_try.
15467         (redirect_eh_edge_to_label): Find outer try.
15468         (foreach_reachable_handler): When looking for prev try
15469         handle case where previous try is not going to be taken.
15470
15471 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15472
15473         PR tree-optimization/40049
15474         * tree-vect-stmts.c (vectorizable_operation): If the machine has
15475         only vector/vector shifts, convert the type of the constant to the
15476         appropriate type to avoid building incorrect trees, which
15477         eventually have problems with garbage collection.
15478
15479 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15480
15481         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15482         -1 for complex floating-point types if honoring signed zeros.
15483
15484 2009-05-08  Jan Hubicka  <jh@suse.cz>
15485
15486         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15487         argument; handle correctly when profile is absent.
15488         (build_cgraph_edges): Update.
15489         (rebuild_cgraph_edges): Update.
15490         * cgraph.c: Do not include varray.h.
15491         (cgraph_set_call_stmt_including_clones): New function.
15492         (cgraph_create_edge_including_clones): Likewise
15493         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
15494         (cgraph_update_edges_for_call_stmt): Handle clones.
15495         (cgraph_remove_node): Handle clone tree.
15496         (cgraph_remove_node_and_inline_clones): New function.
15497         (dump_cgraph_node): Dump clone tree.
15498         (cgraph_clone_node): Handle clone tree.
15499         (clone_function_name): Bring here from tree-inline.c.
15500         (cgraph_create_virtual_clone): New function.
15501         * cgraph.h (ipa_replace_map): Move here from ipa.h.
15502         (cgraph_clone_info): New function.
15503         (strut cgraph_node): Add clone_info and new clone tree pointers.
15504         (cgraph_remove_node_and_inline_clones,
15505         cgraph_set_call_stmt_including_clones,
15506         cgraph_create_edge_including_clones,
15507         cgraph_create_virtual_clone): Declare.
15508         (cgraph_function_versioning): Use VEC argument.
15509         (compute_call_stmt_bb_frequency): Update prototype.
15510         (cgraph_materialize_all_clones): New function.
15511         * ipa-cp.c (ipcp_update_cloned_node): Remove.
15512         (ipcp_create_replace_map): Update to VECtors.
15513         (ipcp_update_callgraph): Use virtual clones.
15514         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
15515         (ipcp_update_profiling): Do not update local profiling.
15516         (ipcp_insert_stage): Use VECtors and virtual clones.
15517         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
15518         (clone_of_p): New function.
15519         (cgraph_preserve_function_body_p): Use clone tree.
15520         (cgraph_optimize): Materialize clones.
15521         (cgraph_function_versioning): Update for VECtors.
15522         (save_inline_function_body): Use clone tree.
15523         (cgraph_materialize_clone): New function.
15524         (cgraph_materialize_all_clones): Likewise.
15525         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
15526         * ipa.c: Include gimple.h.
15527         (cgraph_remove_unreachable_nodes): Use clone tree.
15528         * ipa-prop.c (ipa_note_param_call): Update call to
15529         compute_call_stmt_bb_frequencycall.
15530         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
15531         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
15532         (copy_bb): Handle updating of clone tree; add new edge when new call
15533         appears.
15534         (expand_call_inline): Be strict about every call having edge.
15535         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
15536         (delete_unreachable_blocks_update_callgraph): New function.
15537         (tree_function_versioning): Use VECtors; always remove unreachable
15538         blocks and fold conditionals.
15539         * tree-inline.h: Do not include varray.h.
15540         (tree_function_versioning): Remove.
15541         * Makefile.in (GTFILES): Remove tree-inline.c
15542         * passes.c (do_per_function): Do only functions having body.
15543         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
15544         tree.
15545
15546 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
15547             Andrew Morrow  <acm@google.com>
15548
15549         PR c/36892
15550         * c-common.c (c_common_attribute_table): Permit deprecated
15551         attribute to take an optional argument.
15552         (handle_deprecated_attribute): If the optional argument to
15553         __attribute__((deprecated)) is not a string ignore the attribute
15554         and emit a warning.
15555
15556         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
15557         * c-typeck.c (build_component_ref): Likewise.
15558         (build_external_ref): Likewise.
15559
15560         * toplev.c (warn_deprecated_use): Add an attribute argument.
15561         Emit the message associated with __attribute__((deprecated)).
15562
15563         * toplev.h (warn_deprecated_use): Updated.
15564
15565         * doc/extend.texi: Document new optional parameter to
15566         __attribute__((deprecated))
15567
15568 2009-05-08  Michael Eager <eager@eagercon.com>
15569
15570         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
15571         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
15572
15573 2009-05-08  Richard Guenther  <rguenther@suse.de>
15574
15575         PR tree-optimization/40062
15576         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
15577         Avoid exponential behavior.
15578
15579 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15580
15581         PR rtl-optimization/33928
15582         PR 26854
15583         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
15584         process_uses, build_single_def_use_links): New.
15585         (update_df): Update use_def_ref.
15586         (forward_propagate_into): Use get_def_for_use instead of use-def
15587         chains.
15588         (fwprop_init): Call build_single_def_use_links and let it initialize
15589         dataflow.
15590         (fwprop_done): Free use_def_ref.
15591         (fwprop_addr): Eliminate duplicate call to df_set_flags.
15592         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
15593         df_rd_simulate_one_insn): New.
15594         (df_rd_bb_local_compute_process_def): Update head comment.
15595         (df_chain_create_bb): Use the new RD simulation functions.
15596         * df.h (df_rd_simulate_artificial_defs_at_top,
15597         df_rd_simulate_one_insn): New.
15598         * opts.c (decode_options): Enable fwprop at -O1.
15599         * doc/invoke.texi (-fforward-propagate): Document this.
15600
15601 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15602
15603         PR c/24581
15604         * c-typeck.c (build_binary_op): Handle arithmetic between one real
15605         and one complex operand specially.
15606         * tree-complex.c (some_nonzerop): Do not identify a real value as
15607         zero if flag_signed_zeros.
15608
15609 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15610
15611         PR rtl-optimization/33928
15612         * loop-invariant.c (record_use): Fix && vs. || mishap.
15613
15614 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15615
15616         PR rtl-optimization/33928
15617         * loop-invariant.c (struct use): Add addr_use_p.
15618         (struct def): Add n_addr_uses.
15619         (struct invariant): Add cheap_address.
15620         (create_new_invariant): Set cheap_address.
15621         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
15622         (record_uses): Pass df_ref to record_use.
15623         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
15624         used only as such.
15625
15626 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15627
15628         * config/sh/sh.c: Do not include c-pragma.h.
15629
15630 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15631
15632         * config/spu/spu.c: Remove include of c-common.h.
15633
15634 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
15635
15636         PR c/39037
15637         * c-common.h (mark_valid_location_for_stdc_pragma,
15638         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
15639         clear_float_const_decimal64, float_const_decimal64_p): New.
15640         * c.opt (Wunsuffixed-float-constants): New.
15641         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
15642         unsuffixed float constant, handle new warning.
15643         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
15644         * c-decl.c (c_scope): New flag float_const_decimal64.
15645         (set_float_const_decimal64, clear_float_const_decimal64,
15646         float_const_decimal64_p): New.
15647         (push_scope): Set new flag.
15648         * c-parser.c (c_parser_translation_unit): Mark when it's valid
15649         to use STDC pragmas.
15650         (c_parser_external_declaration): Ditto.
15651         (c_parser_compound_statement_nostart): Ditto.
15652         * c-pragma.c (valid_location_for_stdc_pragma,
15653         mark_valid_location_for_stdc_pragma,
15654         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
15655         handle_pragma_float_const_decimal64): New.
15656         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
15657         * cp/semantics.c (valid_location_for_stdc_pragma_p,
15658         set_float_const_decimal64, clear_float_const_decimal64,
15659         float_const_decimal64_p): New dummy functions.
15660         * doc/extend.texi (Decimal Float): Remove statement that the
15661         pragma, and suffix for double constants, are not supported.
15662         * doc/invoke.texi (Warning Options): List new option.
15663         (-Wunsuffixed-float-constants): New.
15664
15665 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
15666
15667         * config/i386/i386.c: Do not include c-common.h.
15668
15669 2009-05-07  Mark Heffernan  <meheff@google.com>
15670
15671         * doc/invoke.texi (Debugging Options): Document change of debugging
15672         dump location.
15673         * opts.c (decode_options): Make dump_base_name relative to
15674         aux_base_name directory.
15675
15676 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
15677
15678         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
15679         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
15680
15681 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
15682
15683         * Makefile.in (install-plugin): Simplify a bit.
15684
15685 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
15686
15687         * Makefile.in (OBJS-common): Add regcprop.o.
15688         (regcprop.o): New.
15689         * timevar.def (TV_CPROP_REGISTERS): New.
15690         * regrename.c (regrename_optimize): Return 0.
15691         (rest_of_handle_regrename): Delete.
15692         (pass_rename_registers): Point to regrename_optimize.
15693         (struct value_data_entry, struct value_data,
15694         kill_value_one_regno, kill_value_regno, kill_value,
15695         set_value_regno, init_value_data, kill_clobbered_value,
15696         kill_set_value, kill_autoinc_value, copy_value,
15697         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
15698         replace_oldest_value_reg, replace_oldest_value_addr,
15699         replace_oldest_value_mem, copyprop_hardreg_forward_1,
15700         debug_value_data, validate_value_data): Move...
15701         * regcprop.c: ... here.
15702         (rest_of_handle_cprop): Delete.
15703         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
15704
15705 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
15706
15707         PR middle-end/40057
15708         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
15709         GEN_INT for 1 << bitnum.
15710         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
15711         build_int_cst_type.
15712
15713 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
15714
15715         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
15716         Remove wrong description of "nand" operation.
15717
15718 2009-05-06  Richard Guenther  <rguenther@suse.de>
15719             Adam Nemet  <anemet@caviumnetworks.com>
15720
15721         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
15722         comment.  Add that if LHS is not a gimple register, then RHS1 has
15723         to be a single object (GIMPLE_SINGLE_RHS).
15724
15725 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
15726
15727         * expr.c (get_def_for_expr): Move it up in the file.
15728         (store_field): When expanding a bit-field store, look at the
15729         defining gimple stmt for the masking conversion.
15730
15731 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
15732
15733         PR middle-end/39986
15734         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
15735         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
15736         32-bit memcpy into long.
15737
15738 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
15739
15740         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
15741         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
15742         new_reg_loc_descr.
15743         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
15744         instead of appending DW_OP_deref*.
15745
15746 2009-05-06  Michael Matz  <matz@suse.de>
15747
15748         PR middle-end/40021
15749         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
15750         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
15751
15752 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
15753
15754         * Makefile.in (install-plugin): Fix srcdir handling.
15755
15756 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
15757
15758         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
15759         when processing for not_regs_needed bitmap.
15760         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
15761         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
15762         handling it for rhs.
15763
15764 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15765
15766         * config/i386/i386.md (unnamed inc/dec peephole): Use
15767         optimize_insn_for_size_p instead of optimize_size.
15768         * config/i386/predicates.md (incdec_operand): Likewise.
15769         (aligned_operand): Likewise.
15770         * config/i386/sse.md (divv8sf3): Likewise.
15771         (sqrtv8sf2): Likewise.
15772
15773 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15774
15775         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
15776
15777         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
15778
15779 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15780
15781         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
15782         ssemodesuffixf2c with avxmodesuffixf2c.
15783
15784 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
15785
15786         PR c/40032
15787         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
15788
15789 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
15790
15791         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
15792         (struct tree_base): Adjust spacing for 8 bit boundaries.
15793         (struct tree_decl_common): Add decl_by_reference_flag bit.
15794         (DECL_BY_REFERENCE): Adjust.
15795         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
15796         print DECL_BY_REFERENCE bit.
15797         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
15798         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
15799         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
15800         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
15801         unconditionally.
15802
15803         PR middle-end/39666
15804         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
15805         range of the type, but default label is missing, add it with one
15806         of the existing labels instead of adding a new label for it.
15807
15808 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
15809
15810         * dwarf.h: Remove.
15811
15812 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
15813
15814         * Makefile.in (enable_plugin, plugin_includedir): New.
15815         (install): Depend on install-plugin.
15816         (PLUGIN_HEADERS): New.
15817         (install-plugin): New.
15818         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
15819
15820 2009-05-05  Richard Guenther  <rguenther@suse.de>
15821
15822         PR tree-optimization/40022
15823         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
15824         the only vuse.
15825         (phivn_valid_p): Fix tuplification error, simplify.
15826         (phiprop_insert_phi): Add dumps.
15827         (propagate_with_phi): Simplify.
15828
15829 2009-05-05  Richard Guenther  <rguenther@suse.de>
15830
15831         PR middle-end/40023
15832         * builtins.c (gimplify_va_arg_expr): Properly build the address.
15833
15834 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
15835
15836         * tree.h (strip_float_extensions): Remove duplicate declaration.
15837         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
15838         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
15839         block_ultimate_origin): Rearrange the declarations line to match the
15840         comment that indicates the .c file which the functions are defined.
15841         (dwarf2out_*, set_decl_rtl): Add comment.
15842         (get_base_address): Adjust comment.
15843         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
15844         declarations line and add comment.
15845         (is_builtin_name): Add blank after function name, for clarity.
15846
15847 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15848
15849         * attribs.c (decl_attributes): Use %qE for identifiers in
15850         diagnostics.
15851         * cgraphunit.c (verify_cgraph_node): Translate function names to
15852         locale character set in diagnostics.
15853         * coverage.c (get_coverage_counts): Use %qE for identifiers in
15854         diagnostics.
15855         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
15856         Document that functions are named in UTF-8.
15857         * expr.c (expand_expr_real_1): Translate function names to locale
15858         character set in diagnostics.
15859         * gimplify.c (omp_notice_variable, omp_is_private,
15860         gimplify_scan_omp_clauses): Use %qE for identifiers in
15861         diagnostics.
15862         * langhooks.c (lhd_print_error_function): Translate function names
15863         to locale character set.
15864         * langhooks.h (decl_printable_name): Document that return value is
15865         in internal character set.
15866         * stmt.c: Include pretty-print.h
15867         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
15868         diagnostics.
15869         (resolve_operand_name_1): Translate named operand name to locale
15870         character set.
15871         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
15872         diagnostics.
15873         * toplev.c (announce_function): Translate function names to locale
15874         character set.
15875         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
15876         (default_tree_printer): Use pp_identifier or translate identifiers
15877         to locale character set.  Mark "<anonymous>" for translation.
15878         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
15879         for identifiers in diagnostics.
15880         * tree.c (handle_dll_attribute): Use %qE for identifiers in
15881         diagnostics.
15882         * varasm.c (output_constructor): Use %qE for identifiers in
15883         diagnostics.
15884
15885 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
15886
15887         * configure.ac: use ` ` instead of $()
15888         * configure: Regenerate.
15889
15890 2009-05-05  Ben Elliston  <bje@au.ibm.com>
15891
15892         * config/pa/linux-atomic.c: Eliminate conditional include of
15893         errno.h on non-LP64 systems to simplify build requirements.
15894
15895 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
15896
15897         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
15898         diagnostics.
15899         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
15900         and pass value to identifier_to_locale.
15901         (warn_variable_length_array): Make name a tree.
15902         (grokdeclarator): Separate diagnostic texts for named and unnamed
15903         declarators.  Use %qE for named declarators.
15904         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
15905         diagnostics.
15906         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
15907         identifiers in diagnostics.
15908         * c-typeck.c (push_member_name, start_init): Pass identifiers to
15909         identifier_to_locale.  Mark "anonymous" strings for translation.
15910
15911 2009-05-04  Michael Eager <eager@eagercon.com>
15912
15913         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
15914         address for DImode/DFmode only if double-precision FP regs.
15915
15916 2009-05-04  Michael Eager <eager@eagercon.com>
15917
15918         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
15919         TARGET_SINGLE_FLOAT check.
15920
15921 2009-05-04  Michael Eager <eager@eagercon.com>
15922
15923         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
15924
15925 2009-05-04  Michael Eager <eager@eagercon.com>
15926
15927         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
15928         * config/rs6000/t-xilinx: New
15929
15930 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
15931
15932         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
15933         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
15934         * gcc/explow.c (memory_address): Use target hook.
15935         * gcc/targhooks.c (default_legitimize_address): New.
15936         * gcc/targhooks.h (default_legitimize_address): New.
15937         * gcc/target.h (legitimize_address): New.
15938         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
15939         (TARGET_INITIALIZER): Include it.
15940         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
15941
15942         * config/bfin/bfin-protos.h (legitimize_address): Remove.
15943         * config/bfin/bfin.c (legitimize_address): Remove.
15944         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
15945         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
15946         Remove.
15947         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
15948         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
15949
15950         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
15951         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
15952         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
15953         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
15954         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
15955         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
15956         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
15957         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
15958         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
15959         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
15960         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
15961         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
15962         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
15963         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
15964         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
15965         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
15966         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
15967         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
15968         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
15969         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
15970         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
15971         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
15972         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
15973
15974         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
15975         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
15976         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
15977         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
15978         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
15979         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
15980         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
15981         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
15982         (thumb_legitimize_address): Delete.
15983         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
15984         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
15985         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
15986         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
15987         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
15988         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
15989         Delete.
15990         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
15991         Delete.
15992
15993         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
15994         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
15995         * config/m32r/m32r.c (m32r_legitimize_address): New.
15996         * config/m68k/m68k.c (m68k_legitimize_address): New.
15997         * config/score/score.c (score_legitimize_address): Standardize.
15998         * config/score/score3.c (score3_legitimize_address): Standardize.
15999         * config/score/score3.h (score3_legitimize_address): Adjust.
16000         * config/score/score7.c (score7_legitimize_address): Standardize.
16001         * config/score/score7.h (score7_legitimize_address): Adjust.
16002         * config/sh/sh.c (sh_legitimize_address): New.
16003         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
16004
16005         * gcc/config/s390/s390.c (legitimize_address): Rename to...
16006         (s390_legitimize_address): ... this.
16007         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
16008         (sparc_legitimize_address): ... this.
16009         * gcc/config/i386/i386.c (legitimize_address): Rename to...
16010         (ix86_legitimize_address): ... this.
16011         * gcc/config/avr/avr.c (legitimize_address): Rename to...
16012         (avr_legitimize_address): ... this.
16013         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
16014         (mn10300_legitimize_address): ... this.
16015         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
16016         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
16017         (alpha_expand_mov): Adjust call.
16018
16019         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
16020         * config/spu/spu.c (spu_legitimize_address): Likewise.
16021         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
16022         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
16023
16024 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16025
16026         * intl.c (locale_encoding, locale_utf8): New.
16027         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
16028         * intl.h (locale_encoding, locale_utf8): Declare.
16029         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
16030         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
16031         New.
16032         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
16033         argument.
16034         (pp_tree_identifier): Define to call pp_base_tree_identifier.
16035         (pp_base_tree_identifier): Declare as function.
16036         (identifier_to_locale): Declare.
16037         * Makefile.in (pretty-print.o): Update dependencies.
16038         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
16039
16040 2009-05-04  Richard Guenther  <rguenther@suse.de>
16041
16042         PR middle-end/40015
16043         * builtins.c (fold_builtin_memory_op): Do not decay to element
16044         type if the size matches the whole array.
16045
16046 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16047
16048         * expmed.c (synth_mult): When trying out a shift, pass the result
16049         of a signed shift.
16050
16051 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16052
16053         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
16054         (shiftsub1_cost): New.
16055         (init_expmed): Compute shiftsub1_cost.
16056         (synth_mult): Optimize multiplications by constants of the form
16057         -(2^^m-1) for some constant positive integer m.
16058
16059 2009-05-03  Richard Guenther  <rguenther@suse.de>
16060
16061         PR c/39983
16062         * c-typeck.c (array_to_pointer_conversion): Do not built
16063         ADDR_EXPRs of arrays of pointer-to-element type.
16064         * c-gimplify.c (c_gimplify_expr): Revert change fixing
16065         up wrong ADDR_EXPRs after-the-fact.
16066         * c-common.c (strict_aliasing_warning): Strip pointer
16067         conversions for obtaining the original type.
16068         * builtins.c (fold_builtin_memset): Handle array types.
16069         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
16070         and array types
16071
16072 2009-05-03  Richard Guenther  <rguenther@suse.de>
16073
16074         PR middle-end/23329
16075         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
16076         Do not lose casts from array types with unknown extent to array
16077         types with known extent.
16078         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
16079         alias set compatibility.
16080
16081 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16082
16083         * flags.h (extra_warnings): Delete.
16084         * toplev.c (process_options): Handle Wuninitialized here.
16085         * opts.c (extra_warnings): Delete.
16086         (set_Wextra): Delete.
16087         (common_handle_option): -Wextra can be handled automatically.
16088         * c-opts.c (c_common_handle_option): Delete obsolete code.
16089         (c_common_post_options): Simplify comment.
16090         * common.opt (W): Add Var.
16091         (Wextra): Add Var.
16092         (Wuninitialized): Initialize to -1.
16093
16094 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
16095             Richard Guenther  <rguenther@suse.de>
16096
16097         * expr.c (get_def_for_expr): New function.
16098         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
16099         SSA rather than trees.
16100         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
16101         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
16102
16103 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
16104
16105         * c-common.c (reswords): Add _Imaginary.
16106         * c-common.c (enum rid): Add RID_IMAGINARY.
16107
16108 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
16109
16110         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
16111         Patch by Richard Guenther.
16112
16113 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
16114
16115         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
16116         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16117         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
16118         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
16119         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
16120         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
16121         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
16122         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
16123         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
16124         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
16125         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
16126         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
16127         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
16128         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
16129         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
16130         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
16131         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
16132         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
16133
16134 2009-05-02  Richard Guenther  <rguenther@suse.de>
16135
16136         PR tree-optimization/39940
16137         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
16138         doing so.
16139
16140 2009-05-02  Richard Guenther  <rguenther@suse.de>
16141
16142         PR middle-end/40001
16143         * tree-ssa.c (execute_update_addresses_taken): Properly check
16144         if we can mark a variable DECL_GIMPLE_REG_P.
16145         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
16146         back to the end of the function.
16147         (is_gimple_reg_type): Remove complex type special casing.
16148         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
16149         if not optimizing.
16150
16151 2009-05-02  Ben Elliston  <bje@au.ibm.com>
16152
16153         * doc/collect2.texi (Collect2): Document search path behaviour
16154         when configured with --with-ld.
16155
16156 2009-05-02  Jan Hubicka  <jh@suse.cz>
16157
16158         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
16159         parameter; update callers.
16160         (coalesce_cost_edge): EH edges are costier because they needs
16161         splitting even if not critical and even more costier when there are
16162         multiple EH predecestors.
16163
16164 2009-05-02  Jan Hubicka  <jh@suse.cz>
16165
16166         * except.c (remove_eh_handler_and_replace): Handle updating after
16167         removing TRY blocks.
16168
16169 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
16170
16171         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
16172
16173 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
16174
16175         * varasm.c: Do not include c-pragma.h.
16176         * attribs.c: Do not incude c-common.h.
16177
16178 2009-05-01  Michael Matz  <matz@suse.de>
16179
16180         * calls.c (initialize_argument_information): Handle SSA names like
16181         decls with a non MEM_P DECL_RTL.
16182
16183 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16184
16185         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
16186         * ipa-utils.c: Likewise.
16187         * ipa-type-escape.c: Likewise.
16188         * cgraphunit.c Do not include c-common.h.
16189         * ipa-pure-const.c: Likewise.
16190         * tree-if-conv.c: Likewise.
16191         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
16192         * ipa-struct-reorg.c: Likewise.
16193         * tree-nomudflap.c: Likewise.
16194         * tree-ssa-structalias.c: Likewise.
16195
16196 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16197
16198         * store-motion.c: Many cleanups to make this pass a first-class
16199         citizen instead of an appendix to gcse load motion.  Add TODO list
16200         to make this pass faster/cleaner/better.
16201
16202         (struct ls_expr): Post gcse.c-split cleanups.
16203         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
16204         "stores" field to "avail_stores".
16205         (pre_ldst_mems): Rename to store_motion_mems.
16206         (pre_ldst_table): Rename to store_motion_mems_table.
16207         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
16208         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
16209         (ldst_entry): Rename to st_expr_entry, update users.
16210         (free_ldst_entry): Rename to free_st_expr_entry, update users.
16211         (free_ldst_mems): Rename to free_store_motion_mems, update users.
16212         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
16213         update caller.
16214         (first_ls_expr): Rename to first_st_expr, update users.
16215         (next_ls_expr): Rename to next_st_expr, update users.
16216         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
16217         fields properly for store motion instead of names inherited from load
16218         motion in gcse.c.
16219         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
16220         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
16221         are done with it.
16222
16223         (ae_kill): Rename to st_kill, update users.
16224         (ae_gen): Rename to st_avloc, update users.
16225         (transp): Rename to st_transp, update users.
16226         (pre_insert_map): Rename to st_insert_map, update users.
16227         (pre_delete_map): Rename to st_delete_map, update users.
16228         (insert_store, build_store_vectors, free_store_memory,
16229         one_store_motion_pass): Update for abovementioned changes.
16230
16231         (gcse_subst_count, gcse_create_count): Remove.
16232         (one_store_motion_pass): New statistics counters "n_stores_deleted"
16233         and "n_stores_created", local variables.
16234
16235         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
16236         use for_each_rtx.
16237
16238         (regvec, compute_store_table_current_insn): Remove.
16239         (reg_set_info, reg_clear_last_set): Remove.
16240         (compute_store_table): Use DF caches instead of local dataflow
16241         solvers.
16242
16243 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
16244
16245         * c-objc-common.c (c_tree_printer): Print identifiers with
16246         pp_identifier, not pp_string.  Mark "({anonymous})" for
16247         translation.
16248         * c-pretty-print.c (pp_c_ws_string): New.
16249         (pp_c_cv_qualifier, pp_c_type_specifier,
16250         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16251         pp_c_storage_class_specifier, pp_c_function_specifier,
16252         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16253         pp_c_primary_expression, pp_c_postfix_expression,
16254         pp_c_unary_expression, pp_c_shift_expression,
16255         pp_c_relational_expression, pp_c_equality_expression,
16256         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16257         use pp_string and pp_c_ws_string in place of pp_identifier and
16258         pp_c_identifier for non-identifiers.  Mark English strings for
16259         translation.
16260         * c-pretty-print.h (pp_c_ws_string): Declare.
16261
16262 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
16263             Roland McGrath <roland@redhat.com>
16264
16265         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16266         (ENABLE_LD_BUILDID): New configuration option.
16267         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16268         (LINK_BUILDID_SPEC): New macro.
16269         (init_spec): If defined, prepend it between LINK_EH_SPEC and
16270         link_spec.
16271         * doc/install.texi: Document --enable-linker-build-id option.
16272         * configure: Rebuild.
16273         * config.in: Rebuild.
16274
16275 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
16276
16277         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
16278         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
16279         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
16280         MIPS_GP_SAVE_AREA_SIZE.
16281         * config/mips/mips.c (struct mips_frame_info): Update comment
16282         before arg_pointer_offset and hard_frame_pointer_offset.
16283         (mips_compute_frame_info): Update diagram before function: to
16284         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
16285         indicate the position of frame_pointer_rtx with -fstack-protector and
16286         to show args_size.  Don't allocate cprestore area for leaf functions
16287         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
16288         cprestore_size.
16289         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
16290
16291 2009-04-30  Michael Matz  <matz@suse.de>
16292
16293         PR tree-optimization/39955
16294         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
16295
16296 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
16297
16298         * ira.c (setup_cover_and_important_classes):  Use safe macro
16299         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
16300         directly.
16301         * genpreds.c (write_tm_preds_h):  Output suitable definition of
16302         REG_CLASS_FOR_CONSTRAINT.
16303
16304 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16305
16306         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
16307         instead of an int.
16308         * bitmap.c (bitmap_descriptor): Likewise.
16309         * ggc-common.c (loc_descriptor): Likewise.
16310         * varray.c (varray_descriptor): Likewise.
16311         * vec.c (vec_descriptor): Likewise.
16312
16313 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
16314
16315         * Makefile.in (dce.o): Add $(EXCEPT_H).
16316         * dce.c: Include except.h and delete redundant vector definitions.
16317         (deletable_insn_p): Return false for non-call insns that can throw
16318         if DF is running.
16319
16320 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
16321
16322         * gcse.c (ae_gen): Remove.
16323         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
16324         and make non-static function to make it available in store-motion.c.
16325         Update call sites with search-and-replace.
16326         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
16327         extract_mentioned_regs, extract_mentioned_regs_helper,
16328         find_moveable_store, compute_store_table, load_kills_store, find_loads,
16329         store_killed_in_insn, store_killed_after, store_killed_before,
16330         build_store_vectors, insert_insn_start_basic_block, insert-store,
16331         remove_reachable_equiv_notes, replace_store_insn, delete_store,
16332         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16333         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16334         * store-motion.c: ...new file.  Also copy data structures from gcse.c
16335         and clean up to remove parts not used by store motion.
16336         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16337         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16338
16339 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16340
16341         PR target/38571
16342         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16343         when optimizing for size.
16344
16345 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
16346
16347         * gcse.c (gcse_constant_p): Fix typo in last change.
16348
16349 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16350
16351         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16352
16353 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
16354
16355         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16356
16357 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
16358
16359         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16360         CONST_HIGH_PART result.
16361
16362 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
16363
16364         * config/avr/avr.c (initial_elimination_offset): Rename to
16365         avr_initial_elimination_offset.
16366         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16367         change return type to bool.
16368         (avr_can_eliminate): New function.
16369         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16370         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16371         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16372         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16373         avr_initial_elimination_offset.
16374         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16375         (avr_initial_elimination_offset): Define.
16376
16377 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
16378             Steven Bosscher  <steven@gcc.gnu.org>
16379
16380         PR rtl-optimization/39938
16381         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16382         * cfgrtl.c: Include insn-attr.h.
16383         (rest_of_pass_free_cfg): New function.
16384         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16385         * resource.c (init_resource_info): Remove call to df_analyze.
16386
16387 2009-04-29  Richard Guenther  <rguenther@suse.de>
16388
16389         PR target/39943
16390         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16391         allow conversion to signed integers.
16392
16393 2009-04-29  Richard Guenther  <rguenther@suse.de>
16394
16395         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16396         shifts of floating point vectors if the shift amount is
16397         a constant multiple of the element size.
16398
16399 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16400             Michael Matz  <matz@suse.de>
16401
16402         PR middle-end/39927
16403         PR bootstrap/39929
16404         * tree-outof-ssa.c (emit_partition_copy): New function.
16405         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16406         insert_part_to_rtx_on_edge): Perform the partition base var
16407         copy using emit_partition_copy.
16408         (insert_value_copy_on_edge): Convert constants to the right mode.
16409         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16410         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16411
16412 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16413
16414         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16415         scan backwards to try to find a constant to initialize it.
16416
16417         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16418         insn before the loop_end instruction, don't look past labels.
16419
16420 2009-04-29  Richard Guenther  <rguenther@suse.de>
16421
16422         PR middle-end/39937
16423         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16424         loose type conversions.
16425         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
16426         stmts only if there are no uses of its definition.
16427
16428 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16429
16430         * config/bfin/bfin.h (splitting_loops): Declare.
16431         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16432         Reorder bit definitions to be ascending.
16433         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16434         * config/bfin/bfin.c (splitting_loops): New variable.
16435         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16436         (struct loop_info): Remove members INIT and LOOP_INIT.
16437         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
16438         the LSETUP sequence.  Allow LC to be loaded from any register, but
16439         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16440         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16441         set to 1.
16442         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16443         of reload_completed.
16444
16445         From Jie Zhang:
16446         * config/bfin/bfin.md (movsi_insn): Refine constraints.
16447
16448 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
16449
16450         * Makefile.in (PLUGIN_VERSION_H): New.
16451         (OBJS-common): Remove plugin-version.o.
16452         (plugin.o): Depend on (PLUGIN_VERSION_H).
16453         (plugin-version.o): Remove.
16454         * configure: Regenerate
16455         * configure.ac: Create plugin-version.h.
16456         * gcc-plugin.h (plugin_gcc_version): Remove.
16457         (plugin_default_version_check): Change signature.
16458         * plugin-version.c: Remove.
16459         * plugin.c: Include plugin-version.h.
16460         (str_plugin_gcc_version_name): Remove.
16461         (try_init_one_plugin): Pass gcc version to plugin_init.
16462         (plugin_default_version_check): Both gcc and plugin versions are now
16463         arguments.
16464
16465 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16466
16467         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16468         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
16469         Remove special case testing for last insn of inner loops. Don't fail
16470         if the loop ends with a jump, emit an extra nop instead.
16471
16472         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16473         DREGS rather than comparing directly.  Remove code that tries to
16474         account for latencies.
16475
16476 2009-04-29  Richard Guenther  <rguenther@suse.de>
16477
16478         PR tree-optimization/39941
16479         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16480         eliminating an indirect call.
16481
16482 2009-04-29  Richard Guenther  <rguenther@suse.de>
16483
16484         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16485         parameter.  Allow invariants as base if !require_lvalue.
16486         (verify_gimple_assign_single): Adjust.
16487
16488 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16489
16490         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16491         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16492         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16493         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
16494         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
16495         a VEC_SELECT.
16496         * config/bfin/bfin.c (bfin_expand_builtin,
16497         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
16498
16499 2009-04-28  Richard Guenther  <rguenther@suse.de>
16500
16501         * tree-vect-loop.c (get_initial_def_for_induction): Use
16502         correct types for pointer increment.
16503
16504 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16505
16506         * toplev.c (print_version): Update GMP version string calculation.
16507
16508 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
16509
16510         PR rtl-optimization/39938
16511         * resource.c (init_resource_info): Add call to df_analyze.
16512
16513 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16514
16515         * config/alpha/alpha.md (usegp): Cast the result of
16516         alpha_find_lo_sum_using_gp to enum attr_usegp.
16517         * config/alpha/alpha.c (override_options): Remove end-of-structure
16518         marker element from cpu_table.  Use array size of cpu_table to handle
16519         -mcpu and -mtune options.
16520         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
16521
16522 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
16523
16524         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
16525         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
16526         tune_32 and tune_64.
16527         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
16528         support on PowerPC.
16529         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
16530         * config/rs6000/option-defaults.h: ... here.  New file.
16531         (OPT_64, OPT_32): Define.
16532         (MASK_64BIT): Define to 0 if not already defined.
16533         (OPT_ARCH64, OPT_ARCH32): Define.
16534         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
16535         and tune_64.
16536
16537 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16538
16539         * config/arm/arm.c (arm_override_options): Emit error on using
16540         fpa with AAPCS.
16541
16542 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16543
16544         PR rtl-optimization/39914
16545         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
16546         registers for allocnos created from user-defined variables only
16547         when not optimizing.
16548
16549 2009-04-28  Richard Guenther  <rguenther@suse.de>
16550
16551         PR middle-end/39937
16552         * fold-const.c (fold_binary): Use distribute_real_division only
16553         on float types.
16554
16555 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
16556
16557         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
16558         add hpux-stdint.h to tm_file.
16559         (hppa[12]*-*-hpux11*): Ditto.
16560         (ia64*-*-hpux*): Ditto.
16561         * config/hpux-stdint.h: New.
16562         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
16563         __STDC_EXT__ for all compiles.
16564         * config/pa/pa-hpux.h: Ditto.
16565         * config/pa/pa-hpux10.h: Ditto.
16566         * config/pa/pa-hpux11.h: Ditto.
16567
16568 2009-04-28  Catherine Moore  <clm@codesourcery.com>
16569
16570         * debug.h (set_name): Add comment.
16571
16572 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
16573
16574         PR target/39929
16575         * config/darwin.c (machopic_gen_offset): Check
16576         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
16577         * config/arm/arm.c (require_pic_register): Likewise.
16578
16579 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
16580
16581         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
16582         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
16583         m32c_promote_prototypes): Delete.
16584
16585 2009-04-28  Michael Matz  <matz@suse.de>
16586
16587         PR middle-end/39922
16588         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
16589         constants.
16590
16591 2009-04-28  Richard Guenther  <rguenther@suse.de>
16592
16593         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
16594
16595 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16596
16597         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
16598         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
16599         * config/arm/arm-tune.md: Regenerate.
16600
16601 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
16602
16603         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
16604         block if there are complex incoming edges.
16605         (sel_merge_blocks): Remove useless assert.
16606         (sel_redirect_edge_and_branch): Check that edge was redirected.
16607         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
16608         (sel_find_rgns): Delete declaration.
16609         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
16610         the region when it is not a preheader.
16611
16612 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16613
16614         PR c/39323
16615         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
16616
16617 2009-04-28  Richard Guenther  <rguenther@suse.de>
16618
16619         * tree.h (SSA_NAME_VALUE): Remove.
16620         (struct tree_ssa_name): Remove value_handle member.
16621         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
16622         array for jump threading.
16623         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
16624         SSA_NAME_VALUEs.
16625         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
16626         * tree-flow.h (threadedge_initialize_values): Declare.
16627         (threadedge_finalize_values): Likewise.
16628         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
16629         (SSA_NAME_VALUE): Define.
16630         (threadedge_initialize_values): New function.
16631         (threadedge_finalize_values): Likewise.
16632         * tree-ssa-dom.c (ssa_name_values): New global variable.
16633         (SSA_NAME_VALUE): Define.
16634         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
16635
16636 2009-04-28  Ira Rosen  <irar@il.ibm.com>
16637
16638         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
16639         Use REPORT_VECTORIZED_LOCATIONS instead
16640         REPORT_VECTORIZED_LOOPS.
16641         * tree-vectorizer.c (vect_verbosity_level): Make static.
16642         (vect_loop_location): Rename to vect_location.
16643         (vect_set_verbosity_level): Update comment.
16644         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
16645         and vect_location.
16646         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
16647         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
16648         instead REPORT_UNVECTORIZED_LOOPS.
16649         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
16650         and vect_loop_def to vect_external_def and vect_internal_def.
16651         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
16652         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
16653         REPORT_UNVECTORIZED_LOCATIONS.
16654         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
16655         and vect_used_in_loop and to vect_unused_in_scope and
16656         vect_used_in_scope.
16657         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
16658         (vect_verbosity_level): Remove declaration.
16659         (vect_analyze_operations): Likewise.
16660         (vect_analyze_stmt): Declare.
16661         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
16662         REPORT_UNVECTORIZED_LOCATIONS.
16663         (vect_get_loop_niters): Fix indentation.
16664         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
16665         (vect_analyze_loop_operations): New function.
16666         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
16667         vect_analyze_operations.
16668         (vect_is_simple_reduction): Use new names.
16669         (vectorizable_live_operation, vect_transform_loop): Likewise.
16670         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
16671         to specify whether the data references can be a part of interleaving
16672         chain.
16673         (vect_analyze_data_ref_dependence): Use new names.
16674         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
16675         (vect_create_addr_base_for_vector_ref): Remove redundant code.
16676         * tree-vect-patterns.c (widened_name_p): Use new names.
16677         (vect_recog_dot_prod_pattern): Likewise.
16678         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
16679         (process_use, vect_mark_stmts_to_be_vectorized,
16680         vect_model_simple_cost, vect_model_store_cost,
16681         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
16682         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
16683         vectorizable_operation, vectorizable_type_demotion,
16684         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
16685         vectorizable_condition): Likewise.
16686         (vect_analyze_operations): Split into vect_analyze_loop_operations
16687         and ...
16688         (vect_analyze_stmt): ... new function.
16689         (new_stmt_vec_info): Use new names.
16690         (vect_is_simple_use): Use new names and fix comment.
16691         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
16692         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
16693
16694 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16695
16696         PR target/39911
16697         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
16698         and integer modes for x87 operands.  Do not ICE for unsupported size,
16699         generate error instead.  Generate error for unsupported operand types.
16700         ['z']: Do not handle HImode memory operands specially.  Warning
16701         for floating-point operands.  Fallthru to 'Z' for unsupported operand
16702         types.  Do not ICE for unsupported size, generate error instead.
16703         (output_387_binary_op): Use %Z to output operands.
16704         (output_fp_compare): Ditto.
16705         (output_387_reg_move): Ditto.
16706
16707 2009-04-28  Ben Elliston  <bje@au.ibm.com>
16708
16709         PR c++/35652
16710         Revert:
16711
16712         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16713
16714         * builtins.c (c_strlen): Do not warn here.
16715         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16716         * c-common.c (pointer_int_sum): Take an explicit location.
16717         Warn about offsets out of bounds.
16718         * c-common.h (pointer_int_sum): Adjust declaration.
16719
16720 2009-04-27  Ian Lance Taylor  <iant@google.com>
16721
16722         * collect2.c (is_ctor_dtor): Change type of ret field in struct
16723         names to symkind.
16724         * dce.c (run_fast_df_dce): Change type of old_flags to int.
16725         * df-core.c (df_set_flags): Change return type to int.  Change
16726         type of old_flags to int.
16727         (df_clear_flags): Likewise.
16728         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
16729         (df_get_conditional_uses): Likewise.
16730         * df.h (df_set_flags, df_clear_flags): Update declarations.
16731         * dwarf2out.c (struct indirect_string_node): Change type of form
16732         field to enum dwarf_form.
16733         (AT_string_form): Change return type to enum dwarf_form.
16734         * fixed-value.c (fixed_compare): Add cast to enum type.
16735         * fwprop.c (update_df): Change 0 to VOIDmode.
16736         * gensupport.c: Change 0 to UNKNOWN.
16737         * gimple.h (gimple_cond_code): Add cast to enum type.
16738         * haifa-sched.c (reemit_notes): Add cast to enum type.
16739         * hooks.c (hook_int_void_no_regs): Remove function.
16740         * hooks.h (hook_int_void_no_regs): Remove declaration.
16741         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
16742         * predict.c (combine_predictions_for_insn): Add casts to enum type.
16743         * real.c (real_arithmetic): Add cast to enum type.
16744         (real_compare): Likewise.
16745         * target.h (struct gcc_target): Change return type of
16746         branch_target_register_class to enum reg_class.
16747         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
16748         default_branch_target_register_class.
16749         * targhooks.c (default_branch_target_register_class): New function.
16750         * targhooks.h (default_branch_target_register_class): Declare.
16751         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
16752         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
16753         cast to int.
16754         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
16755         ERROR_MARK.
16756         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
16757         vect_uninitialized_def.  Change 0 to ERROR_MARK.
16758         * tree-vect-stmts.c (supportable_widening_operation): Don't
16759         initialize icode1 and icode2.
16760         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
16761         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
16762         and to STD_C89.
16763         (cmn_err_flag_specs): Change 0 to STD_C89.
16764         (cmn_err_char_table): Likewise.
16765         * config/arm/arm.c (get_arm_condition_code): Change type of code
16766         to enum arm_cond_code.
16767         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
16768         (IWMMXT_BUILTIN2): Likewise.
16769         (neon_builtin_type_bits): Don't define typedef.
16770         (neon_builtin_datum): Change type of bits field to int.
16771         (arm_expand_neon_args): Add cast to enum type.
16772         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
16773         TLS_MODEL_NONE.
16774         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
16775         casts to enum type.
16776         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
16777         MIPS_FP_COND_f.
16778         * config/mips/mips.md (jal_macro): Return enum constant.
16779         (single_insn): Likewise.
16780         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
16781         CODE_FOR_nothing.
16782         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
16783         casts to enum type.
16784         * config/s390/s390.c (s390_tune_flags): Change type to int.
16785         (s390_arch_flags): Likewise.
16786         (s390_handle_arch_option): Change flags field of struct pta to int.
16787         * config/s390/s390.h (s390_tune_flags): Update declaration.
16788         (s390_arch_flags): Likewise.
16789         * config/sh/sh.c (prepare_move_operands): Compare
16790         tls_symbolic_operand result with enum constant.
16791         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
16792         (sh_expand_prologue): Add cast to enum type.
16793         (sh_expand_epilogue): Likewise.
16794         (tls_symbolic_operand): Change return type to enum tls_model.
16795         (fpscr_set_from_mem): Add cast to enum type.
16796         (legitimize_pic_address): Compare tls_symbolic_operand result with
16797         enum constant.
16798         (sh_target_reg_class): Change return type to enum reg_class.
16799         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
16800         PROCESSOR_xxx.
16801         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
16802         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
16803         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
16804         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
16805         (delayed_branch, tls_call_delay): Likewise.
16806         (eligible_for_sibcall_delay): Likewise.
16807         (eligible_for_return_delay): Likewise.
16808         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
16809         (spu_expand_builtin_1): Likewise.
16810
16811         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
16812         for all types of conversions.
16813         (output_init_element): Issue -Wc++-compat warning if needed when
16814         initializing a bitfield with enum type.
16815         * c-parser.c (c_parser_expression): Set original_type to
16816         original_type of right hand operand of comma operator.
16817
16818 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16819
16820         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
16821         grammar nits.
16822         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
16823         * doc/cpp.texi (Standard Predefined Macros)
16824         (Implementation-defined behavior): Likewise.
16825         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
16826         * doc/gimple.texi (GIMPLE Exception Handling)
16827         (@code{GIMPLE_ASSIGN}): Likewise.
16828         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
16829         * doc/invoke.texi (Warning Options, Optimize Options)
16830         (AVR Options, Darwin Options): Likewise.
16831         (Optimize Options): Reformulate -fwhole-program description.
16832         * doc/loop.texi (Lambda): Likewise.
16833         * doc/md.texi (Output Template, Define Constraints)
16834         (Standard Names, Insn Splitting): Likewise.
16835         * doc/options.texi (Option properties): Likewise.
16836         * doc/passes.texi (Tree-SSA passes): Likewise.
16837         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
16838         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
16839         (File Names and DBX): Likewise.
16840         * doc/trouble.texi (Incompatibilities): Likewise.
16841
16842 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16843
16844         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
16845         instruction is correct.
16846
16847 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16848
16849         Allow non-constant arguments to conversion intrinsics.
16850         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
16851         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
16852         * spu.c (print_operand): Handle 'v' and 'w'.
16853         (exp2_immediate_p, spu_gen_exp2): Define.
16854         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
16855         spu_convtf_1): Update parameter descriptions.
16856         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
16857         * constraints.md ('v', 'w'): New.
16858         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
16859         Remove.
16860         (i2f, I2F): New define_mode_attr.
16861         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
16862         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
16863         fixuns_truncv4sfv4si2):  Update to use mode attribute.
16864         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
16865         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
16866         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
16867         patterns for combine.
16868
16869 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
16870
16871         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
16872         (cprop, hoist, pre, store_motion): New debug counters.
16873         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
16874         is not an RTL pass anymore.
16875         (pass_profiling): Remove extern decl for pass removed in 2005.
16876         (pass_gcse, pass_jump_bypass): Remove.
16877         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
16878         to 0 for clean state.
16879         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
16880         * cse.c (gate_handle_cse_after_global_opts,
16881         rest_of_handle_cse_after_global_opts): New functions.
16882         (pass_cse_after_global_opts): New pass, does local CSE.
16883         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
16884         (TV_CPROP): New timevar.
16885         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
16886         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
16887         (gcse_main, recompute_all_luids): Remove.
16888         (compute_hash_table_work): Call max_reg_num instead of reading
16889         max_gcse_regno.
16890         (cprop_jump): Don't set run_jump_opt_after_gcse.
16891         (constprop_register): Always allow to alter jumps.
16892         (cprop_insn): Likewise.
16893         (do_local_cprop): Likewise.
16894         (local_cprop_pass): Likewise.  Return non-zero if something changed.
16895         (cprop): Remove function, fold interesting bits into one_cprop_pass.
16896         (find_implicit_sets): Add note about missed optimization opportunity.
16897         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
16898         pass_rtl_cprop execute function.
16899         Don't bother tracking the pass number, each pass gets its own dumpfile
16900         now anyway.
16901         Always allow to alter jumpsand bypass jumps.
16902         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
16903         will just find no suitable set.
16904         (pre_edge_insert): Fix dumping, this function is for PRE only.
16905         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
16906         pass_rtl_pre execute function.
16907         (hoist_code): Return non-zero if something changed.  Keep track of
16908         substitutions and insertions for statistics gathering similar to PRE.
16909         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
16910         called from the pass_rtl_hoist execute function.  Show pass statistics.
16911         (compute_store_table): Use max_reg_num directly instead of using the
16912         formerly global max_gcse_regno.
16913         (build_store_vectors): Likewise.
16914         (replace_store_insn): Fix dumping.
16915         (store_motion): Rename to ...
16916         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
16917         pass, called from the pass_rtl_store_motion execute function.  Keep
16918         track of substitutions and insertions for statistics gathering similar
16919         to PRE.
16920         (bypass_jumps): Remove, fold interesting bits into ...
16921         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
16922         from the pass_rtl_cprop execute function.
16923         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
16924         pass_jump_bypass): Remove.
16925         (gate_handle_gcse, rest_of_handle_gcse): Remove.
16926         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
16927         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
16928         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
16929         (gate_rtl_store_motion, execute_rtl_store_motion,
16930         pass_rtl_store_motion): New.
16931         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
16932         make it clear that -fcse-skip-blocks is a no-op for backward compat.
16933         * passes.c (init_optimization_passes): Remove pass_gcse and
16934         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
16935         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
16936         instead of pass_jump_bypass.
16937
16938 2009-04-27  Richard Guenther  <rguenther@suse.de>
16939
16940         PR middle-end/39928
16941         * gimplify.c (gimplify_expr): If we are required to create
16942         a temporary make sure it ends up as register.
16943
16944 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
16945
16946         PR target/39903
16947         * config/i386/i386.c (construct_container): Don't call
16948         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
16949         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
16950
16951 2009-04-27  Michael Matz  <matz@suse.de>
16952
16953         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
16954         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
16955         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
16956         (dump_replaceable_exprs): Take a bitmap.
16957         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
16958         array.
16959         (expand_gimple_basic_block): Likewise.
16960         * tree-ssa-ter.c (struct temp_expr_table_d): Make
16961         replaceable_expressions member a bitmap.
16962         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
16963         (mark_replaceable): Likewise.
16964         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
16965         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
16966
16967 2009-04-27  Richard Guenther  <rguenther@suse.de>
16968
16969         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
16970         (verify_stmts): Dispatch to gimple/type verification code.
16971         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
16972         issue with call argument types.
16973
16974 2009-04-27  Michael Matz  <matz@suse.de>
16975
16976         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
16977         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
16978         to above.
16979
16980 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
16981             Eric Botcazou  <ebotcazou@adacore.com>
16982
16983         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
16984         a label's basic block.
16985         (mark_target_live_regs): Tidy and rework obsolete comments.
16986         Change back DF problem to LIVE.  If a label starts a basic block,
16987         assume that all registers that used to be live then still are.
16988         (init_resource_info): If a label starts a basic block, set its
16989         BLOCK_FOR_INSN accordingly.
16990         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
16991
16992 2009-04-27  Richard Guenther  <rguenther@suse.de>
16993
16994         * tree-flow-inline.h (function_ann): Remove.
16995         (get_function_ann): Likewise.
16996         * tree-dfa.c (create_function_ann): Remove.
16997         * tree-flow.h (struct static_var_ann_d): Remove.
16998         (struct function_ann_d): Likewise.
16999         (union tree_ann_d): Remove fdecl member.
17000         (function_ann_t): Remove.
17001         (function_ann, get_function_ann, create_function_ann): Remove
17002         declarations.
17003
17004 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
17005
17006         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
17007
17008 2009-04-27  Jan Hubicka  <jh@suse.cz>
17009
17010         * ipa-pure-const.c (struct funct_state_d): New fields
17011         state_previously_known, looping_previously_known; remove
17012         state_set_in_source.
17013         (analyze_function): Use new fields.
17014         (propagate): Avoid assumption that state_set_in_source imply
17015         nonlooping.
17016
17017         * tree-ssa-loop-niter.c (finite_loop_p): New function.
17018         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
17019         * cfgloop.h (finite_loop_p): Declare.
17020
17021 2009-04-26  Michael Matz  <matz@suse.de>
17022
17023         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
17024
17025 2009-04-26  Michael Matz  <matz@suse.de>
17026
17027         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
17028         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
17029         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
17030         pass_mark_used_blocks): Remove.
17031         * tree-optimize.c (pass_free_datastructures,
17032         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
17033         * passes.c (init_optimization_passes): Don't call
17034         pass_mark_used_blocks, remove dead code.
17035
17036 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
17037
17038         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
17039         * tree-ssa-live.h (register_ssa_partition): Likewise.
17040
17041 2009-04-26  Michael Matz  <matz@suse.de>
17042
17043         Expand from SSA.
17044         * builtins.c (fold_builtin_next_arg): Handle SSA names.
17045         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
17046         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
17047         SSA names.
17048         (compare_pairs): Swap cost comparison.
17049         (coalesce_ssa_name): Don't use change_partition_var.
17050         * tree-nrv.c (struct nrv_data): Add modified member.
17051         (finalize_nrv_r): Set it.
17052         (tree_nrv): Use it to update statements.
17053         (pass_nrv): Require PROP_ssa.
17054         * tree-mudflap.c (mf_decl_cache_locals,
17055         mf_build_check_statement_for): Use make_rename_temp.
17056         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
17057         * alias.c (find_base_decl): Handle SSA names.
17058         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
17059         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
17060         * rtl.h (set_reg_attrs_for_parm): Declare.
17061         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
17062         to "optimized", remove unused locals at finish.
17063         (execute_free_datastructures): Make global, call
17064         delete_tree_cfg_annotations.
17065         (execute_free_cfg_annotations): Don't call
17066         delete_tree_cfg_annotations.
17067
17068         * ssaexpand.h: New file.
17069         * expr.c (toplevel): Include ssaexpand.h.
17070         (expand_assignment): Handle SSA names the same as register variables.
17071         (expand_expr_real_1): Expand SSA names.
17072         * cfgexpand.c (toplevel): Include ssaexpand.h.
17073         (SA): New global variable.
17074         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
17075         (SSAVAR): New macro.
17076         (set_rtl): New helper function.
17077         (add_stack_var): Deal with SSA names, use set_rtl.
17078         (expand_one_stack_var_at): Likewise.
17079         (expand_one_stack_var): Deal with SSA names.
17080         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
17081         before unique numbers.
17082         (expand_stack_vars): Use set_rtl.
17083         (expand_one_var): Accept SSA names, add asserts for them, feed them
17084         to above subroutines.
17085         (expand_used_vars): Expand all partitions (without default defs),
17086         then only the local decls (ignoring those expanded already).
17087         (expand_gimple_cond): Remove edges when jumpif() expands an
17088         unconditional jump.
17089         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
17090         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
17091         SSA name.
17092         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
17093         members of SA; deal with PARM_DECL partitions here; expand
17094         all PHI nodes, free tree datastructures and SA.  Commit instructions
17095         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
17096         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
17097         info and statements at start, collect garbage at finish.
17098         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
17099         (VAR_ANN_PARTITION) Remove.
17100         (change_partition_var): Don't declare.
17101         (partition_to_var): Always return SSA names.
17102         (var_to_partition): Only accept SSA names.
17103         (register_ssa_partition): Only check argument.
17104         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
17105         member.
17106         (delete_var_map): Don't free it.
17107         (var_union): Only accept SSA names, simplify.
17108         (partition_view_init): Mark only useful SSA names as used.
17109         (partition_view_fini): Only deal with SSA names.
17110         (change_partition_var): Remove.
17111         (dump_var_map): Use ssa_name instead of partition_to_var member.
17112         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
17113         basic blocks.
17114         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
17115         (struct _elim_graph): New member const_dests; nodes member vector of
17116         ints.
17117         (set_location_for_edge): New static helper.
17118         (create_temp): Remove.
17119         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
17120         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
17121         (new_elim_graph): Allocate const_dests member.
17122         (clean_elim_graph): Truncate const_dests member.
17123         (delete_elim_graph): Free const_dests member.
17124         (elim_graph_size): Adapt to new type of nodes member.
17125         (elim_graph_add_node): Likewise.
17126         (eliminate_name): Likewise.
17127         (eliminate_build): Don't take basic block argument, deal only with
17128         partition numbers, not variables.
17129         (get_temp_reg): New static helper.
17130         (elim_create): Use it, deal with RTL temporaries instead of trees.
17131         (eliminate_phi): Adjust all calls to new signature.
17132         (assign_vars, replace_use_variable, replace_def_variable): Remove.
17133         (rewrite_trees): Only do checking.
17134         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
17135         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
17136         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
17137         contains_tree_r, MAX_STMTS_IN_LATCH,
17138         process_single_block_loop_latch, analyze_edges_for_bb,
17139         perform_edge_inserts): Remove.
17140         (expand_phi_nodes): New global function.
17141         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
17142         functions, initialize new parameter, remember partitions having a
17143         default def.
17144         (finish_out_of_ssa): New global function.
17145         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
17146         don't reset in_ssa_p here, don't disable TER when mudflap.
17147         (pass_del_ssa): Remove.
17148         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
17149         partition members.
17150         (execute_free_datastructures): Declare.
17151         * Makefile.in (SSAEXPAND_H): New variable.
17152         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
17153         * basic-block.h (commit_one_edge_insertion): Declare.
17154         * passes.c (init_optimization_passes): Move pass_nrv and
17155         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
17156         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
17157         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
17158         (redirect_branch_edge): Deal with super block when expanding, split
17159         out jump patching itself into ...
17160         (patch_jump_insn): ... here, new static helper.
17161
17162 2009-04-26  Michael Matz  <matz@suse.de>
17163
17164         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
17165         beyond num_ssa_names.
17166         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
17167         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
17168
17169 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17170
17171         PR inline-asm/39543
17172         * fwprop.c (forward_propagate_asm): New function.
17173         (forward_propagate_and_simplify): Propagate also into __asm, if it
17174         doesn't increase the number of referenced registers.
17175
17176         PR c/39889
17177         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
17178
17179 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17180
17181         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
17182         note_nonlocal_vla_type for nonlocal VLAs.
17183         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
17184         contains_remapped_vars, remap_vla_decls): New functions.
17185         (convert_nonlocal_reference_stmt): If not optimizing, call
17186         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
17187         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
17188         if it wasn't found in var_map.
17189         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
17190         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
17191         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
17192         declare_vars.
17193         * gimplify.c (nonlocal_vlas): New variable.
17194         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
17195         referenced VLAs.
17196         (gimplify_body): Create and destroy nonlocal_vlas.
17197
17198         * dwarf2out.c (loc_descr_plus_const): New function.
17199         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
17200         mem_loc_descriptor, loc_descriptor_from_tree_1,
17201         descr_info_loc, gen_variable_die): Use it.
17202
17203         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
17204         !TREE_STATIC VAR_DECLs.
17205         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
17206         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
17207         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
17208         DECL_BY_REFERENCE is valid.
17209         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
17210         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
17211         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
17212         Copy DECL_BY_REFERENCE.
17213         (struct nesting_copy_body_data): New type.
17214         (nesting_copy_decl): New function.
17215         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
17216         if they have variable length.
17217
17218 2009-04-26  Michael Matz  <matz@suse.de>
17219
17220         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
17221         mark new temporaries for renaming.
17222
17223 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17224
17225         PR c/39581
17226         * c-decl.c (global_bindings_p): Return negative value.
17227         (c_variable_size): New.  Based on variable_size from
17228         stor-layout.c.
17229         (grokdeclarator): Call c_variable_size not variable_size.
17230
17231 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
17232
17233         * config/i386/i386.c (print_operand) ['z']: Fix typo.
17234
17235 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
17236
17237         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
17238         Redefine it to just use mingw/include.
17239         (ASM_SPEC): Rules for -m32 and -m64.
17240         (LINK_SPEC): Use Likewise.
17241         (SPEC_32): New define.
17242         (SPEC_64): Likewise.
17243         (SUB_LINK_SPEC): Likewise.
17244         (MULTILIB_DEFAULTS): New define.
17245         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
17246         Add multilib options.
17247         (MULTILIB_DIRNAMES): Likewise.
17248         (MULTILIB_OSDIRNAMES): Likewise.
17249         (LIBGCC): Likewise.
17250         (INSTALL_LIBGCC): Likewise.
17251
17252 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17253
17254         PR c/39556
17255         * c-tree.h (enum c_inline_static_type): New.
17256         (record_inline_static): Declare.
17257         * c-decl.c (struct c_inline_static, c_inline_statics,
17258         record_inline_static, check_inline_statics): New.
17259         (pop_file_scope): Call check_inline_statics.
17260         (start_decl): Call record_inline_static instead of pedwarning
17261         directly for static in inline function.
17262         * c-typeck.c (build_external_ref): Call record_inline_static
17263         instead of pedwarning directly for static referenced in inline
17264         function.
17265
17266 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
17267
17268         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17269         not new but only being rescanned.
17270         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
17271         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
17272         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
17273         record_set_info, compute_set, grealloc): Remove.
17274         (recompute_all_luids): New function.
17275         (gcse_main): Don't compute sets, and don't do related memory
17276         allocations/free-ing.  If something changed before the end of the
17277         pass, update LUIDs using recompute_all_luids.
17278         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
17279         (free_gcse_mem): Don't free it either.
17280         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
17281         Use the df insn LUIDs.
17282         (load_killed_in_block): Likewise.
17283         (compute_hash_table_work): Don't compute reg_set_in_block.
17284         (compute_transp): Use DF_REG_DEF_CHAINs.
17285         (local_cprop_pass): Don't use compute_sets and related functions.
17286         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
17287         Use get_max_uid() instead of max_cuid.
17288         (insert_insn_end_basic_block, pre_insert_copy_insn,
17289         update_ld_motion_stores): Don't try to
17290         keep reg_set tables up to date.
17291         (pre_insert_copies): Use df insn LUIDs.
17292         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
17293         (reg_set_info): Don't use extra bitmap argument.
17294         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
17295         information to compute regs_set_in_block.
17296         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
17297         (bypass_jumps): Don't use compute_sets and friends.
17298
17299 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17300
17301         PR testsuite/39710
17302         * opts.c (undocumented_msg): Do not leave blank even with
17303         ENABLE_CHECKING.
17304
17305 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17306
17307         * c-decl.c (build_enumerator): Allow values folding to integer
17308         constants but not integer constant expressions with a pedwarn if
17309         pedantic.
17310
17311 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17312
17313         PR c/39582
17314         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
17315         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
17316         type is an integer constant.
17317
17318 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17319
17320         PR target/39897
17321         * config/i386/i386.c (print_operand) ['z']: Revert handling of
17322         HImode operands.
17323
17324 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17325
17326         PR c/39564
17327         * c-decl.c (grokdeclarator): Diagnose declarations of functions
17328         with variably modified return type and no storage class
17329         specifiers, except for the case of nested functions.  Distinguish
17330         extern declarations of functions with variably modified return
17331         types from those of objects with variably modified types.
17332
17333 2009-04-25  Jan Hubicka  <jh@suse.cz>
17334
17335         * tree.c (list_equal_p): New function.
17336         * tree.h (list_equal_p): Declare.
17337         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17338         basic_block_def, basic_block, const_basic_block): New.
17339         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17340         (redirect_eh_edge): New function.
17341         (make_eh_edge_update_phi): EH edges are not abnormal.
17342         * except.c: Include tree-flow.h.
17343         (list_match): New function.
17344         (eh_region_replaceable_by_p): New function.
17345         (replace_region): New function.
17346         (hash_type_list): New function.
17347         (hash_eh_region): New function.
17348         (eh_regions_equal_p): New function.
17349         (merge_peers): New function.
17350         (remove_unreachable_regions): Verify EH tree when checking;
17351         merge peers.
17352         (copy_eh_region_1): New function.
17353         (copy_eh_region): New function.
17354         (push_reachable_handler): New function.
17355         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17356         regions without label but with live RESX.
17357         * except.h (redirect_eh_edge_to_label): New.
17358         * tree-flow.h (redirect_eh_edge): New.
17359         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17360         basic_block_def, basic_block, const_basic_block): Remove.
17361         * Makefile.in (except.o): Add dependency on tree-flow.h
17362         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17363         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17364         Remove.
17365
17366 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17367
17368         PR bootstrap/39645
17369         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17370         on the destination of memcpy.
17371
17372 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
17373
17374         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17375         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17376         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17377
17378 2009-04-25  Jan Hubicka  <jh@suse.cz>
17379
17380         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17381         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17382         to be reached by different label than left.
17383         (update_eh_edges): Update comment; remove edge_to_remove if possible
17384         and return true if suceeded.
17385         (cleanup_empty_eh): Accept sharing map; handle shared regions.
17386         (cleanup_eh): Compute sharing map.
17387         * except.c (remove_eh_handler_and_replace): Add argument if we should
17388         update regions.
17389         (remove_unreachable_regions): Update for label sharing.
17390         (label_to_region_map): Likewise.
17391         (get_next_region_sharing_label): New function.
17392         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17393         prev_try pointers.
17394         (remove_eh_handler): Update.
17395         (remove_eh_region_and_replace_by_outer_of): New function.
17396         * except.h (struct eh_region): Add next_region_sharing_label.
17397         (remove_eh_region_and_replace_by_outer_of,
17398         get_next_region_sharing_label): Declare.
17399         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17400
17401 2009-04-25  Jan Hubicka  <jh@suse.cz>
17402
17403         * tree-cfg.c (split_critical_edges): Split also edges where we can't
17404         insert code even if they are not critical.
17405
17406 2009-04-25  Jan Hubicka  <jh@suse.cz>
17407
17408         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17409         (gimple_can_remove_branch_p): EH edges won't remove branch by
17410         redirection.
17411         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17412         updating of non-abnormal EH edges.
17413         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17414         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17415         (split_critical_edges): Split also edges where emitting code on them
17416         will lead to splitting later.
17417
17418 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17419             H.J. Lu  <hongjiu.lu@intel.com>
17420
17421         PR target/39590
17422         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17423         the configured assembler supports fildq and fistpq mnemonics.
17424         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17425         * configure: Regenerated.
17426         * config.in: Ditto.
17427
17428         * config/i386/i386.c (print_operand): Handle 'Z'.
17429         ['z']: Remove handling of special fild/fist suffixes.
17430         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17431         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17432         suffix of fild insn.
17433         (*floatsi<mode>2_vector_mixed): Ditto.
17434         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17435         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17436         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17437         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17438         * config/i386/gas.h (GAS_MNEMONICS): Remove.
17439
17440 2009-04-25  Ben Elliston  <bje@au.ibm.com>
17441
17442         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17443         the source of a set operation.
17444
17445 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
17446
17447         * target.h (struct gcc_target): Add case_values_threshold field.
17448         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17449         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17450         * targhooks.c (default_case_values_threshold): New function.
17451         * targhooks.h (default_case_values_threshold): Declare function.
17452         * stmt.c (expand_case): Use case_values_threshold target hook.
17453         * expr.h (case_values_threshold): Remove declartation.
17454         * expr.c (case_values_threshold): Remove function.
17455         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17456
17457         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17458         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17459         (avr_case_values_threshold): Declare as static.
17460         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17461
17462         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17463         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17464         (mn10300_case_values_threshold): New function.
17465
17466 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17467
17468         * ira.c (setup_cover_and_important_classes): Add enum cast.
17469
17470 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
17471
17472         * genpreds.c (write_enum_constraint_num): Output definition of
17473         CONSTRAINT_NUM_DEFINED_P macro.
17474         * ira.c (setup_cover_and_important_classes): Use
17475         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17476
17477 2009-04-24  DJ Delorie  <dj@redhat.com>
17478
17479         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17480         __SH2A_SINGLE_ONLY__ also.
17481
17482 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
17483
17484         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17485         (movdf_internal): Ditto.
17486         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17487         SFmode and DFmode constants.
17488         (ia64_print_operand): Add 'G' format for printing
17489         floating point constants.
17490
17491 2009-04-24  Richard Guenther  <rguenther@suse.de>
17492
17493         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
17494         from unsigned additions.
17495
17496 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
17497
17498         * c-typeck.c (set_init_index): Allow array designators that are
17499         not integer constant expressions with a pedwarn if pedantic.
17500
17501 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17502
17503         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
17504         zero if no overlap in nonzero bits between the operands.
17505
17506 2009-04-24  Ian Lance Taylor  <iant@google.com>
17507
17508         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
17509         (record_dead_and_set_regs): Likewise.
17510         * df.h (struct df_mw_hardreg): Change flags field to int.
17511         (struct df_base_ref): Likewise.
17512         (struct df): Change changeable_flags field to int.
17513         * df-scan.c (df_defs_record): Change clobber_flags to int.
17514         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
17515         constants rather than #define macros.
17516         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
17517         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
17518         (enum dwarf_calling_convention): Likewise.
17519         (enum dwarf_line_number_x_ops): Likewise.
17520         (enum dwarf_call_frame_info): Likewise.
17521         (enum dwarf_source_language): Likewise.
17522         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
17523         (add_calling_convention_attribute): Likewise.
17524         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
17525         (combine_comparisons): Change compcode to int.  Add cast to enum type.
17526         * genrecog.c (maybe_both_true_2): Change c to int.
17527         (write_switch): Likewise.  Add cast to enum type.
17528         * gimplify.c (gimplify_omp_for): Handle return values from
17529         gimplify_expr using MIN rather than bitwise or.
17530         (gimplify_expr): Add cast to enum type.
17531         * ipa-prop.c (update_jump_functions_after_inlining): Change
17532         IPA_BOTTOM to IPA_JF_UNKNOWN.
17533         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
17534         Add casts to enum type.
17535         (setup_cover_and_important_classes): Change cl to int.  Add casts
17536         to enum type.
17537         (setup_class_translate): Change cl and mode to int.
17538         (ira_init_once): Change mode to int.
17539         (free_register_move_costs): Likewise.
17540         (setup_prohibited_mode_move_regs): Add casts to enum type.
17541         * langhooks.c (add_builtin_function_common): Rework assertion that
17542         value fits bitfield.
17543         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
17544         * omega.c (omega_do_elimination): Avoid math on enum types.
17545         * optabs.c (expand_vec_shift_expr): Remove casts to int.
17546         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
17547         int local to handle integral_argment value.
17548         * regmove.c (try_auto_increment): Change PUT_MODE to
17549         PUT_REG_NOTE_KIND.
17550         * reload.c (push_secondary_reload): Add casts to enum type.
17551         (secondary_reload_class, find_valid_class): Likewise.
17552         * reload1.c (emit_input_reload_insns): Likewise.
17553         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
17554         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
17555         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
17556         constant.
17557         * tree.c (build_common_builtin_nodes): Add casts to enum type.
17558         * tree-complex.c (complex_lattice_t): Typedef to int rather than
17559         enum type.
17560         (expand_complex_libcall): Add casts to enum type.
17561         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
17562         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
17563         with ERROR_MARK, not NUM_TREE_CODES.
17564         (vect_create_epilog_for_reduction): Likewise.
17565         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
17566         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
17567         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
17568         enum machine_mode.
17569         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
17570         vect_unused_in_loop.  Change 0 to loop_vect.
17571         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
17572         * var-tracking.c (get_init_value): Change return type to enum
17573         var_init_status.
17574         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
17575         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
17576         arm_fp_model.
17577         (arm_override_options): Add casts to enum type.
17578         (arm_emit_tls_decoration): Likewise.
17579         * config/i386/i386.c (ix86_function_specific_restore): Add casts
17580         to enum type.
17581         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
17582         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
17583         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
17584         enum type.
17585         * config/s390/s390.c (code_for_builtin_64): Change to array of
17586         enum insn_code.
17587         (code_for_builtin_31): Likewise.
17588         (s390_expand_builtin): Change code_for_builtin to enum insn_code
17589         const *.
17590         * config/sparc/sparc.c (sparc_override_options): Change value
17591         field in struct code_model to enum cmodel.  In initializer change
17592         0 to NULL and add cast to enum type.
17593
17594         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
17595         Change all callers.  Issue a -Wc++-compat warning using
17596         lhs_origtype if necessary.
17597         (convert_for_assignment): Issue -Wc++-compat warnings about
17598         invalid conversions to enum type on assignment.
17599         * c-common.h (build_modify_expr): Update declaration.
17600
17601 2009-04-24  Nick Clifton  <nickc@redhat.com>
17602
17603         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
17604         (function_arg_advance): Likewise.
17605         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
17606         5th alternative.
17607
17608 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17609
17610         * config/s390/constraints.md ('I', 'J'): Fix condition.
17611
17612 2009-04-24  Diego Novillo  <dnovillo@google.com>
17613
17614         * gengtype-parse.c (parse_error): Add newline after message.
17615
17616 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17617
17618         * config/i386/sse.md (avxmodesuffixs): Removed.
17619         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
17620         (*avx_pinsr<ssevecsize>): This.
17621
17622 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17623
17624         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
17625         follow chains of regs with a single definition, and allow expressions
17626         that are function_invariant_p.
17627         (simple_rhs_p): Allow expressions that are function_invariant_p.
17628
17629 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
17630
17631         PR middle-end/39867
17632         * fold-const.c (fold_cond_expr_with_comparison): When folding
17633         > and >= to MAX, make sure the MAX uses the same type as the
17634         comparison's operands.
17635
17636 2009-04-24  Nick Clifton  <nickc@redhat.com>
17637
17638         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
17639         addressing for DImode accesses.
17640         (frv_print_operand_address): Handle PLUS case.
17641         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
17642
17643 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
17644
17645         PR rtl-optimization/39794
17646         * alias.c (canon_true_dependence): Add x_addr argument.
17647         * rtl.h (canon_true_dependence): Adjust prototype.
17648         * cse.c (check_dependence): Adjust canon_true_dependence callers.
17649         * cselib.c (cselib_invalidate_mem): Likewise.
17650         * gcse.c (compute_transp): Likewise.
17651         * dse.c (scan_reads_nospill): Likewise.
17652         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
17653         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
17654         canon_base_addr of the group, plus optional offset.
17655         (struct group_info): Rename canon_base_mem to
17656         canon_base_addr.
17657         (get_group_info): Set canon_base_addr to canon_rtx of base, not
17658         canon_rtx of base_mem.
17659
17660 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
17661
17662         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
17663         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
17664
17665 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17666
17667         * config/spu/spu-builtins.h: Delete file.
17668
17669         * config/spu/spu.h (enum spu_builtin_type): Move here from
17670         spu-builtins.h.
17671         (struct spu_builtin_description): Likewise.  Add GTY marker.
17672         Do not use enum spu_function_code or enum insn_code.
17673         (spu_builtins): Add extern declaration.
17674
17675         * config/spu/spu.c: Do not include "spu-builtins.h".
17676         (enum spu_function_code, enum spu_builtin_type_index,
17677         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
17678         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
17679         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
17680         unsigned_V2DI_type_node): Move here from spu-builtins.h.
17681         (spu_builtin_types): Make static.  Add GTY marker.
17682         (spu_builtins): Add extern declaration with GTY marker.
17683         Include "gt-spu.h".
17684
17685         * config/spu/spu-c.c: Do not include "spu-builtins.h".
17686         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
17687         Check programmatically whether all parameters are scalar.
17688
17689         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
17690
17691 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
17692
17693         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
17694         assignment from the constructor either if the target is volatile.
17695
17696 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
17697
17698         * config/arm/arm.md (insv): Do not share operands[0].
17699
17700 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
17701
17702         * config/vxlib-tls.c (active_tls_threads): Delete.
17703         (delete_hook_installed): New.
17704         (tls_delete_hook): Don't delete the delete hook.
17705         (tls_destructor): Delete it here.
17706         (__gthread_set_specific): Adjust installing the delete hook.
17707         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
17708         __gthread_leave_tsd_dtor_context.
17709
17710 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
17711
17712         * c-format.c (gcc_tdiag_char_table): Add support for %E.
17713
17714 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
17715
17716         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
17717         enum type.
17718         (alpha_rtx_costs): Ditto.
17719         (emit_unlikely_jump): Use add_reg_note.
17720         (emit_frame_store_1): Ditto.
17721         (alpha_expand_prologue): Ditto.
17722         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17723         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
17724
17725 2009-04-23  Nick Clifton  <nickc@redhat.com>
17726
17727         * config/v850/v850.md (epilogue): Remove suppressed code.
17728         (return): Rename to return_simple and remove test of frame size.
17729         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
17730         to gen_return_simple.
17731
17732 2009-04-22  Jing Yu  <jingyu@google.com>
17733
17734         PR testsuite/39781
17735         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
17736
17737 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17738
17739         PR C/31499
17740         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
17741         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
17742         value is a VECTOR_CST, the element type is the element type of the
17743         vector.
17744
17745 2009-04-22  DJ Delorie  <dj@redhat.com>
17746
17747         * config/m32c/m32c.h: Update GTY annotations to new syntax.
17748
17749 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
17750
17751         * alias.c (find_base_term): Move around LO_SUM case, so that
17752         CONST falls through into PLUS/MINUS handling.
17753
17754         PR c/39855
17755         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
17756         into 0, use omit_one_operand.
17757
17758 2009-04-23  Ben Elliston  <bje@au.ibm.com>
17759
17760         * config/rs6000/linux-unwind.h (get_regs): Remove type
17761         puns. Change the type of `pc' to an array of unsigned ints and
17762         update all users.  Constify frame24.
17763
17764 2009-04-22  DJ Delorie  <dj@redhat.com>
17765
17766         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
17767         declarations before code.
17768         (current_function_special_page_vector): Likewise.
17769         (m32c_expand_insv): Silence a warning.
17770
17771 2009-04-21  Taras Glek  <tglek@mozilla.com>
17772
17773         * alias.c: Update GTY annotations to new syntax.
17774         * basic-block.h: Likewise.
17775         * bitmap.h: Likewise.
17776         * c-common.h: Likewise.
17777         * c-decl.c: Likewise.
17778         * c-parser.c: Likewise.
17779         * c-pragma.c: Likewise.
17780         * c-tree.h: Likewise.
17781         * cfgloop.h: Likewise.
17782         * cgraph.h: Likewise.
17783         * config/alpha/alpha.c: Likewise.
17784         * config/arm/arm.h: Likewise.
17785         * config/avr/avr.h: Likewise.
17786         * config/bfin/bfin.c: Likewise.
17787         * config/cris/cris.c: Likewise.
17788         * config/darwin.c: Likewise.
17789         * config/frv/frv.c: Likewise.
17790         * config/i386/i386.c: Likewise.
17791         * config/i386/i386.h: Likewise.
17792         * config/i386/winnt.c: Likewise.
17793         * config/ia64/ia64.h: Likewise.
17794         * config/iq2000/iq2000.c: Likewise.
17795         * config/mips/mips.c: Likewise.
17796         * config/mmix/mmix.h: Likewise.
17797         * config/pa/pa.c: Likewise.
17798         * config/pa/pa.h: Likewise.
17799         * config/rs6000/rs6000.c: Likewise.
17800         * config/s390/s390.c: Likewise.
17801         * config/sparc/sparc.c: Likewise.
17802         * config/xtensa/xtensa.c: Likewise.
17803         * cselib.h: Likewise.
17804         * dbxout.c: Likewise.
17805         * dwarf2out.c: Likewise.
17806         * except.c: Likewise.
17807         * except.h: Likewise.
17808         * fixed-value.h: Likewise.
17809         * function.c: Likewise.
17810         * function.h: Likewise.
17811         * gimple.h: Likewise.
17812         * integrate.c: Likewise.
17813         * optabs.c: Likewise.
17814         * output.h: Likewise.
17815         * real.h: Likewise.
17816         * rtl.h: Likewise.
17817         * stringpool.c: Likewise.
17818         * tree-data-ref.c: Likewise.
17819         * tree-flow.h: Likewise.
17820         * tree-scalar-evolution.c: Likewise.
17821         * tree-ssa-address.c: Likewise.
17822         * tree-ssa-alias.h: Likewise.
17823         * tree-ssa-operands.h: Likewise.
17824         * tree.c: Likewise.
17825         * tree.h: Likewise.
17826         * varasm.c: Likewise.
17827         * varray.h: Likewise.
17828         * vec.h: Likewise.
17829         * coretypes.h: Do not define GTY macro if it is already defined.
17830         * doc/gty.texi: Update GTY documentation to new syntax.
17831         * gengtype-lex.l: Enforce attribute-like syntax for GTY
17832         annotations on structs.
17833         * gengtype-parse.c: Likewise.
17834
17835 2009-04-22  Mark Heffernan  <meheff@google.com>
17836
17837         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
17838
17839 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17840
17841         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
17842         where appropriate.
17843
17844 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
17845
17846         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
17847         the same as a PLUS without a shift.  Increase the cost of a
17848         CONST_INT in MULT.
17849
17850 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17851
17852         * Makefile.in: Update dependencies.
17853         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
17854         * errors.h: Remove bogus comment about compatibility.
17855         (warning): Update declaration.
17856         * genautomata.c: Update all calls to warning.
17857         * gimple.c: Do not include errors.h. Include toplev.h.
17858         * tree-ssa-structalias.c: Do not include errors.h.
17859         * omega.c: Likewise.
17860         * tree-ssa-reassoc.c: Likewise.
17861         * config/spu/spu-c.c: Likewise.
17862         * config/spu/t-spu-elf: Update dependencies.
17863
17864 2009-04-22  Richard Guenther  <rguenther@suse.de>
17865
17866         PR tree-optimization/39824
17867         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
17868         make sure the types are compatible.
17869
17870 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17871
17872         PR c++/14875
17873         * c-common.c (c_parse_error): Take a token_flags parameter.
17874         Use token_type for the token type instead.
17875         Pass token_flags to cpp_type2name.
17876         * c-common.h (c_parse_error): Update declaration.
17877         * c-parser.c (c_parser_error): Pass 0 as token flags.
17878
17879 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
17880
17881         PR rtl-optimization/39580
17882         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
17883
17884 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17885
17886         * function.c (expand_function_end): Do not emit a jump to the "naked"
17887         return label for fall-through returns.
17888         * except.c (sjlj_emit_function_exit): Always place the call to the
17889         unregister function at the location installed by expand_function_end.
17890
17891 2009-04-22  Richard Guenther  <rguenther@suse.de>
17892
17893         PR tree-optimization/39845
17894         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
17895         (gen_inbound_check): Likewise.
17896
17897 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
17898
17899         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
17900         padding for PPC.
17901         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
17902         * config/vxlib.c (__gthread_once): Add race guard for PPC.
17903
17904 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17905
17906         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
17907         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
17908         shift counts to avoid out-of-bounds array accesses.
17909
17910 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17911
17912         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
17913         (Pmode): Move above.
17914
17915 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
17916
17917         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
17918         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
17919         GET_CODE macro.  Use IN_RANGE macro where appropriate.
17920         * config/alpha/alpha.h: Ditto.
17921         * config/alpha/alpha.md: Ditto.
17922         * config/alpha/constraints.md: Ditto.
17923         * config/alpha/predicates.md: Ditto.
17924
17925 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
17926
17927         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
17928         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17929         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17930         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17931         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17932         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17933         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17934         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17935         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17936         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17937         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17938         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17939         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17940         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17941         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17942         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17943         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17944         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17945         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17946         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17947         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17948         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17949         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17950         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17951         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17952         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17953         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
17954
17955 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
17956
17957         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
17958         references from comments.
17959         * cfgbuild.c: (count_basic_blocks): Delete.
17960         (find_basic_blocks_1): Delete.
17961         (find_basic_blocks): Delete.
17962         * except.c (finish_eh_generation): Make static.  Move comment from
17963         except.h here.  Remove find_basic_blocks references from comments.
17964         * except.h (finish_eh_generation): Delete.
17965         * basic-block.h (find_basic_blocks): Delete.
17966         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
17967
17968 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
17969
17970         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
17971         (sdbout_parms):  Likewise.
17972
17973 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
17974
17975         * config/sh/sh.c (prepare_cbranch_operands): Use
17976         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
17977         (expand_cbranchdi4): Likewise.
17978         (from_compare): Add cast to enum type.
17979         (expand_cbranchsi4): Use add_reg_note.
17980         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
17981         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
17982         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
17983         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17984         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
17985         instead of CODE_FOR_nothing.
17986         (cbranchdi4): Likewise.  Fix the order of arguments for
17987         gen_rtx_fmt_ee.
17988         (push_fpscr): Use add_reg_note.
17989         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
17990         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
17991
17992 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
17993
17994         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
17995         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
17996         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
17997         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
17998         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
17999         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
18000         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
18001         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
18002         config/alpha/x-vms, config/arc/t-arc,
18003         config/arm/README-interworking, config/arm/arm-c.c,
18004         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
18005         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
18006         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
18007         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
18008         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
18009         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
18010         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
18011         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
18012         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
18013         config/cris/t-elfmulti, config/crx/t-crx,
18014         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
18015         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
18016         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
18017         config/h8300/t-h8300, config/i386/athlon.md,
18018         config/i386/darwin-libgcc.10.4.ver,
18019         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
18020         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
18021         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
18022         config/i386/t-linux64, config/i386/t-nwld,
18023         config/i386/t-rtems-i386, config/i386/t-sol2-10,
18024         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
18025         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
18026         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
18027         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
18028         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
18029         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
18030         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
18031         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
18032         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
18033         config/m68k/t-uclinux, config/mcore/t-mcore,
18034         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
18035         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
18036         config/mips/crtn.asm, config/mips/irix-crti.asm,
18037         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
18038         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
18039         config/mips/mips-fixed.md, config/mips/sb1.md,
18040         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
18041         config/mips/t-iris6, config/mips/t-isa3264,
18042         config/mips/t-libgcc-mips16, config/mips/t-linux64,
18043         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
18044         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
18045         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
18046         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
18047         config/mn10300/t-linux, config/mn10300/t-mn10300,
18048         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
18049         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
18050         config/picochip/libgccExtras/clzsi2.asm,
18051         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
18052         config/rs6000/darwin-libgcc.10.4.ver,
18053         config/rs6000/darwin-libgcc.10.5.ver,
18054         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
18055         config/rs6000/t-aix43, config/rs6000/t-aix52,
18056         config/rs6000/t-darwin, config/rs6000/t-fprules,
18057         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
18058         config/rs6000/t-lynx, config/rs6000/t-netbsd,
18059         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
18060         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
18061         config/rs6000/t-rtems, config/rs6000/t-spe,
18062         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
18063         config/score/t-score-elf, config/sh/divcost-analysis,
18064         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
18065         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
18066         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
18067         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
18068         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
18069         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
18070         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
18071         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
18072         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
18073         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
18074         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
18075         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
18076         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
18077         limitx.h, version.c, xcoff.h: Add copyright and license notices.
18078         * config/h8300/genmova.sh: Include copyright and license notices
18079         in generated output.
18080         * config/h8300/mova.md: Regenerate.
18081         * doc/install.texi2html: Include word "Copyright" in copyright
18082         notice and use name "Free Software Foundation, Inc.".
18083         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18084         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18085         ChangeLog-2007, ChangeLog-2008: Correct dates.
18086
18087 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
18088
18089         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
18090         NE_EXPR operations as well.
18091         * c-parser.c (c_parser_condition): Do not set location information on
18092         the condition.
18093         (c_parser_conditional_expression): Likewise.
18094         (c_parser_binary_expression): Set location information on operators.
18095         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
18096         TRUTH_NOT_EXPR has been folded.
18097         * fold-const.c (fold_truth_not_expr): Copy location information from
18098         the incoming expression to the outgoing one.
18099         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
18100         recursive calls on the LHS of the operator but pass that of the
18101         operator to recursive calls on the RHS of the operator.  Set it
18102         on the COND_EXPR.
18103         (shortcut_cond_expr): Set the locus of the operator on the second
18104         COND_EXPR and that of the expression on the first in degenerate cases.
18105         Pass the locus of the expression to calls to shortcut_cond_r.
18106         Set the locus of the 'then' block on the associated jump, if any.
18107         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
18108         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
18109         expression to call to gimplify_boolean_expr.
18110
18111 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
18112
18113         * config.gcc: Add additional configuration for
18114         i686-w64-mingw* and x86_64-w64-mingw* triplet.
18115         * config/i386/mingw-w64.h: New mingw-w64 specific header.
18116         (CPP_SPEC): Redefine for allowing -municode option.
18117         (STARTFILE_SPEC): Likewise.
18118         * config/i386/t-mingw-w64: New.
18119         * config/i386/mingw-w64.opt: New.
18120         (municode): Add new target option.
18121         * doc/invoke.texi (municode): Add documentation for new option.
18122
18123 2009-04-21  Ian Lance Taylor  <iant@google.com>
18124
18125         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18126         Correct test for number of arguments.
18127         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
18128
18129 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
18130
18131         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
18132         argument of emit_library_call.
18133
18134 2009-04-21  Richard Guenther  <rguenther@suse.de>
18135
18136         PR middle-end/39829
18137         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
18138         inside VIEW_CONVERT_EXPRs.
18139
18140 2009-04-21  Martin Jambor  <mjambor@suse.cz>
18141
18142         * tree-switch-conversion.c (build_constructors): Split a long line.
18143         (constructor_contains_same_values_p): New function.
18144         (build_one_array): Create assigns of constants if possible, do not
18145         call mark_sym_for_renaming, call update_stmt.
18146         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
18147         make_rename_temp.  Do not call mark_symbols_for_renaming, call
18148         update_stmt.
18149         (gen_def_assigns): Do not call mark_symbols_for_renaming or
18150         find_new_referenced_vars, call update_stmt.
18151         (gen_inbound_check): Use create_tmp_var and create ssa names manually
18152         instead of calling make_rename_temp.  Do not call
18153         find_new_referenced_vars or mark_symbols_for_renaming, call
18154         update_stmt.
18155
18156 2009-04-21  Richard Guenther  <rguenther@suse.de>
18157
18158         PR tree-optimization/39827
18159         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
18160         (tree_ssa_phiprop): Pass the correct array size.
18161
18162 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
18163
18164         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
18165
18166 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18167
18168         PR 16202
18169         * c-typeck.c (lvalue_p): Move declaration ...
18170         * c-common.h (lvalue_p): ... to here.
18171         * c-common.c (candidate_equal_p): New.
18172         (add_tlist): Use it.
18173         (merge_tlist): Use it.
18174         (warn_for_collisions_1): Likewise.
18175         (warning_candidate_p): Accept more candidates.
18176         (verify_tree): A warning candidate can be an expression. Use
18177         candidate_equal_p.
18178
18179 2009-04-21  Ben Elliston  <bje@au.ibm.com>
18180
18181         PR target/5267
18182         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
18183         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
18184         options.  Remove -mcall-solaris documentation.
18185
18186 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18187
18188         PR c++/13358
18189         * doc/invoke.texi (-Wlong-long): Update description.
18190         * c-lex (interpret_integer): Only warn if there was no previous
18191         overflow and -Wlong-long is enabled.
18192         * c-decl.c (declspecs_add_type): Drop redundant flags.
18193         * c.opt (Wlong-long): Init to -1.
18194         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
18195         and front-end warn_long_long. Wlong-long only depends on other
18196         flags if it is uninitialized.
18197         * c-parser.c (disable_extension_diagnostics): warn_long_long is
18198         the same for CPP and FE.
18199         (restore_extension_diagnostics): Likewise.
18200
18201 2009-04-20  Ian Lance Taylor  <iant@google.com>
18202
18203         Fix enum conversions which are invalid in C++:
18204         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
18205         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
18206         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
18207         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
18208         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
18209         (dbxout_parms): Likewise.
18210         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
18211         (df_clear_flags): Likewise.
18212         * df-problems.c (df_rd_bb_local_compute_process_def): Change
18213         top_flag parameter to int.
18214         (df_chain_create_bb_process_use): Likewise.
18215         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
18216         Remove cast.
18217         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
18218         (df_ref_create_structure, df_def_record_1): Likewise.
18219         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
18220         (df_notes_rescan): Change 0 to VOIDmode in function call.
18221         (df_get_call_refs, df_insn_refs_collect): Likewise.
18222         (df_bb_regs_collect): Likewise.
18223         (df_entry_block_defs_collect): Likewise.
18224         (df_exit_block_uses_collect): Likewise.
18225         * df.h: Update declarations.
18226         * double-int.c (double_int_divmod): Add cast to enum type.
18227         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
18228         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
18229         (based_loc_descr): Likewise.
18230         (loc_descriptor_from_tree_1): Change first_op and second_op to
18231         enum dwarf_location_atom.  Add cast to enum type.
18232         * expmed.c (init_expmed): Change 0 to SET in function call.
18233         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
18234         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
18235         (do_store_flag): Likewise.
18236         * fixed-value.h (struct fixed_value): Change mode to enum
18237         machine_mode.
18238         * function.c (assign_parms): Change 0 to VOIDmode in function call.
18239         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
18240         function call.
18241         (insert_insn_decl, insert_decl, insert_state): Likewise.
18242         (automata_list_finish): Likewise.
18243         * genrecog.c (process_define_predicate): Add cast to enum type.
18244         * gensupport.c (init_predicate_table): Add cast to enum type.
18245         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
18246         function call.
18247         (gimple_build_call_1, gimple_build_label): Likewise.
18248         (gimple_build_goto, gimple_build_asm_1): Likewise.
18249         (gimple_build_switch_1, gimple_build_cdt): Likewise.
18250         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18251         (enum fallback): Rename from enum fallback_t.
18252         (fallback_t): Typedef as int.
18253         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18254         GSI_SAME_STMT in function call.
18255         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18256         enum type.
18257         (setup_reg_class_relations): Likewise.
18258         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
18259         (setup_prohibited_class_mode_regs): Add cast to enum type.
18260         (setup_prohibited_mode_move_regs): Likewise.
18261         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18262         (record_address_regs): Change i to enum reg_class.
18263         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18264         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18265         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18266         (GET_MODE_2XWIDER_MODE): Likewise.
18267         (GET_CLASS_NARROWEST_MODE): Likewise.
18268         * omp-low.c (expand_omp_for): Add cast to enum type.
18269         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18270         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
18271         * postreload.c (reload_cse_simplify_operands): Change rclass local
18272         to enum reg_class.
18273         * predict.c (combine_predictions_for_insn): Change best_predictor
18274         and predictor to enum br_predictor.
18275         (combine_predictions_for_bb): Likewise.
18276         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
18277         use SET_PREDICT_EXPR_OUTCOME.
18278         * real.c (real_arithmetic): Change icode to code in function call.
18279         * reginfo.c (init_move_cost): Add casts to enum type.
18280         (init_reg_sets_1, init_fake_stack_mems): Likewise.
18281         * regmove.c (regclass_compatible_p): Change class0 and class1 to
18282         enum reg_class.
18283         * reload.c (find_valid_class): Add casts to enum type.
18284         (push_reload): Change 0 to NO_REGS in function call.
18285         (find_reloads): Change this_alternative to array of enum
18286         reg_class.  Remove some now-unnecessary casts.
18287         (make_memloc): Change 0 to VOIDmode in function call.
18288         * reload1.c (reload): Change 0 to VOIDmode in function call.
18289         (eliminate_regs_1, elimination_effects): Likewise.
18290         (eliminate_regs_in_insn): Likewise.
18291         (emit_input_reload_insns): Add cast to enum type.
18292         (delete_output_reload): Change 0 to VOIDmode in function call.
18293         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
18294         to enum type in function call.
18295         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
18296         (SET_PREDICT_EXPR_OUTCOME): Define.
18297         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
18298         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
18299         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
18300         (dump_function): Likewise.
18301         * tree-dump.h: Update declarations.
18302         * tree-pass.h: Update declarations.
18303         * varasm.c (assemble_integer): Change mclass to enum mode_class.
18304         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
18305         enum type.
18306         (arm_rtx_costs_1): Correct parenthesization.
18307         (arm_rtx_costs): Add casts to enum type.
18308         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
18309         (vfp_emit_fstmd): Use add_rg_note.
18310         (emit_multi_reg_push, emit_sfm): Likewise.
18311         (thumb_set_frame_pointer): Likewise.
18312         (arm_expand_prologue): Likewise.
18313         (arm_regno_class): Change return type to enum reg_class.
18314         (thumb1_expand_prologue): Use add_reg_note.
18315         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
18316         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
18317         in function call.
18318         * config/arm/gentune.sh: Add cast to enum type.
18319         * config/arm/arm-tune.md: Rebuild.
18320         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
18321         (ix86_split_fp_branch, predict_jump): Likewise.
18322         (ix86_expand_multi_arg_builtin): Change sub_code from enum
18323         insn_code to enum rtx_code.
18324         (ix86_builtin_vectorized_function): Add cast to enum type.
18325         * config/i386/i386.md (truncdfsf2): Change slot to enum
18326         ix86_stack_slot.
18327         (truncxf<mode>2, isinf<mode>2): Likewise.
18328         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
18329         enum type.
18330         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18331         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18332         (insert_bundle_state): Change 1 to INSERT in function call.
18333         (ia64_add_bundle_selector_before): Likewise.
18334         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18335         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18336         (restore_stack_nonlocal): Likewise.
18337         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18338         function call.
18339         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18340         function call.
18341         (mips_rtx_costs): Likewise.
18342         (mips_override_options): Add casts to enum type.
18343         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18344         in function call.
18345         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18346         (store_reg, set_reg_plus_d): Likewise.
18347         (hppa_expand_prologue, hppa_profile_hook): Likewise.
18348         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18349         cast to enum type.
18350         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18351         function call.
18352         (emit_unlikely_jump): Use add_reg_note.
18353         (rs6000_emit_allocate_stack): Likewise.
18354         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18355         (output_toc): Change 1 to INSERT in function call.
18356         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18357         (rs6000_initialize_trampoline): Likewise.
18358         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18359         function call.
18360         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18361         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18362         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18363         (save_gprs): Use add_reg_note.
18364         (s390_emit_prologue): Likewise.
18365         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18366         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18367         (sparc_fold_builtin): Add cast to enum type.
18368         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18369         enum insn_code.
18370         (spu_expand_prologue): Use add_reg_note.
18371         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18372
18373 2009-04-20  Ian Lance Taylor  <iant@google.com>
18374
18375         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18376         (c_parser_postfix_expression_after_primary): Get VEC for list of
18377         arguments.  Get original types of arguments.  Call
18378         build_function_call_vec.
18379         (cached_expr_list_1, cached_expr_list_2): New static variables.
18380         (c_parser_expr_list): Change return type to VEC *.  Add
18381         p_orig_types parameter.  Change all callers.
18382         (c_parser_release_expr): New static function.
18383         (c_parser_vec_to_tree_list): New static function.
18384         * c-typeck.c (build_function_call): Rewrite to build a VEC and
18385         call build_function_call_vec.
18386         (build_function_call_vec): New function, based on old
18387         build_function_call.
18388         (convert_arguments): Remove nargs and argarray parameters.  Change
18389         values to a VEC.  Add origtypes parameter.
18390         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
18391         (convert_for_assignment): Add origtype parameter.  Change all
18392         callers.  If warn_cxx_compat, check for conversion to an enum
18393         type when calling a function.
18394         (store_init_value): Add origtype parameter.  Change all callers.
18395         (digest_init): Likewise.
18396         (struct init_node): Add origtype field.
18397         (add_pending_init): Add origtype parameter.  Change all callers.
18398         (output_init_element): Likewise.
18399         (output_pending_init_elements): Pass origtype from init_node to
18400         output_init_element.
18401         (process_init_element): Pass origtype from c_expr to
18402         output_init_element.
18403         (c_finish_return): Add origtype parameter.  Change all callers.
18404         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
18405         caller.
18406         (sync_resolve_params): Likewise.
18407         (sync_resolve_return): Change params to first_param.  Change caller.
18408         (resolve_overloaded_builtins): Change params to VEC *.  Change
18409         callers.  Save first parameter around call to build_function_call_vec.
18410         * c-decl.c (finish_decl): Add origtype parameter.  Change all
18411         callers.  Call build_function_call_vec rather than
18412         build_function_call for cleanup.
18413         * c-tree.h: Update declarations.
18414         * c-common.h: Update declarations.
18415         * stub-objc.c (objc_rewrite_function_call): Change parameter from
18416         params to first_param.
18417         * target.h (struct gcc_target): Change resolve_overloaded_builtin
18418         params parameter from tree to void *.
18419         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18420         Change arglist parameter to have type void *, and to be a pointer
18421         to a VEC.
18422         * config/rs6000/rs6000-protos.h
18423         (altivec_resolve_overloaded_builtin): Update declaration.
18424         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18425         fnargs parameter to have type void *, and to be a pointer to a
18426         VEC.  Call build_function_call_vec instead of
18427         build_function_call.
18428         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18429
18430 2009-04-20  Joey Ye  <joey.ye@intel.com>
18431             Xuepeng Guo  <xuepeng.guo@intel.com>
18432             H.J. Lu  <hongjiu.lu@intel.com>
18433
18434         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18435
18436         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18437         (IX86_LEA_PRIORITY): Likewise.
18438         (distance_non_agu_define): New function.
18439         (distance_agu_use): Likewise.
18440         (ix86_lea_for_add_ok): Likewise.
18441         (ix86_dep_by_shift_count): Likewise.
18442
18443         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18444         should split for LEA.
18445
18446         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18447         function.
18448         (ix86_dep_by_shift_count): Likewise.
18449
18450 2009-04-20  Richard Guenther  <rguenther@suse.de>
18451
18452         * expr.c (handled_component_p): Move ...
18453         * tree.h (handled_component_p): ... here.
18454         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18455         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18456         and REALPART_EXPR to be in one group.
18457
18458 2009-04-20  Richard Guenther  <rguenther@suse.de>
18459
18460         * basic-block.h (get_all_dominated_blocks): Declare.
18461         * dominance.c (get_all_dominated_blocks): New function.
18462         * tree-cfg.c (get_all_dominated_blocks): Remove.
18463         (remove_edge_and_dominated_blocks): Adjust.
18464         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18465         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
18466         instead of recursing.
18467
18468 2009-04-20  Doug Kwan  <dougkwan@google.com>
18469
18470         * cgraph.h (cgraph_node_ptr): New type for vector functions.
18471         (struct cgraph_node_set_def): New type.
18472         (cgraph_node_set) New type. Also declare vector functions.
18473         (struct cgraph_node_set_element_def): New type.
18474         (cgraph_node_set_element): Ditto.
18475         (cgraph_node_set_iterator): New iterator type.
18476         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18477         cgraph_node_set_remove, dump_cgraph_node_set,
18478         debug_cgraph_node_set): New prototypes.
18479         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18480         cgraph_node_set_size): New inlines.
18481         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18482         including cgraph.h.
18483         (struct ipa_opt_pass): Add struct cgraph_node_set_def
18484         argument to function 'write_summary'.
18485         * ipa.c: Include ggc.h.
18486         (hash_cgraph_node_set_element,
18487         eq_cgraph_node_set_element, cgraph_node_set_new,
18488         cgraph_node_set_add, cgraph_node_set_remove,
18489         cgraph_node_set_find, dump_cgraph_node_set,
18490         debug_cgraph_node_set): New functions.
18491         * Makefile.in (ipa.o): Add dependency on GGC_H.
18492
18493 2009-04-20  Ira Rosen  <irar@il.ibm.com>
18494
18495         PR tree-optimization/39675
18496         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
18497         check of the return code of vect_schedule_slp. Check that
18498         stmt_vec_info still exists for the statement, before checking its
18499         vectorization type.
18500
18501 2009-04-20  Michael Matz  <matz@suse.de>
18502
18503         * Makefile.in (generated_files): Take out $(simple_generated_c).
18504
18505 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
18506
18507         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
18508         (UINTPTR_TYPE):  Likewise.
18509
18510 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18511
18512         PR c/37481
18513         * c-typeck.c (digest_init): Check for initializing an array with a
18514         string literal.
18515
18516 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18517
18518         PR c/19771
18519         * c-semantics.c (pop_stmt_list): Propagate
18520         STATEMENT_LIST_HAS_LABEL to parent statement list.
18521
18522 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
18523
18524         * config/mips/mips.h (mips_tune_attr): New macro.
18525         * config/mips/mips.md (cpu): Use it.
18526
18527 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18528
18529         PR c/38243
18530         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
18531         declaring a tag.
18532
18533 2009-04-19  Diego Novillo  <dnovillo@google.com>
18534
18535         * toplev.c (compile_file): Move call to coverage_finish ...
18536         * cgraphunit.c (ipa_passes): ... here.
18537         Call cgraph_process_new_functions.
18538         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
18539         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
18540
18541 2009-04-19  Jan Hubicka  <jh@suse.cz>
18542
18543         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
18544         cfun.
18545         (dump_cgraph_node): Dump can throw external flag.
18546         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
18547
18548 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18549
18550         PR c/32061
18551         PR c++/36954
18552         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
18553         * common.opt (Wlogical-op): Move from here...
18554         * c.opt (Wlogical-op): ... to here.
18555         * c-typeck.c (parser_build_binary_op): Update call to
18556         warn_logical_operator.
18557         * c-opts.c (c_common_post_options): Enable warn_logical_op with
18558         extra_warnings.
18559         * c-common.c (warn_logical_op): Update.
18560         * c-common.h (warn_logical_op): Update declaration.
18561
18562 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
18563
18564         * tree.c (protected_set_expr_location): Fix formatting.
18565
18566 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18567
18568         PR c/27676
18569         * c-typeck.c (readonly_warning): new.
18570         (build_unary_op, build_modify_expr): Use readonly_warning for
18571         storing into something readonly but not const-qualified.
18572
18573 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18574
18575         PR c/22367
18576         * c-typeck.c (build_unary_op): Check for taking address of
18577         expression of type void.
18578
18579 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18580
18581         PR c/35210
18582         * c-typeck.c (build_function_call): Check for calling a function
18583         with qualified void return types.  Call require_complete_type when
18584         generating a trap.
18585
18586 2009-04-18  Jan Hubicka  <jh@suse.cz>
18587
18588         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
18589         Set nothrow flag.
18590         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
18591         can_throw_external flag.
18592         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
18593         * ipa-pure-const.c (ignore_edge): New function.
18594         (propagate): Compute order for NOTHROW computation; set NOTHROWs
18595         only over can_throw_external edges.
18596         (local_pure_const): Add nothrow flag.
18597         * ipa-utils.c (searchc): Add ignore_edge callback.
18598         (ipa_utils_reduced_inorder): Add ignore_edge callback.
18599         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
18600         (set_nothrow_function_flags): Update cgraph.
18601         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
18602
18603 2009-04-18  Richard Guenther  <rguenther@suse.de>
18604
18605         PR middle-end/39804
18606         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
18607         (fold_stmt): ... this and ...
18608         (fold_stmt_inplace): ... this.
18609         (fold_stmt_1): Fold references in calls and asms.
18610         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
18611
18612 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18613
18614         * tree-vrp.c (ssa_name_nonzero_p): Remove.
18615         * tree.h: Remove the prototype for ssa_name_nonzero_p.
18616
18617 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18618
18619         * tree.c (function_args_count): Remove.
18620         * tree.h: Remove the prototype for function_args_count.
18621
18622 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18623
18624         * tree-iterator.c (expr_only): Remove.
18625         * tree.h: Remove the prototype for expr_only.
18626
18627 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18628
18629         * reginfo.c (cannot_change_mode_set_regs): Remove.
18630         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
18631
18632 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
18633
18634         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
18635         whether operands 0 and 1 overlaps.
18636
18637 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18638
18639         PR middle-end/36902
18640         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
18641         pointer. Use warning_at instead of warning.
18642         (search_for_addr_array): Likewise.
18643         (check_array_bounds): Likewise.
18644         (check_all_array_refs): Check that the incoming edge is not in the
18645         list of edges to be removed.
18646         (check_all_array_refs): Avoid the temporal pointer.
18647         (vrp_visit_cond_stmt): Fix typo.
18648         (simplify_switch_using_ranges): Handle the case where the switch
18649         index is an integer constant.
18650
18651 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
18652
18653         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
18654
18655 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18656
18657         * doc/extend.texi, doc/invoke.texi: Fix typos.
18658
18659 2009-04-17  Cary Coutant  <ccoutant@google.com>
18660
18661         * tree-flow-inline.h (get_lineno): Fix inverted test.
18662
18663 2009-04-17  Diego Novillo  <dnovillo@google.com>
18664
18665         * tree-ssa-pre.c (create_expression_by_pieces): Remove
18666         assertion for AVAIL_OUT.
18667
18668 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
18669
18670         PR target/38627
18671         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
18672         * config/sh/linux-atomic.asm: Likewise.
18673
18674 2009-04-17  Diego Novillo  <dnovillo@google.com>
18675
18676         * except.c (debug_eh_tree): New.
18677         (struct eh_region, struct eh_status): Move ...
18678         * except.h: ... here.
18679         (add_type_for_runtime): Declare extern.
18680         (lookup_type_for_runtime): Likewise.
18681         (debug_eh_tree): Declare.
18682         * Makefile.in (GTFILES): List except.h before except.c
18683
18684 2009-04-17  Diego Novillo  <dnovillo@google.com>
18685
18686         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
18687         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
18688         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
18689         (find_vars_r): ... here.
18690         * tree-flow.h (find_referenced_vars_in): Declare.
18691         * tree-ssa-pre.c (create_expression_by_pieces): Assert
18692         that AVAIL_OUT exists for BLOCK.
18693         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
18694         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
18695         (tree-parloops.o): Likewise.
18696
18697 2009-04-17  Simon Baldwin  <simonb@google.com>
18698
18699         * toplev.c (default_tree_printer): Add handling for %E format.
18700
18701 2009-04-17  Diego Novillo  <dnovillo@google.com>
18702
18703         * tree-pretty-print.c (dump_generic_node): Add break after
18704         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
18705         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
18706         FUNCTION_TYPE together.  Call print_struct_decl when printing
18707         structures and TDF_SLIM is not given.
18708         (print_struct_decl): Fix logic for detecting recursion.
18709
18710 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18711
18712         PR 31567
18713         * gcc.c (create_at_file): New.
18714         (compile_input_file_p): New.
18715         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
18716         * main.c (main): Update call to toplev_main.
18717         * toplev.c (toplev_main): Change signature. Call expandargv.
18718         * toplev.h (toplev_main): Change signature.
18719
18720 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18721
18722         * dwarf2out.c (field_byte_offset): Use the type size as the field size
18723         if the latter is not constant.
18724
18725 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
18726
18727         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
18728
18729 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
18730
18731         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
18732         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
18733
18734 2009-04-17  Richard Guenther  <rguenther@suse.de>
18735
18736         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18737         Handle component references view-converting an invariant address.
18738
18739 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
18740
18741         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
18742         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
18743         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
18744         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
18745         Use @deftypevr rather than @deftypevar.
18746
18747 2009-04-17  Richard Guenther  <rguenther@suse.de>
18748
18749         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
18750         (get_prop_source_stmt): Likewise.
18751         (can_propagate_from): Likewise.
18752
18753 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
18754
18755         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
18756         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
18757         (--with-multilib-list): Add default value.
18758         * configure: Regenerate.
18759         * Makefile.in (TM_ENDIAN_CONFIG): Define.
18760         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
18761         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
18762         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
18763         Don't add default cpu to multilib list unnecessarily, but do enable
18764         the relevant compiler option..
18765         Add support for --with-multilib-list=<blank> and
18766         --with-multilib-list=!<somelib> to supress unwanted multilibs.
18767         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
18768         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
18769         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
18770         TM_MULTILIB_CONFIG.
18771         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
18772         (MULTILIB_OSDIRNAMES): New variable.
18773         * config/sh/t-1e: Delete file.
18774         * config/sh/t-mlib-sh1: Delete file.
18775         * config/sh/t-mlib-sh2: Delete file.
18776         * config/sh/t-mlib-sh2a: Delete file.
18777         * config/sh/t-mlib-sh2a-nofpu: Delete file.
18778         * config/sh/t-mlib-sh2a-single: Delete file.
18779         * config/sh/t-mlib-sh2a-single-only: Delete file.
18780         * config/sh/t-mlib-sh2e: Delete file.
18781         * config/sh/t-mlib-sh3e: Delete file.
18782         * config/sh/t-mlib-sh4: Delete file.
18783         * config/sh/t-mlib-sh4-nofpu: Delete file.
18784         * config/sh/t-mlib-sh4-single: Delete file.
18785         * config/sh/t-mlib-sh4-single-only: Delete file.
18786         * config/sh/t-mlib-sh4a: Delete file.
18787         * config/sh/t-mlib-sh4a-nofpu: Delete file.
18788         * config/sh/t-mlib-sh4a-single: Delete file.
18789         * config/sh/t-mlib-sh4a-single-only: Delete file.
18790         * config/sh/t-mlib-sh4al: Delete file.
18791         * config/sh/t-mlib-sh5-32media: Delete file.
18792         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
18793         * config/sh/t-mlib-sh5-64media: Delete file.
18794         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
18795         * config/sh/t-mlib-sh5-compact: Delete file.
18796         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
18797         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
18798         * doc/install.texi (Options specification): Add
18799         --with-multilib-list and --with-endian.
18800
18801 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
18802
18803         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
18804         REVISION_c.
18805         (OBJS-common): Add plugin-version.o.
18806         (plugin-version.o): New.
18807         * gcc-plugin.h (plugin_gcc_version): New.
18808         (plugin_default_version_check): New.
18809         (plugin_init_func, plugin_init): Add version argument.
18810         * plugin-version.c: New.
18811         * plugin.c (str_plugin_gcc_version_name): New.
18812         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
18813         pass it to the init function.
18814         (plugin_default_version_check): New.
18815
18816 2009-04-17  Richard Guenther  <rguenther@suse.de>
18817
18818         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
18819         for decl-vs-decl disambiguation.
18820
18821 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
18822
18823         * config/s390/s390.h (s390_tune_attr): New macro definition.
18824         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
18825
18826 2009-04-17  Richard Guenther  <rguenther@suse.de>
18827
18828         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
18829         (fold_stmt_r): Likewise.
18830         (maybe_fold_reference): New function.
18831         (fold_gimple_assign): Handle cases fold_stmt_r did.
18832         (fold_stmt): Do not use fold_stmt_r.
18833         (fold_stmt_inplace): Likewise.
18834
18835 2009-04-17  Richard Guenther  <rguenther@suse.de>
18836
18837         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
18838         (record_equivalences_from_stmt): Remove useless checks and
18839         simplifications.
18840         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
18841         the type is already suitable.
18842
18843 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
18844
18845         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
18846
18847 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
18848
18849         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
18850         (CMPtype): Define as __gcc_CMPtype.
18851
18852 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
18853
18854         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
18855         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
18856
18857 2009-04-17  Richard Guenther  <rguenther@suse.de>
18858
18859         PR tree-optimization/39746
18860         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
18861         special-casing for builtins and static variable use/def.
18862         (call_may_clobber_ref_p_1): Likewise.
18863
18864 2009-04-16  Ian Lance Taylor  <iant@google.com>
18865
18866         * df.h: Include "timevar.h".
18867         (struct df_problem): Change tv_id field to timevar_id_t.
18868         * tree-pass.h: Include "timevar.h".
18869         (struct opt_pass): Change tv_id field to timevar_id_t.
18870         * timevar.h (timevar_id_t): Define TV_NONE.
18871         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
18872         TV_NONE rather than tv_id != 0.
18873         (execute_one_pass): Likewise.
18874         * Makefile.in (DF_H): Add $(TIMEVAR_H).
18875         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
18876         dependencies to $(TREE_PASS_H).
18877         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
18878         to TV_NONE.
18879         (pass_branch_target_load_optimize2): Likewise.
18880         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
18881         (pass_outof_cfg_layout_mode): Likewise.
18882         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
18883         (pass_rebuild_cgraph_edges): Likewise.
18884         (pass_remove_cgraph_callee_edges): Likewise.
18885         * df-core.c (pass_df_initialize_opt): Likewise.
18886         (pass_df_initialize_no_opt): Likewise.
18887         (pass_df_finish): Likewise.
18888         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
18889         * except.c (pass_set_nothrow_function_flags): Likewise.
18890         (pass_convert_to_eh_region_ranges): Likewise.
18891         * final.c (pass_compute_alignments): Likewise.
18892         * function.c (pass_instantiate_virtual_regs): Likewise.
18893         (pass_init_function): Likewise.
18894         (pass_leaf_regs): Likewise.
18895         (pass_match_asm_constraints): Likewise.
18896         * gimple-low.c (pass_lower_cf): Likewise.
18897         (pass_mark_used_blocks): Likewise.
18898         * init-regs.c (pass_initialize_regs): Likewise.
18899         * integrate.c (pass_initial_value_sets): Likewise.
18900         * ira.c (pass_ira): Likewise.
18901         * jump.c (pass_cleanup_barriers): Likewise.
18902         * omp-low.c (pass_expand_omp): Likewise.
18903         (pass_lower_omp): Likewise.
18904         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
18905         * recog.c (pass_split_all_insns): Likewise.
18906         (pass_split_after_reload): Likewise.
18907         (pass_split_before_regstack): Likewise.
18908         (pass_split_before_sched2): Likewise.
18909         (pass_split_for_shorten_branches): Likewise.
18910         * reginfo.c (pass_reginfo_init): Likewise.
18911         (pass_subregs_of_mode_init): Likewise.
18912         (pass_subregs_of_mode_finish): Likewise.
18913         * passes.c (pass_postreload): Likewise.
18914         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
18915         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
18916         (pass_warn_function_return): Likewise.
18917         (pass_warn_function_noreturn): Likewise.
18918         * tree-complex.c (pass_lower_complex): Likewise.
18919         (pass_lower_complex_O0): Likewise.
18920         * tree-if-conv.c (pass_if_conversion): Likewise.
18921         * tree-into-ssa.c (pass_build_ssa): Likewise.
18922         * tree-mudflap.c (pass_mudflap_1): Likewise.
18923         (pass_mudflap_2): Likewise.
18924         * tree-nomudflap.c (pass_mudflap_1): Likewise.
18925         (pass_mudflap_2): Likewise.
18926         * tree-nrv.c (pass_return_slot): Likewise.
18927         * tree-object-size.c (pass_object_sizes): Likewise.
18928         * tree-optimize.c (pass_all_optimizations): Likewise.
18929         (pass_early_local_passes): Likewise.
18930         (pass_all_early_optimizations): Likewise.
18931         (pass_cleanup_cfg): Likewise.
18932         (pass_cleanup_cfg_post_optimizing): Likewise.
18933         (pass_free_datastructures): Likewise.
18934         (pass_free_cfg_annotations): Likewise.
18935         (pass_fixup_cfg): Likewise.
18936         (pass_init_datastructures): Likewise.
18937         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
18938         (pass_late_warn_uninitialized): Likewise.
18939         (pass_update_address_taken): Likewise.
18940         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
18941         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
18942         (pass_cse_sincos): Likewise.
18943         (pass_convert_to_rsqrt): Likewise.
18944         * tree-ssa-structalias.c (pass_build_alias): Likewise.
18945         * tree-stdarg.c (pass_stdarg): Likewise.
18946         * tree-tailcall.c (pass_tail_recursion): Likewise.
18947         (pass_tail_calls): Likewise.
18948         * tree-vect-generic.c (pass_lower_vector): Likewise.
18949         (pass_lower_vector_ssa): Likewise.
18950         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
18951
18952 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
18953
18954         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
18955         XLR entry.
18956         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
18957         Handle -march=xlr.
18958         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
18959         logical and signext.
18960
18961 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
18962
18963         PR target/39767
18964         * config/sh/predicates.md (arith_operand): Check if the operand
18965         of TRUNCATE is a REG.
18966
18967 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18968
18969         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
18970         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
18971
18972 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18973
18974         * tree-iterator.c (tsi_split_statement_list_after,
18975         tsi_split_statement_list_before): Remove.
18976         * tree-iterator.h: Remove the prototypes for
18977         tsi_split_statement_list_after and tsi_split_statement_list_before.
18978
18979 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18980
18981         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
18982         * tree-ssa-propagate.h: Remove the prototype for
18983         stmt_makes_single_load.
18984
18985 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18986
18987         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
18988         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
18989
18990 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18991
18992         * tree-iterator.c (EXPR_LAST_BODY): Remove.
18993
18994 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
18995
18996         * except.c (eh_region_outer_p): Remove.
18997         * except.h: Remove the prototype for eh_region_outer_p.
18998
18999 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19000
19001         * function.c (current_function_assembler_name): Remove.
19002         * function.h: Remove the prototype for
19003         current_function_assembler_name.
19004
19005 2009-04-16  Ian Lance Taylor  <iant@google.com>
19006
19007         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
19008         (add_reg_note): Call alloc_reg_note.
19009         * rtl.h (alloc_reg_note): Declare.
19010         * combine.c (try_combine): Use alloc_reg_note.
19011         (recog_for_combine, move_deaths): Likewise.
19012         (distribute_notes): Use alloc_reg_note and add_reg_note.
19013         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
19014         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
19015         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
19016
19017 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
19018
19019         PR rtl-optimization/39762
19020         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
19021         ira_may_move_out_cost): Add comments about way of their usage.
19022         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
19023
19024         * ira-conflicts.c (process_regs_for_copy): Use function
19025         ira_get_register_move_cost instead of global
19026         ira_register_move_cost.
19027
19028         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
19029         color_pass, move_spill_restore, update_curr_costs): Ditto.
19030
19031         * ira-lives.c (process_single_reg_class_operands): Ditto.
19032
19033         * ira-emit.c (emit_move_list): Ditto.
19034
19035         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
19036         (record_reg_classes): Ditto.  Use functions
19037         ira_get_register_move_cost and ira_get_may_move_cost instead of
19038         global vars ira_register_move_cost, ira_may_move_out_cost and
19039         ira_may_move_in_cost.
19040         (record_address_regs): Don't call ira_init_register_move_cost.
19041         Use function ira_get_may_move_cost instead of global
19042         ira_may_move_in_cost.
19043         (process_bb_node_for_hard_reg_moves): Use function
19044         ira_get_register_move_cost instead of global ira_register_move_cost.
19045         (ira_costs): Don't call ira_init_register_move_cost.
19046
19047 2009-04-16  Richard Guenther  <rguenther@suse.de>
19048
19049         * tree-cfg.c (verify_gimple_assign_binary):
19050         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
19051         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
19052         (create_general_new_stmt): Note that this function is broken.
19053
19054 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19055
19056         * common.opt (fhelp): Add Var(help_flag).
19057         * gcc-plugin.h (plugin_info): Add help.
19058         * plugin.c (plugin_name_args): Add help.
19059         (register_plugin_info): Set plugin->help.
19060         (print_help_one_plugin): New.
19061         (print_plugins_help): New.
19062         * plugin.h (print_plugins_help): New.
19063         * toplev.c (toplev_main): Call print_plugins_help if needed.
19064
19065 2009-04-16  Richard Guenther  <rguenther@suse.de>
19066
19067         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
19068         (gimple_ior_addresses_taken_1): New function.
19069         (gimple_ior_addresses_taken): Likewise.
19070         * gimple.h (struct gimple_statement_with_ops_base): Remove
19071         addresses_taken member.
19072         (gimple_ior_addresses_taken): Declare.
19073         (gimple_addresses_taken, gimple_addresses_taken_ptr,
19074         gimple_set_addresses_taken): Remove.
19075         * ipa-reference.c (mark_address): New function.
19076         (scan_stmt_for_static_refs): Use it for marking addresses taken.
19077         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
19078         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
19079         (gimple_add_to_addresses_taken): Remove.
19080         (get_tmr_operands): Call mark_address_taken.
19081         (get_asm_expr_operands): Likewise.
19082         (get_expr_operands): Likewise.
19083         (build_ssa_operands): Do not clear the addresses_taken bitmap.
19084         (free_stmt_operands): Do not free it.
19085         * tree-ssa.c (delete_tree_ssa): Likewise.
19086         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
19087
19088 2009-04-16  Richard Guenther  <rguenther@suse.de>
19089
19090         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
19091         (walk_stmt_load_store_ops): Likewise.
19092         * gimple.c (get_base_loadstore): New function.
19093         (walk_stmt_load_store_addr_ops): Likewise.
19094         (walk_stmt_load_store_ops): Likewise.
19095         * ipa-pure-const.c (check_op): Simplify.
19096         (check_load, check_store): New functions.
19097         (check_stmt): Use walk_stmt_load_store_ops.
19098         * ipa-reference.c (mark_load): Adjust signature.
19099         (mark_store): Likewise.
19100         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
19101
19102 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19103
19104         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
19105         (plugin_info): New.
19106         * opts.c (common_handle_option): Don't call print_version.
19107         * plugin.c (plugin_name_args): Add version.
19108         (register_plugin_info): New.
19109         (register_callback): Handle PLUGIN_INFO.
19110         (try_init_one_plugin): New.
19111         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
19112         if failed to init.
19113         (finalize_one_plugin): New.
19114         (finalize_plugins): New.
19115         (print_one_plugin): New.
19116         (print_plugins_versions): New.
19117         * plugin.h (print_plugins_versions): New.
19118         (finalize_plugins): New.
19119         * toplev.c (compile_file): Don't call initialize_plugins.
19120         (print_version): Call print_plugins_versions.
19121         (toplev_main): Call initialize_plugins. Print version if needed.
19122         Call finalize_plugins.
19123
19124 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19125
19126         * common.opt (fversion): New.
19127         * gcc.c (print_version): New.
19128         (process_command): Don't print the version. Just set print_version.
19129         (main): Print version. Call subprocesses if print_version and
19130         verbose_flag are set.
19131         * opts.c (common_handle_option): Handle OPT_fversion.
19132
19133 2009-04-16  Richard Guenther  <rguenther@suse.de>
19134             Ira Rosen  <irar@il.ibm.com>
19135
19136         PR tree-optimization/39698
19137         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
19138         type of the reduction variable.  Only generate the def if
19139         it is needed.
19140
19141         * omp-low.c (expand_omp_for_generic): When converting to a pointer
19142         make sure to first convert to an integer of the same precision.
19143         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
19144         the type of the evolution correctly in computing the new
19145         induction variable base.
19146
19147 2009-04-16  Richard Guenther  <rguenther@suse.de>
19148
19149         PR middle-end/39625
19150         * tree-cfg.c (make_blocks): Split statements with to-be
19151         abnormal SSA names on the lhs.
19152
19153 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
19154
19155         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
19156         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
19157         * c-typeck.c (really_start_incremental_init): Likewise.
19158         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
19159         (TARGET_INITIALIZER): Remove it.
19160         * target.h (struct target): Remove vector_opaque_p.
19161         * tree.c (build_opaque_vector_type): New.
19162         * tree.h (TYPE_VECTOR_OPAQUE): New.
19163         (build_opaque_vector_type): Declare.
19164         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
19165         * config/rs6000/rs6000.c (build_opaque_vector_type,
19166         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
19167         (rs6000_init_builtins): Use build_opaque_vector_type for
19168         opaque_V4SI_type_node.
19169
19170 2009-04-15  Catherine Moore  <clm@codesourcery.com>
19171
19172         * debug.h (set_name):  Declare.
19173         * dwarf2out.c (dwarf2out_set_name): Declare.
19174         (dwarf2_debug_hooks): Add set_name.
19175         (find_AT_string): New.
19176         (add_AT_string): Call find_AT_string.
19177         (dwarf2out_set_name): New.
19178         * cp/decl.c (grokdeclarator): Call set_name.
19179         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
19180         * debug.c (do_nothing_debug_hooks):  Likewise.
19181         * dbxout.c (dbx_debug_hooks): Likewise.
19182         * sdbout.c (sdb_debug_hooks): Likewise.
19183
19184 2009-04-15  Michael Eager  <eager@eagercon.com>
19185
19186         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
19187         reg for single-precision FPU.
19188         * config/rs6000/rs6000.md (movsi_internal1): Only for
19189         !TARGET_SINGLE_FPU.
19190         (movsi_internal1_single): New. Add pattern to move SI values to/from
19191         single-precision FP regs.
19192
19193 2009-04-15  Richard Guenther  <rguenther@suse.de>
19194
19195         * omp-low.c (lower_rec_input_clauses): Build correct address
19196         expressions.
19197         (expand_omp_for_generic): Fix multiplication type.
19198         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
19199         (generate_memset_zero): Fix types.
19200         * tree-profile.c (prepare_instrumented_value): Correctly
19201         widen a pointer.
19202
19203 2009-04-15  Ian Lance Taylor  <iant@google.com>
19204
19205         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
19206         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
19207         for -Wall and for -Wc++-compat.
19208         (c_common_post_options): For C++, set warn_enum_compare if not
19209         already set.
19210         * c-tree.h (struct c_expr): Add field original_type.
19211         (build_external_ref): Update declaration.
19212         * c-parser.c (c_parser_braced_init): Set original_type.
19213         (c_parser_initelt): Likewise.
19214         (c_parser_expr_no_commas): Likewise.
19215         (c_parser_conditional_expression): Likewise.
19216         (c_parser_cast_expression): Likewise.
19217         (c_parser_unary_expression): Likewise.  Pull setting of
19218         original_code to top of function.
19219         (c_parser_sizeof_expression): Set original_type.
19220         (c_parser_alignof_expression): Likewise.
19221         (c_parser_postfix_expression): Likewise.  Pull setting of
19222         original_code to top of function.
19223         (c_parser_postfix_expression_after_paren_type): Set original_type.
19224         (c_parser_postfix_expression_after_primary): Likewise.
19225         (c_parser_expression): Likewise.
19226         * c-typeck.c (build_external_ref): Add type parameter.  Change all
19227         callers.
19228         (c_expr_sizeof_expr): Set original_type field.
19229         (parser_build_unary_op): Likewise.
19230         (parser_build_binary_op): Likewise.  Optionally warn about
19231         comparisons of enums of different types.
19232         (digest_init): Set original_type field.
19233         (really_start_incremental_init): Likewise.
19234         (push_init_level, pop_init_level): Likewise.
19235         * doc/invoke.texi (Warning Options): -Wenum-compare now
19236         supported in C.
19237
19238 2009-04-15  Richard Guenther  <rguenther@suse.de>
19239
19240         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
19241         out a necessary conversion.
19242         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
19243         names we didn't value number.
19244         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
19245
19246 2009-04-15  Richard Guenther  <rguenther@suse.de>
19247
19248         PR tree-optimization/39764
19249         * tree-ssa-ccp.c (get_value): Canonicalize value with
19250         canonicalize_float_value.
19251
19252 2009-04-15  Jan Hubicka  <jh@suse.cz>
19253
19254         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19255         Wrong version of patch.
19256
19257 2009-04-15  Jan Hubicka  <jh@suse.cz>
19258
19259         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19260
19261 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
19262
19263         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19264         our distinct integral and vector types.
19265
19266 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
19267
19268         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19269         * init.c (build_vtbl_address): Remove call to assemble_external.
19270
19271 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
19272
19273         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
19274         output for other floating point modes.
19275
19276 2009-04-14  Diego Novillo  <dnovillo@google.com>
19277
19278         * diagnostic.c (diagnostic_report_diagnostic): Do not
19279         warn about loaded plugins for DK_ERROR and DK_WARNING.
19280         * c-decl.c (declspecs_add_type): Move call to
19281         invoke_plugin_callbacks ...
19282         * c-parser.c (c_parser_declspecs): ... here.
19283         * plugin.c (dump_active_plugins): Tidy output.
19284
19285 2009-04-14  Diego Novillo  <dnovillo@google.com>
19286             Le-Chun Wu  <lcwu@google.com>
19287
19288         * configure.ac: Add --enable-plugin support.
19289         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
19290         * Makefile.in (PLUGIN_H): Define.
19291         Export ENABLE_PLUGIN and GMPINC to site.exp.
19292         Add PLUGINLIBS to link command.
19293         Add/modify dependencies for plugin.o and files including plugin.h.
19294         (plugin.o): New.
19295         * config.in: Regenerate.
19296
19297         * opts.c (common_handle_option): Handle OPT_fplugin_ and
19298         OPT_fplugin_arg_.
19299
19300 2009-04-14  Le-Chun Wu  <lcwu@google.com>
19301
19302         * tree-pass.h (register_one_dump_file): Add a prototype for
19303         register_one_dump_file.
19304         * toplev.c (compile_file): Call initialize_plugins.
19305         (do_compile): Call invoke_plugin_callbacks.
19306         (toplev_main): Call invoke_plugin_callbacks.
19307         * common.opt: Add -fplugin= and -fplugin-arg-.
19308         * gcc-plugin.h: New public header file for plugins to include.
19309         * plugin.c: New source file.
19310         * plugin.h: New internal header file.
19311         * passes.c (register_one_dump_file): Make it external.
19312
19313         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
19314
19315 2009-04-14  Diego Novillo  <dnovillo@google.com>
19316
19317         * doc/plugins.texi: New.
19318         * doc/gccint.texi: Add reference to Plugins chapter.
19319         * doc/invoke.texi: Document -fplugin and -fplugin-arg
19320         * diagnostic.c (diagnostic_report_diagnostic): Warn about
19321         loaded plugins, if any.
19322         * timevar.def (TV_PLUGIN_INIT): Define.
19323         (TV_PLUGIN_RUN): Define.
19324         * plugin.c: Include timevar.h
19325         (plugins_active_p): New.
19326         (dump_active_plugins): New.
19327         (debug_active_plugins): New.
19328
19329 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
19330
19331         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19332         library paths.
19333         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19334
19335 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
19336
19337         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19338         the same as a minus without a shift.
19339
19340 2009-04-14  Nick Clifton  <nickc@redhat.com>
19341
19342         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19343         comparisons with small integers will always produce a short
19344         branch.
19345
19346 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
19347
19348         Merge:
19349         2008-12-19  Diego Novillo  <dnovillo@google.com>
19350
19351         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19352
19353 2009-04-14  Richard Guenther  <rguenther@suse.de>
19354
19355         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19356         verification.
19357         (verify_gimple_assign_binary): Likewise.  Handle shifts and
19358         rotates correctly.
19359         (verify_gimple_phi): Print the mismatched argument position.
19360         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19361         Fix types.
19362         (vect_update_init_of_dr): Likewise.
19363         * matrix-reorg.c (transform_access_sites): Do what the
19364         comment suggests.
19365         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19366
19367 2009-04-13  Michael Eager  <eager@eagercon.com>
19368
19369         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19370         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19371         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
19372         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19373         remove duplicate config
19374
19375 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19376
19377         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19378         file_name:line_number type locator of the call site.
19379
19380 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
19381
19382         * genautomata.c: Put blank after comma.
19383         (automaton_decls): New.
19384         (struct unit_usage): Add comments to member next.
19385         (store_alt_unit_usage): Keep the list ordered.
19386         (unit_present_on_list_p, equal_alternatives_p): New.
19387         (check_regexp_units_distribution): Check units distribution
19388         correctness correctly.
19389         (main): Don't write automata if error is found.  Return correct
19390         exit code.
19391
19392         * config/m68k/cf.md (cfv4_ds): Remove.
19393         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19394         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19395
19396         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19397         power4-load-ext, power4-store, power4-store-update,
19398         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19399         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19400         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19401         power4-sqrt, power4-isync): Modify reservation to make correct
19402         unit distribution to automata.
19403
19404         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19405         power5-store-update, power5-two, power5-three, power5-lmul,
19406         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19407
19408 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
19409
19410         * except.c (pass_set_nothrow_function_flags): Set name and add
19411         TODO_dump_func.
19412         (set_nothrow_function_flags): Mention in the dump file when
19413         changing a function to nothrow.
19414
19415 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
19416
19417         PR/39066
19418         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19419         instead of unsigned long.
19420
19421 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19422
19423         * config/arm/arm.c (return_used_this_function): Remove.
19424         (arm_output_function_prologue): Remove use of
19425         return_used_this_function.
19426         (output_return_instruction): Replace use of
19427         return_used_this_function
19428         by cfun->machine->return_used_this_function.
19429         (arm_output_epilogue): Likewise.
19430         (arm_output_function_epilogue): Likewise.
19431         (thumb_unexpanded_epilogue): Likewise.
19432         * config/arm/arm.h (struct machine_function):
19433         New member return_used_this_function.
19434
19435 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
19436
19437         * doc/install.texi: Correct description of default directory for
19438         --with-gxx-include-dir.
19439
19440 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
19441
19442         * fold-const.c (build_range_check): Properly deal with enumeral and
19443         boolean base types.
19444
19445 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
19446
19447         * doc/invoke.texi (max_gcse_passes): Remove documentation.
19448         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19449         * params.h (MAX_GCSE_PASSES): Remove.
19450         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19451         in sequence.  Remove ability to run multiple passes.
19452         (bypass_jumps): Report run as third CPROP pass.
19453
19454 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
19455
19456         PR middle-end/39651
19457         * except.c (can_throw_external): Look at each insn in a SEQUENCE
19458         when deciding whether the whole SEQUENCE can throw.
19459
19460 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
19461
19462         PR target/39740
19463         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19464         offseted label references.
19465
19466 2009-04-11  Jan Hubicka  <jh@suse.cz>
19467
19468         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19469
19470 2009-04-11  Richard Guenther  <rguenther@suse.de>
19471
19472         PR middle-end/39732
19473         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19474         return variables as TREE_ADDRESSABLE.
19475
19476 2009-04-11  Richard Guenther  <rguenther@suse.de>
19477
19478         PR tree-optimization/39713
19479         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19480         reference trees have SSA_NAME operands.
19481
19482 2009-04-11  Richard Guenther  <rguenther@suse.de>
19483
19484         PR c/39712
19485         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19486         address expressions.
19487
19488 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
19489
19490         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
19491         match changes in Cygwin 1.7
19492         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19493         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
19494
19495 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19496
19497         PR tree-optimization/39701
19498         * doc/invoke.texi (Optimization Options): Document change in
19499         meaning and initialization of -fdelete-null-pointer-checks.
19500
19501 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19502
19503         PR middle-end/39701
19504         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
19505
19506         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
19507         here.
19508
19509         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
19510
19511 2009-04-10  Chao-ying Fu  <fu@mips.com>
19512
19513         * doc/tm.texi (Instruction Output): Document
19514         TARGET_ASM_FINAL_POSTSCAN_INSN.
19515         * target.h (final_postscan_insn): New field in asm_out.
19516         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19517         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
19518         * final.c (final_scan_insn): Call
19519         targetm.asm_out.final_postscan_insn after outputting
19520         an asm macro and a normal instruction.
19521
19522         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
19523         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
19524         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
19525         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
19526         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19527
19528 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19529
19530         PR middle-end/39701
19531         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
19532         variables as non-NULL even with -fdelete-null-pointer-checks.
19533
19534 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19535
19536         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
19537
19538 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19539
19540         PR target/39678
19541         * config/i386/i386.c (classify_argument): Handle SCmode with
19542         (bit_offset % 64) != 0.
19543
19544 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
19545
19546         * doc/invoke.texi (Optimize Options): Add cross-reference to
19547         -Q --help=optimizers examples.
19548
19549 2009-04-10  Ben Elliston  <bje@au.ibm.com>
19550
19551         PR target/36800
19552         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
19553         regalign for the reg == fpr and TDmode case.
19554
19555 2009-04-09  David Ayers  <ayers@fsfe.org>
19556
19557         PR objc/29200
19558         * objc/objc-act.c (warn_with_method): Remove helper function.
19559         (check_duplicates): Call warning and inform directly.
19560         (really_start_method): Likewise.
19561
19562 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19563
19564         * expmed.c (expand_divmod): Always use a comparison for a division
19565         by a large unsigned integer.
19566
19567         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
19568         for things others than variables or functions as nonzero.
19569
19570 2009-04-09  Nick Clifton  <nickc@redhat.com>
19571
19572         * unwind-compat.c: Change copyright header to refer to version
19573         3 of the GNU General Public License with version 3.1 of the
19574         GCC Runtime Library Exception and to point readers at the
19575         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
19576         * config/alpha/crtfastmath.c: Likewise.
19577         * config/alpha/linux-unwind.h: Likewise.
19578         * config/alpha/qrnnd.asm: Likewise.
19579         * config/alpha/vms-crt0-64.c: Likewise.
19580         * config/alpha/vms-crt0.c: Likewise.
19581         * config/alpha/vms-dwarf2.asm: Likewise.
19582         * config/alpha/vms-dwarf2eh.asm: Likewise.
19583         * config/alpha/vms-psxcrt0-64.c: Likewise.
19584         * config/alpha/vms-psxcrt0.c: Likewise.
19585         * config/alpha/vms_tramp.asm: Likewise.
19586         * config/arc/initfini.c: Likewise.
19587         * config/arc/lib1funcs.asm: Likewise.
19588         * config/arm/bpabi-v6m.S: Likewise.
19589         * config/arm/bpabi.S: Likewise.
19590         * config/arm/bpabi.c: Likewise.
19591         * config/arm/crti.asm: Likewise.
19592         * config/arm/crtn.asm: Likewise.
19593         * config/arm/ieee754-df.S: Likewise.
19594         * config/arm/ieee754-sf.S: Likewise.
19595         * config/arm/lib1funcs.asm: Likewise.
19596         * config/arm/libunwind.S: Likewise.
19597         * config/arm/linux-atomic.c: Likewise.
19598         * config/arm/mmintrin.h: Likewise.
19599         * config/arm/pr-support.c: Likewise.
19600         * config/arm/unaligned-funcs.c: Likewise.
19601         * config/arm/unwind-arm.c: Likewise.
19602         * config/arm/unwind-arm.h: Likewise.
19603         * config/avr/libgcc.S: Likewise.
19604         * config/bfin/crti.s: Likewise.
19605         * config/bfin/crtlibid.s: Likewise.
19606         * config/bfin/crtn.s: Likewise.
19607         * config/bfin/lib1funcs.asm: Likewise.
19608         * config/bfin/linux-unwind.h: Likewise.
19609         * config/cris/arit.c: Likewise.
19610         * config/cris/cris_abi_symbol.c: Likewise.
19611         * config/darwin-64.c: Likewise.
19612         * config/darwin-crt2.c: Likewise.
19613         * config/darwin-crt3.c: Likewise.
19614         * config/darwin.h: Likewise.
19615         * config/dbxelf.h: Likewise.
19616         * config/dfp-bit.c: Likewise.
19617         * config/dfp-bit.h: Likewise.
19618         * config/elfos.h: Likewise.
19619         * config/fixed-bit.c: Likewise.
19620         * config/fixed-bit.h: Likewise.
19621         * config/fp-bit.c: Likewise.
19622         * config/fp-bit.h: Likewise.
19623         * config/fr30/crti.asm: Likewise.
19624         * config/fr30/crtn.asm: Likewise.
19625         * config/fr30/lib1funcs.asm: Likewise.
19626         * config/freebsd-spec.h: Likewise.
19627         * config/frv/cmovd.c: Likewise.
19628         * config/frv/cmovh.c: Likewise.
19629         * config/frv/cmovw.c: Likewise.
19630         * config/frv/frvbegin.c: Likewise.
19631         * config/frv/frvend.c: Likewise.
19632         * config/frv/lib1funcs.asm: Likewise.
19633         * config/glibc-stdint.h: Likewise.
19634         * config/h8300/clzhi2.c: Likewise.
19635         * config/h8300/crti.asm: Likewise.
19636         * config/h8300/crtn.asm: Likewise.
19637         * config/h8300/ctzhi2.c: Likewise.
19638         * config/h8300/fixunssfsi.c: Likewise.
19639         * config/h8300/lib1funcs.asm: Likewise.
19640         * config/h8300/parityhi2.c: Likewise.
19641         * config/h8300/popcounthi2.c: Likewise.
19642         * config/i386/ammintrin.h: Likewise.
19643         * config/i386/att.h: Likewise.
19644         * config/i386/avxintrin.h: Likewise.
19645         * config/i386/biarch64.h: Likewise.
19646         * config/i386/bmmintrin.h: Likewise.
19647         * config/i386/cpuid.h: Likewise.
19648         * config/i386/cross-stdarg.h: Likewise.
19649         * config/i386/crtfastmath.c: Likewise.
19650         * config/i386/crtprec.c: Likewise.
19651         * config/i386/cygming-crtbegin.c: Likewise.
19652         * config/i386/cygming-crtend.c: Likewise.
19653         * config/i386/cygwin.asm: Likewise.
19654         * config/i386/emmintrin.h: Likewise.
19655         * config/i386/gmm_malloc.h: Likewise.
19656         * config/i386/gthr-win32.c: Likewise.
19657         * config/i386/i386.h: Likewise.
19658         * config/i386/immintrin.h: Likewise.
19659         * config/i386/linux-unwind.h: Likewise.
19660         * config/i386/linux64.h: Likewise.
19661         * config/i386/mm3dnow.h: Likewise.
19662         * config/i386/mmintrin-common.h: Likewise.
19663         * config/i386/mmintrin.h: Likewise.
19664         * config/i386/nmmintrin.h: Likewise.
19665         * config/i386/pmm_malloc.h: Likewise.
19666         * config/i386/pmmintrin.h: Likewise.
19667         * config/i386/smmintrin.h: Likewise.
19668         * config/i386/sol2-c1.asm: Likewise.
19669         * config/i386/sol2-ci.asm: Likewise.
19670         * config/i386/sol2-cn.asm: Likewise.
19671         * config/i386/sol2-gc1.asm: Likewise.
19672         * config/i386/tmmintrin.h: Likewise.
19673         * config/i386/unix.h: Likewise.
19674         * config/i386/w32-unwind.h: Likewise.
19675         * config/i386/wmmintrin.h: Likewise.
19676         * config/i386/x86-64.h: Likewise.
19677         * config/i386/x86intrin.h: Likewise.
19678         * config/i386/xmmintrin.h: Likewise.
19679         * config/ia64/crtbegin.asm: Likewise.
19680         * config/ia64/crtend.asm: Likewise.
19681         * config/ia64/crtfastmath.c: Likewise.
19682         * config/ia64/crti.asm: Likewise.
19683         * config/ia64/crtn.asm: Likewise.
19684         * config/ia64/fde-glibc.c: Likewise.
19685         * config/ia64/lib1funcs.asm: Likewise.
19686         * config/ia64/linux-unwind.h: Likewise.
19687         * config/ia64/quadlib.c: Likewise.
19688         * config/ia64/unwind-ia64.c: Likewise.
19689         * config/linux.h: Likewise.
19690         * config/m32c/m32c-lib1.S: Likewise.
19691         * config/m32c/m32c-lib2-trapv.c: Likewise.
19692         * config/m32c/m32c-lib2.c: Likewise.
19693         * config/m32r/initfini.c: Likewise.
19694         * config/m68hc11/larith.asm: Likewise.
19695         * config/m68hc11/m68hc11-crt0.S: Likewise.
19696         * config/m68k/cf.md: Likewise.
19697         * config/m68k/crti.s: Likewise.
19698         * config/m68k/crtn.s: Likewise.
19699         * config/m68k/lb1sf68.asm: Likewise.
19700         * config/m68k/linux-unwind.h: Likewise.
19701         * config/mcore/crti.asm: Likewise.
19702         * config/mcore/crtn.asm: Likewise.
19703         * config/mcore/lib1.asm: Likewise.
19704         * config/mips/linux-unwind.h: Likewise.
19705         * config/mips/loongson.h: Likewise.
19706         * config/mips/mips16.S: Likewise.
19707         * config/mmix/crti.asm: Likewise.
19708         * config/mmix/crtn.asm: Likewise.
19709         * config/pa/fptr.c: Likewise.
19710         * config/pa/hpux-unwind.h: Likewise.
19711         * config/pa/lib2funcs.asm: Likewise.
19712         * config/pa/linux-atomic.c: Likewise.
19713         * config/pa/linux-unwind.h: Likewise.
19714         * config/pa/milli64.S: Likewise.
19715         * config/pa/quadlib.c: Likewise.
19716         * config/pa/stublib.c: Likewise.
19717         * config/picochip/libgccExtras/adddi3.asm: Likewise.
19718         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
19719         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
19720         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
19721         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
19722         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
19723         * config/picochip/libgccExtras/divmod15.asm: Likewise.
19724         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
19725         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
19726         * config/picochip/libgccExtras/longjmp.asm: Likewise.
19727         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
19728         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
19729         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
19730         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
19731         * config/picochip/libgccExtras/setjmp.asm: Likewise.
19732         * config/picochip/libgccExtras/subdi3.asm: Likewise.
19733         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
19734         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
19735         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
19736         * config/rs6000/750cl.h: Likewise.
19737         * config/rs6000/altivec.h: Likewise.
19738         * config/rs6000/biarch64.h: Likewise.
19739         * config/rs6000/crtresfpr.asm: Likewise.
19740         * config/rs6000/crtresgpr.asm: Likewise.
19741         * config/rs6000/crtresxfpr.asm: Likewise.
19742         * config/rs6000/crtresxgpr.asm: Likewise.
19743         * config/rs6000/crtsavfpr.asm: Likewise.
19744         * config/rs6000/crtsavgpr.asm: Likewise.
19745         * config/rs6000/darwin-asm.h: Likewise.
19746         * config/rs6000/darwin-fallback.c: Likewise.
19747         * config/rs6000/darwin-fpsave.asm: Likewise.
19748         * config/rs6000/darwin-ldouble.c: Likewise.
19749         * config/rs6000/darwin-tramp.asm: Likewise.
19750         * config/rs6000/darwin-unwind.h: Likewise.
19751         * config/rs6000/darwin-vecsave.asm: Likewise.
19752         * config/rs6000/darwin-world.asm: Likewise.
19753         * config/rs6000/e500crtres32gpr.asm: Likewise.
19754         * config/rs6000/e500crtres64gpr.asm: Likewise.
19755         * config/rs6000/e500crtres64gprctr.asm: Likewise.
19756         * config/rs6000/e500crtrest32gpr.asm: Likewise.
19757         * config/rs6000/e500crtrest64gpr.asm: Likewise.
19758         * config/rs6000/e500crtresx32gpr.asm: Likewise.
19759         * config/rs6000/e500crtresx64gpr.asm: Likewise.
19760         * config/rs6000/e500crtsav32gpr.asm: Likewise.
19761         * config/rs6000/e500crtsav64gpr.asm: Likewise.
19762         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
19763         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
19764         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
19765         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
19766         * config/rs6000/eabi-ci.asm: Likewise.
19767         * config/rs6000/eabi-cn.asm: Likewise.
19768         * config/rs6000/eabi.asm: Likewise.
19769         * config/rs6000/linux-unwind.h: Likewise.
19770         * config/rs6000/linux64.h: Likewise.
19771         * config/rs6000/paired.h: Likewise.
19772         * config/rs6000/paired.md: Likewise.
19773         * config/rs6000/ppc64-fp.c: Likewise.
19774         * config/rs6000/ppu_intrinsics.h: Likewise.
19775         * config/rs6000/rs6000.h: Likewise.
19776         * config/rs6000/si2vmx.h: Likewise.
19777         * config/rs6000/sol-ci.asm: Likewise.
19778         * config/rs6000/sol-cn.asm: Likewise.
19779         * config/rs6000/spe.h: Likewise.
19780         * config/rs6000/spu2vmx.h: Likewise.
19781         * config/rs6000/sysv4.h: Likewise.
19782         * config/rs6000/tramp.asm: Likewise.
19783         * config/rs6000/vec_types.h: Likewise.
19784         * config/s390/linux-unwind.h: Likewise.
19785         * config/s390/tpf-unwind.h: Likewise.
19786         * config/score/crti.asm: Likewise.
19787         * config/score/crtn.asm: Likewise.
19788         * config/sh/crt1.asm: Likewise.
19789         * config/sh/crti.asm: Likewise.
19790         * config/sh/crtn.asm: Likewise.
19791         * config/sh/divtab-sh4-300.c: Likewise.
19792         * config/sh/divtab-sh4.c: Likewise.
19793         * config/sh/divtab.c: Likewise.
19794         * config/sh/lib1funcs-4-300.asm: Likewise.
19795         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
19796         * config/sh/lib1funcs.asm: Likewise.
19797         * config/sh/lib1funcs.h: Likewise.
19798         * config/sh/linux-atomic.asm: Likewise.
19799         * config/sh/linux-unwind.h: Likewise.
19800         * config/sh/shmedia.h: Likewise.
19801         * config/sh/sshmedia.h: Likewise.
19802         * config/sh/ushmedia.h: Likewise.
19803         * config/sparc/crtfastmath.c: Likewise.
19804         * config/sparc/linux-unwind.h: Likewise.
19805         * config/sparc/sol2-c1.asm: Likewise.
19806         * config/sparc/sol2-ci.asm: Likewise.
19807         * config/sparc/sol2-cn.asm: Likewise.
19808         * config/spu/divmodti4.c: Likewise.
19809         * config/spu/divv2df3.c: Likewise.
19810         * config/spu/float_disf.c: Likewise.
19811         * config/spu/float_unsdidf.c: Likewise.
19812         * config/spu/float_unsdisf.c: Likewise.
19813         * config/spu/float_unssidf.c: Likewise.
19814         * config/spu/mfc_multi_tag_release.c: Likewise.
19815         * config/spu/mfc_multi_tag_reserve.c: Likewise.
19816         * config/spu/mfc_tag_release.c: Likewise.
19817         * config/spu/mfc_tag_reserve.c: Likewise.
19818         * config/spu/mfc_tag_table.c: Likewise.
19819         * config/spu/multi3.c: Likewise.
19820         * config/spu/spu_internals.h: Likewise.
19821         * config/spu/spu_intrinsics.h: Likewise.
19822         * config/spu/spu_mfcio.h: Likewise.
19823         * config/spu/vec_types.h: Likewise.
19824         * config/spu/vmx2spu.h: Likewise.
19825         * config/stormy16/stormy16-lib2.c: Likewise.
19826         * config/svr4.h: Likewise.
19827         * config/sync.c: Likewise.
19828         * config/v850/lib1funcs.asm: Likewise.
19829         * config/vxlib-tls.c: Likewise.
19830         * config/vxlib.c: Likewise.
19831         * config/vxworks-dummy.h: Likewise.
19832         * config/xtensa/crti.asm: Likewise.
19833         * config/xtensa/crtn.asm: Likewise.
19834         * config/xtensa/ieee754-df.S: Likewise.
19835         * config/xtensa/ieee754-sf.S: Likewise.
19836         * config/xtensa/lib1funcs.asm: Likewise.
19837         * config/xtensa/lib2funcs.S: Likewise.
19838         * config/xtensa/linux-unwind.h: Likewise.
19839         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
19840         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
19841         * coretypes.h: Likewise.
19842         * crtstuff.c: Likewise.
19843         * defaults.h: Likewise.
19844         * dwarf2.h: Likewise.
19845         * emutls.c: Likewise.
19846         * gbl-ctors.h: Likewise.
19847         * gcov-io.h: Likewise.
19848         * ginclude/float.h: Likewise.
19849         * ginclude/iso646.h: Likewise.
19850         * ginclude/stdarg.h: Likewise.
19851         * ginclude/stdbool.h: Likewise.
19852         * ginclude/stddef.h: Likewise.
19853         * ginclude/stdfix.h: Likewise.
19854         * ginclude/stdint-gcc.h: Likewise.
19855         * ginclude/tgmath.h: Likewise.
19856         * gthr-aix.h: Likewise.
19857         * gthr-dce.h: Likewise.
19858         * gthr-gnat.c: Likewise.
19859         * gthr-gnat.h: Likewise.
19860         * gthr-lynx.h: Likewise.
19861         * gthr-mipssde.h: Likewise.
19862         * gthr-nks.h: Likewise.
19863         * gthr-posix.c: Likewise.
19864         * gthr-posix.h: Likewise.
19865         * gthr-posix95.h: Likewise.
19866         * gthr-rtems.h: Likewise.
19867         * gthr-single.h: Likewise.
19868         * gthr-solaris.h: Likewise.
19869         * gthr-tpf.h: Likewise.
19870         * gthr-vxworks.h: Likewise.
19871         * gthr-win32.h: Likewise.
19872         * gthr.h: Likewise.
19873         * libgcc2.c: Likewise.
19874         * libgcc2.h: Likewise.
19875         * libgcov.c: Likewise.
19876         * tsystem.h: Likewise.
19877         * typeclass.h: Likewise.
19878         * unwind-c.c: Likewise.
19879         * unwind-compat.h: Likewise.
19880         * unwind-dw2-fde-compat.c: Likewise.
19881         * unwind-dw2-fde-darwin.c: Likewise.
19882         * unwind-dw2-fde-glibc.c: Likewise.
19883         * unwind-dw2-fde.c: Likewise.
19884         * unwind-dw2-fde.h: Likewise.
19885         * unwind-dw2.c: Likewise.
19886         * unwind-dw2.h: Likewise.
19887         * unwind-generic.h: Likewise.
19888         * unwind-pe.h: Likewise.
19889         * unwind-sjlj.c: Likewise.
19890         * unwind.inc: Likewise.
19891         * config/arm/neon-gen.ml: Change generated copyright header to
19892         refer to version 3 of the GNU General Public License with
19893         version 3.1 of the GCC Runtime Library Exception and to point
19894         readers at the COPYING3 and COPYING3.RUNTIME files and the
19895         FSF's license web page.
19896         * config/arm/arm_neon.h: Regenerate.
19897
19898 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
19899
19900         * config/cris/cris.md: Change copyright header to refer to version
19901         3 of the GNU General Public License.
19902         * doc/install.texi2html: Change copyright header to refer to version
19903         3 of the GNU General Public License and to point readers at the
19904         COPYING3 file and the FSF's license web page.
19905         * config/vax/linux.h: Likewise.
19906
19907 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19908
19909         * config/i386/i386.md (cmpcc): New.
19910         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
19911         (sync_compare_and_swap_cc*): Delete.
19912
19913         * config/s390/s390.c (s390_compare_emitted): Remove.
19914         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
19915         s390_compare_emitted used to be handled.  Assert that modes match.
19916         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
19917         refer to sync_compare_and_swap_ccsi.
19918         * config/s390/s390.h (s390_compare_emitted): Remove.
19919         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
19920         instead of s390_compare_emitted.
19921         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
19922         instead of s390_compare_emitted.
19923         * config/s390/s390.md (cmpcc): New.
19924         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
19925         CC_REGNUM, do not pretend it's set.
19926         (sync_compare_and_swap_cc*): Delete.
19927         * config/s390/predicates.md (cc_reg_operand): New.
19928
19929         * expr.c (sync_compare_and_swap_cc): Delete.
19930         * optabs.h (sync_compare_and_swap_cc): Delete.
19931         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
19932         is being used with can_compare_p.
19933         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
19934         (find_cc_set): New.
19935         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
19936         look for a MODE_CC set instead.  Use emit_store_flag.
19937         (expand_compare_and_swap_loop): Likewise, with some additional
19938         complication to avoid a force_reg when useless.  Use
19939         emit_cmp_and_jump_insns.
19940         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
19941         * doc/md.texi (sync_compare_and_swap_cc): Merge with
19942         sync_compare_and_swap documentation.
19943
19944 2009-04-09  Jan Hubicka  <jh@suse.cz>
19945
19946         * except.c (find_prev_try): Break out from ....
19947         (duplicate_eh_regions): ... here; properly update prev_try pointers
19948         when duplication part of tree.
19949         (dump_eh_tree): Improve dumping.
19950         (verify_eh_region): New.
19951         (verify_eh_tree): Use it.
19952
19953 2009-04-06  Richard Guenther  <rguenther@suse.de>
19954
19955         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
19956         &ARRAY addresses by adjusting their types and prepending
19957         a conversion.
19958         * tree-cfg.c (verify_gimple_assign_single): Verify that
19959         addresses are correct.
19960
19961 2009-04-09  Richard Guenther  <rguenther@suse.de>
19962
19963         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
19964         indices into an array reference if possible.
19965         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
19966         Fold POINTER_PLUS_EXPR statements with invariant address.
19967
19968 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
19969
19970         PR target/39634
19971         * config.gcc (powerpc64-*-linux*): Always build biarch.
19972
19973 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
19974
19975         PR c/39613
19976         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
19977         it and pedwarn if this results in an INTEGER_CST.
19978
19979 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19980
19981         * doc/install.texi: Update minimum GMP version.  Remove obsolete
19982         text in MPFR section.
19983
19984 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
19985
19986         * dwarf2out.c (class_scope_p): New static inline.
19987         (class_or_namespace_scope_p): Use it.
19988         (gen_variable_die): Use DW_TAG_member tag for static data member
19989         declarations instead of DW_TAG_variable.
19990
19991         PR middle-end/39573
19992         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
19993         variables.
19994
19995 2009-04-08  Richard Guenther  <rguenther@suse.de>
19996
19997         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
19998         valueize random data.
19999
20000 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
20001
20002         * config.gcc (aix tm_file):  Add aix-stdint.h.
20003         (aix tm clause use_gcc_stdint):  Set to wrap.
20004         * config/rs6000/aix-stdint.h:  New file.
20005
20006 2009-04-08  Richard Guenther  <rguenther@suse.de>
20007
20008         PR middle-end/36291
20009         * tree-dfa.c (add_referenced_var): Do not recurse into
20010         global initializers.
20011         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
20012         exposed variables.
20013         (fold_const_aggregate_ref): Likewise.
20014
20015 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20016
20017         * recog.c (ordered_comparison_operator): New.
20018         * gensupport.c (std_preds): Add it.
20019         * doc/md.texi (Machine-Independent Predicates): Document it.
20020
20021 2009-04-08  Jan Hubicka  <jh@suse.cz>
20022
20023         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
20024         * function.h (rtl_eh): Remove exception_handler_label_map.
20025         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
20026         remove_exception_handler_label, for_each_eh_label_1): Remove.
20027         (rtl_remove_unreachable_regions): Remove.
20028         (convert_from_eh_region_ranges): Do not remove unreachable regions.
20029         (find_exception_handler_labels): Don't build the hashtable.
20030         (maybe_remove_eh_handler): Remove.
20031         (for_each_eh_label): Rewrite to walk the tree.
20032         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
20033         * except.h (maybe_remove_eh_handler): Remove.
20034         * passes.c (init_optimization_passes): Schedule second EH cleanup
20035         before out-of-ssa.
20036         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
20037         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
20038
20039 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20040
20041         * genoutput.c (validate_optab_operands): New.
20042         (gen_insn, gen_expand): Call it.
20043
20044         * genflags.c (gen_insn): Detect misused iterators.
20045         (main): Pass line_no to gen_insn, exit with status 1 on error.
20046
20047         * genextract.c (line_no): Make global.
20048         (VEC_safe_set_locstr): Change assertion to error message.
20049         (main): Exit with status 1 on error.
20050
20051 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
20052
20053         PR c/39614
20054         PR c/39673
20055         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
20056         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
20057         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
20058         * c-convert.c (convert): Do not call fold on results of conversion
20059         functions when the result is a C_MAYBE_CONST_EXPR.
20060         * c-parser.c (c_parser_postfix_expression): Do not fold condition
20061         of __builtin_choose_expr.
20062         * c-typeck.c (remove_c_maybe_const_expr): New.
20063         (build_unary_op, build_conditional_expr, build_compound_expr,
20064         build_binary_op, c_objc_common_truthvalue_conversion): Call
20065         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
20066         integer operands.
20067
20068 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
20069
20070         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
20071         CODE to produce a new one. Add a prototype to use fold_convert_const
20072
20073 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
20074
20075         PR bootstrap/39660
20076         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
20077         mix declarations and code.
20078
20079 2009-04-08  Ben Elliston  <bje@au.ibm.com>
20080
20081         * gcc.c: Replace `CC' with `GCC' throughout.
20082
20083 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
20084
20085         * doc/invoke.texi: Document Atom support.
20086
20087 2009-04-07  Jason Merrill  <jason@redhat.com>
20088
20089         PR c++/25185
20090         * c-common.h, c-common.c: Add flag_pretty_templates.
20091         * c-opts.c (c_common_handle_option): Set it.
20092         * c.opt: Add -fno-pretty-templates.
20093         * doc/invoke.texi (C++ Dialect Options): Likewise.
20094
20095 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
20096
20097         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
20098         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
20099         (ia64_expand_builtin): Likewise.
20100
20101 2009-04-07  Martin Jambor  <mjambor@suse.cz>
20102
20103         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
20104         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
20105         ADDR_EXPRS are include too.
20106
20107 2009-04-07  Richard Guenther  <rguenther@suse.de>
20108
20109         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
20110         decls are only used if passes as parameters or if they are
20111         local statics and the call is not to a builtin.
20112         (call_may_clobber_ref_p_1): Likewise.
20113
20114 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20115
20116         * expr.c (do_store_flag): Remove last argument.  Simplify code
20117         to avoid duplication of tests already done by can_compare_p.
20118         (expand_expr_real_1): Adjust caller.
20119
20120 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20121
20122         * optabs.c (can_compare_p): Test the predicate of a
20123         cbranch and cstore pattern.
20124
20125 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20126
20127         * expr.c (convert_move): Use emit_store_flag instead of
20128         "emulating" it.
20129
20130 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20131
20132         * config/i386/i386.c (ix86_compare_emitted): Remove.
20133         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
20134         ix86_compare_op0 like ix86_compare_emitted used to be handled.
20135         * config/i386/i386.h (ix86_compare_emitted): Remove.
20136         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
20137         instead of ix86_compare_emitted.
20138         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
20139
20140 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
20141
20142         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
20143         Add t-sysroot-suffix to tmake_file.
20144         * config/print-sysroot-suffix.sh: New file.
20145         * config/t-sysroot-suffix: New file.
20146
20147 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20148
20149         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
20150         as the latter produces a warning when the target does not support
20151         infinity.
20152
20153 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20154
20155         * dfp.c: Replace type punning assignments with memcpy throughout.
20156         * Makefile.in (dfp.o-warn): Remove.
20157
20158 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
20159
20160         PR target/39634
20161         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
20162         Include soft-fp/t-softfp after rs6000/t-linux64.
20163
20164 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
20165
20166         * stor-layout.c (set_sizetype): Use the full precision of their
20167         machine mode for bitsize types.
20168
20169 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
20170
20171         * config/i386/i386.md: Revert 2 accidental checkins.
20172
20173 2009-04-06  Joey Ye  <joey.ye@intel.com>
20174             Xuepeng Guo  <xuepeng.guo@intel.com>
20175             H.J. Lu  <hongjiu.lu@intel.com>
20176
20177         Atom pipeline model, tuning and insn selection.
20178         * config.gcc (atom): Add atom config options and target.
20179
20180         * config/i386/atom.md: New.
20181
20182         * config/i386/i386.c (atom_cost): New cost.
20183         (m_ATOM): New macro flag.
20184         (initial_ix86_tune_features): Set m_ATOM.
20185         (x86_accumulate_outgoing_args): Likewise.
20186         (x86_arch_always_fancy_math_387): Likewise.
20187         (processor_target): Add Atom cost.
20188         (cpu_names): Add Atom cpu name.
20189         (override_options): Set Atom ISA.
20190         (ix86_issue_rate): New case PROCESSOR_ATOM.
20191         (ix86_adjust_cost): Likewise.
20192
20193         * config/i386/i386.h (TARGET_ATOM): New target macro.
20194         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
20195         (TARGET_OPT_AGU): New target option.
20196         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
20197         (processor_type): Add PROCESSOR_ATOM.
20198
20199         * config/i386/i386.md (cpu): Add new value "atom".
20200         (use_carry, movu): New attr.
20201         (atom.md): Include atom.md.
20202         (adddi3_carry_rex64): Set attr "use_carry".
20203         (addqi3_carry): Likewise.
20204         (addhi3_carry): Likewise.
20205         (addsi3_carry): Likewise.
20206         (*addsi3_carry_zext): Likewise.
20207         (subdi3_carry_rex64): Likewise.
20208         (subqi3_carry): Likewise.
20209         (subhi3_carry): Likewise.
20210         (subsi3_carry): Likewise.
20211         (x86_movdicc_0_m1_rex64): Likewise.
20212         (*x86_movdicc_0_m1_se): Likewise.
20213         (x86_movsicc_0_m1): Likewise.
20214         (*x86_movsicc_0_m1_se): Likewise.
20215         (*adddi_1_rex64): Emit add insn as much as possible.
20216         (*addsi_1): Likewise.
20217         (return_internal): Set atom_unit.
20218         (return_internal_long): Likewise.
20219         (return_pop_internal): Likewise.
20220         (*rcpsf2_sse): Set atom_sse_attr attr.
20221         (*qrt<mode>2_sse): Likewise.
20222         (*prefetch_sse): Likewise.
20223
20224         * config/i386/i386-c.c (ix86_target_macros_internal): New case
20225         PROCESSOR_ATOM.
20226         (ix86_target_macros_internal): Likewise.
20227
20228         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
20229         (*prefetch_sse_rex): Likewise.
20230         (sse_rcpv4sf2): Likewise.
20231         (sse_vmrcpv4sf2): Likewise.
20232         (sse_sqrtv4sf2): Likewise.
20233         (<sse>_vmsqrt<mode>2): Likewise.
20234         (sse_ldmxcsr): Likewise.
20235         (sse_stmxcsr): Likewise.
20236         (*sse_sfence): Likewise.
20237         (sse2_clflush): Likewise.
20238         (*sse2_mfence): Likewise.
20239         (*sse2_lfence): Likewise.
20240         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
20241         (<sse>_movup<ssemodesuffixf2c>): Likewise.
20242         (avx_movdqu<avxmodesuffix>): Likewise.
20243         (avx_lddqu<avxmodesuffix>): Likewise.
20244         (sse2_movntv2di): Change attr "type" to "ssemov".
20245         (sse2_movntsi): Likewise.
20246         (rsqrtv8sf2): Change attr "type" to "sseadd".
20247         (sse3_addsubv2df3): Set attr "atom_unit".
20248         (sse3_h<plusminus_insn>v4sf3): Likewise.
20249         (*sse2_pmaddwd): Likewise.
20250         (*vec_extractv2di_1_rex64): Likewise.
20251         (*vec_extractv2di_1_avx): Likewise.
20252         (sse2_psadbw): Likewise.
20253         (ssse3_phaddwv8hi3): Likewise.
20254         (ssse3_phaddwv4hi3): Likewise.
20255         (ssse3_phadddv4si3): Likewise.
20256         (ssse3_phadddv2si3): Likewise.
20257         (ssse3_phaddswv8hi3): Likewise.
20258         (ssse3_phaddswv4hi3): Likewise.
20259         (ssse3_phsubwv8hi3): Likewise.
20260         (ssse3_phsubwv4hi3): Likewise.
20261         (ssse3_phsubdv4si3): Likewise.
20262         (ssse3_phsubdv2si3): Likewise.
20263         (ssse3_phsubswv8hi3): Likewise.
20264         (ssse3_phsubswv4hi3): Likewise.
20265         (ssse3_pmaddubsw128): Likewise.
20266         (sse3_pmaddubsw: Likewise.
20267         (ssse3_palignrti): Likewise.
20268         (ssse3_palignrdi): Likewise.
20269
20270 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
20271
20272         * doc/install.texi (Specific): Fix two cross-references to MinGW.
20273
20274 2009-04-06  Richard Guenther  <rguenther@suse.de>
20275
20276         PR tree-optimization/28868
20277         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
20278         of which PHI results we inserted.
20279         (insert_into_preds_of_block): Record inserted PHIs.
20280         (eliminate): Eliminate redundant PHI nodes.
20281         (init_pre): Init inserted_phi_names.
20282
20283 2009-04-06  Richard Guenther  <rguenther@suse.de>
20284
20285         PR tree-optimization/39643
20286         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
20287         IMAGPART_EXPRs of complex constants.
20288         (execute_fold_all_builtins): If we folded a call queue
20289         TODO_update_address_taken.
20290
20291 2009-04-06  Jan Hubicka  <jh@suse.cz>
20292
20293         PR middle-end/39659
20294         * except.c (remove_unreachable_regions): Propagate may_contain_throw
20295         flag.
20296
20297 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
20298
20299         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
20300         delay slot.
20301         (ic_invalidate_array): Likewise.
20302
20303 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
20304
20305         * calls.c (emit_library_call_value_1): Fix a problem with parameter
20306         alignment for library calls.
20307
20308 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
20309
20310         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
20311         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
20312         * config/i386/mingw-stdint.h:  New file.
20313
20314 2009-04-05  Richard Guenther  <rguenther@suse.de>
20315
20316         PR tree-optimization/39648
20317         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
20318         our &A vs. &A[0] IL deficiencies.
20319
20320 2009-04-04  Jan Hubicka  <jh@suse.cz>
20321
20322         * except.c (sjlj_find_directly_reachable_regions): Be ready for
20323         removed toplevel regions.
20324         (sjlj_mark_call_sites): Likewise.
20325
20326 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
20327
20328         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
20329         (cygwin tm clause use_gcc_stdint):  Set to wrap.
20330         * config/i386/cygwin-stdint.h:  New file.
20331
20332 2009-04-04  Richard Guenther  <rguenther@suse.de>
20333
20334         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20335         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20336         single-argument PHIs if we are in loop-closed SSA form.
20337         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20338         for the pre-condition.
20339         (slpeel_tree_peel_loop_to_edge): Likewise.
20340         (vect_build_loop_niters): Take an optional sequence to append stmts.
20341         (vect_generate_tmps_on_preheader): Likewise.
20342         (vect_do_peeling_for_loop_bound): Take extra guards for the
20343         pre-condition.
20344         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
20345         the cost model check.
20346         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20347         guards if we are going to peel.  Do not apply versioning in that case.
20348         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20349         (vect_do_peeling_for_loop_bound): Likewise.
20350         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20351         loop bound only record extra pre-conditions, do not apply loop
20352         versioning.
20353
20354 2009-04-04  Richard Guenther  <rguenther@suse.de>
20355
20356         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20357         renaming code.
20358
20359 2009-04-04  Jan Hubicka  <jh@suse.cz>
20360
20361         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20362         last_basic_block for size of bb->index indexed array.
20363         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20364         compute_out, link_btr_uses, build_btr_def_use_webs,
20365         build_btr_def_use_webs, migrate_btr_defs): Likewise.
20366
20367 2009-04-04  Jan Hubicka  <jh@suse.cz>
20368
20369         * except.c (remove_eh_handler_and_replace): Break out from ...
20370         (remove_eh_handler): ... here.
20371         (bring_to_root): New function.
20372         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20373         handled ones, bring others to root of tree.
20374
20375 2009-04-04  Jan Hubicka  <jh@suse.cz>
20376
20377         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20378         (all_phis_safe_to_merge): New function.
20379         (update_info): New structure.
20380         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20381         (cleanup_empty_eh): Update SSA if possible.
20382
20383 2009-04-04  Richard Guenther  <rguenther@suse.de>
20384
20385         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20386         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20387         (append_vuse): Likewise.
20388
20389 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
20390
20391         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20392         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20393         instead of REG_UNSAVED for DW_CFA_undefined.
20394         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20395         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20396         outermost frame.
20397
20398 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
20399
20400         PR target/39501
20401         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20402         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
20403         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
20404
20405 2009-04-04  Richard Guenther  <rguenther@suse.de>
20406
20407         PR tree-optimization/8781
20408         PR tree-optimization/37892
20409         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20410         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20411         (valueize_refs): Call it for *& valueizations.
20412         (shared_reference_ops_from_ref): Rename to ...
20413         (valueize_shared_reference_ops_from_ref): ... this and valueize.
20414         (shared_reference_ops_from_call): Rename to ...
20415         (valueize_shared_reference_ops_from_call): ... this and valueize.
20416         (vn_reference_lookup): Update.
20417         (visit_reference_op_call): Likewise.
20418         * tree-ssa-pre.c (phi_translate_1): Fold *&.
20419         (eliminate): Value-replace the call address in call statements.
20420
20421 2009-04-04  Richard Guenther  <rguenther@suse.de>
20422
20423         PR tree-optimization/39636
20424         * tree-ssa-forwprop.c
20425         (forward_propagate_addr_into_variable_array_index): Check for
20426         GIMPLE_ASSIGN before accessing the rhs code.
20427
20428 2009-04-03  Jason Merrill  <jason@redhat.com>
20429
20430         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20431
20432 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
20433
20434         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20435         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20436         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20437         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20438         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20439         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20440         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20441         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20442         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20443         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20444         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20445         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20446         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20447         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20448         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20449         Use fr_reg_or_fp01_operand instead of fr_register_operand
20450
20451         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20452         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20453         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20454
20455 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
20456
20457         PR rtl-optimization/39607
20458         PR rtl-optimization/39631
20459
20460         Revert:
20461
20462         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
20463         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20464         instead of DF_LR_OUT.
20465         * ira-lives.c (process_bb_node_lives): Ditto.
20466         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20467         instead of DF_LR_{OUT,IN}.
20468         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20469         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20470
20471 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
20472
20473         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20474         (execute_lower_omp): Always run but take the short way out if -fopenmp
20475         is not given.
20476         (gate_lower_omp): Remove, forcing the pass manager to always run the
20477         pass and always set PROP_gimple_lomp.
20478         (pass_lower_omp): Remove gate function.
20479         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20480         PROP_trees.  Instead, require it.
20481         * ipa-cp.c (pass_ipa_cp): Likewise.
20482         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20483         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20484         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20485         and PROP_gimple_leh.
20486
20487 2009-04-03  Richard Guenther  <rguenther@suse.de>
20488
20489         PR middle-end/13146
20490         PR tree-optimization/23940
20491         PR tree-optimization/33237
20492         PR middle-end/33974
20493         PR middle-end/34093
20494         PR tree-optimization/36201
20495         PR tree-optimization/36230
20496         PR tree-optimization/38049
20497         PR tree-optimization/38207
20498         PR tree-optimization/38230
20499         PR tree-optimization/38301
20500         PR tree-optimization/38585
20501         PR middle-end/38895
20502         PR tree-optimization/38985
20503         PR tree-optimization/39299
20504         * tree-ssa-structalias.h: Remove.
20505         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
20506         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
20507         (struct vuse_element_d): Remove.
20508         (struct vuse_vec_d): Likewise.
20509         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
20510         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
20511         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
20512         VUSE_ELEMENT_VAR): Likewise.
20513         (struct voptype_d): Likewise.
20514         (NUM_VOP_FREE_BUCKETS): Likewise.
20515         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
20516         (struct stmt_operands_d): Remove.
20517         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
20518         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
20519         VDEF_NUM, VDEF_VECT): Likewise.
20520         (copy_virtual_operands): Remove.
20521         (operand_build_cmp): Likewise.
20522         (create_ssa_artificial_load_stmt): Likewise.
20523         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
20524         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
20525         vuse_index and mayuse_index members.  Pack and move done and iter_type
20526         members to the front.
20527         (SSA_OP_VMAYUSE): Remove.
20528         (SSA_OP_VIRTUAL_USES): Adjust.
20529         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
20530         (unlink_stmt_vdef): Declare.
20531         (add_to_addressable_set): Remove.
20532         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
20533         (vrp_visit_stmt): Likewise.
20534         * doc/tree-ssa.texi (Alias analysis): Update.
20535         * doc/invoke.texi (max-aliased-vops): Remove docs.
20536         (avg-aliased-vops): Likewise.
20537         * tree-into-ssa.c (syms_to_rename): Remove.
20538         (need_to_update_vops_p): Likewise.
20539         (need_to_initialize_update_ssa_p): Rename to ...
20540         (update_ssa_initialized_fn): ... this.  Track function we are
20541         initialized for.
20542         (symbol_marked_for_renaming): Simplify.
20543         (add_new_name_mapping): Do not set need_to_update_vops_p.
20544         (dump_currdefs): Use SYMS_TO_RENAME.
20545         (rewrite_update_stmt): Always walk all uses/defs.
20546         (dump_update_ssa): Adjust.
20547         (init_update_ssa): Take function argument.  Track what we are
20548         initialized for.
20549         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
20550         (create_new_def_for): Initialize for cfun, assert we are initialized
20551         for cfun.
20552         (mark_sym_for_renaming): Simplify.
20553         (mark_set_for_renaming): Do not initialize update-ssa.
20554         (need_ssa_update_p): Simplify.  Take function argument.
20555         (name_mappings_registered_p): Assert we ask for the correct function.
20556         (name_registered_for_update_p): Likewise.
20557         (ssa_names_to_replace): Likewise.
20558         (release_ssa_name_after_update_ssa): Likewise.
20559         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
20560         (dump_decl_set): Do not print a newline.
20561         (debug_decl_set): Do it here.
20562         (dump_update_ssa): And here.
20563         * tree-ssa-loop-im.c (move_computations): Adjust.
20564         (movement_possibility): Likewise.
20565         (determine_max_movement): Likewise.
20566         (gather_mem_refs_stmt): Likewise.
20567         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
20568         or NAME_MEMORY_TAG.
20569         * tree-complex.c (update_all_vops): Remove.
20570         (expand_complex_move): Adjust.
20571         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
20572         Simplify test for memory referencing statement.  Exclude
20573         non-invariant ADDR_EXPRs.
20574         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
20575         * tree-loop-distribution.c (generate_memset_zero): Adjust.
20576         (rdg_flag_uses): Likewise.
20577         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
20578         related code.
20579         (tree_optimize_tail_calls_1): Also split the
20580         edge from the entry block if we have degenerate PHI nodes in
20581         the first basic block.
20582         * tree.c (init_ttree): Remove memory-tag related code.
20583         (tree_code_size): Likewise.
20584         (tree_node_structure): Likewise.
20585         (build7_stat): Re-write to be build6_stat.
20586         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
20587         (SSA_VAR_P): Adjust.
20588         (struct tree_memory_tag): Remove.
20589         (struct tree_memory_partition_tag): Likewise.
20590         (union tree_node): Adjust.
20591         (build7): Re-write to be build6.
20592         * tree-pass.h (pass_reset_cc_flags): Remove.
20593         (TODO_update_address_taken): New flag.
20594         (pass_simple_dse): Remove.
20595         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
20596         * params.h (MAX_ALIASED_VOPS): Remove.
20597         (AVG_ALIASED_VOPS): Likewise.
20598         * omp-low.c (expand_omp_taskreg): Update SSA form.
20599         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
20600         aliases the lhs in a copy stmt.
20601         * tree-ssa-dse.c (struct address_walk_data): Remove.
20602         (memory_ssa_name_same): Likewise.
20603         (memory_address_same): Likewise.
20604         (get_kill_of_stmt_lhs): Likewise.
20605         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
20606         unused stores.  Look through PHI nodes into post-dominated regions.
20607         (dse_optimize_stmt): Simplify.  Properly remove stores.
20608         (tree_ssa_dse): Compute dominators.
20609         (execute_simple_dse): Remove.
20610         (pass_simple_dse): Likewise.
20611         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
20612         gimple_loaded_syms and gimple_stored_syms computation.
20613         * toplev.c (dump_memory_report): Dump alias and pta stats.
20614         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
20615         (vn_reference_eq): Likewise.
20616         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
20617         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
20618         valueize_vuses): Remove.
20619         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
20620         (get_def_ref_stmt_vuse): ... this.
20621         (vn_reference_lookup_2): New function.
20622         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
20623         walking equivalent vuses.  Simplify.
20624         (vn_reference_lookup): Likewise.
20625         (vn_reference_insert): Likewise.
20626         (vn_reference_insert_pieces): Likewise.
20627         (visit_reference_op_call): Simplify.
20628         (visit_reference_op_load): Likewise.
20629         (visit_reference_op_store): Likewise.
20630         (init_scc_vn): Remove shared_lookup_vuses initialization.
20631         (free_scc_vn): Remove shared_lookup_vuses freeing.
20632         (sort_vuses, sort_vuses_heap): Remove.
20633         (get_ref_from_reference_ops): Export.
20634         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
20635         vector with single vuse pointer.
20636         (vn_reference_lookup_pieces, vn_reference_lookup,
20637         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
20638         (shared_vuses_from_stmt): Remove.
20639         (get_ref_from_reference_ops): Declare.
20640         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
20641         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20642         memory-tag related code.
20643         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
20644         (likely_value): Add comment, skip static-chain of call statements.
20645         (surely_varying_stmt_p): Adjust.
20646         (gimplify_and_update_call_from_tree): Likewise.
20647         (execute_fold_all_builtins): Do not rebuild alias info.
20648         (gimplify_and_update_call_from_tree): Properly update VOPs.
20649         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
20650         (copy_ref_info): Remove memory-tag related code.
20651         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
20652         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
20653         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
20654         computation.
20655         * tree-ssa-dom.c (gimple_p): Remove typedef.
20656         (eliminate_redundant_computations): Adjust.
20657         (record_equivalences_from_stmt): Likewise.
20658         (avail_expr_hash): Likewise.
20659         (avail_expr_eq): Likewise.
20660         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
20661         (stmt_makes_single_load): Likewise.
20662         (stmt_makes_single_store): Likewise.
20663         * tree-ssa-alias.c: Rewrite completely.
20664         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
20665         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
20666         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
20667         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
20668         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
20669         Remove public functions.
20670         (pass_reset_cc_flags): Remove.
20671         (pass_build_alias): Move ...
20672         * tree-ssa-structalias.c (pass_build_alias): ... here.
20673         * tree-ssa-alias.c (may_be_aliased): Move ...
20674         * tree-flow-inline.h (may_be_aliased): ... here.
20675         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
20676         count_uses_and_derefs): Move ...
20677         * gimple.c: ... here.
20678         * gimple.h (count_uses_and_derefs): Declare.
20679         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
20680         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
20681         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
20682         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
20683         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
20684         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
20685         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
20686         New functions.
20687         * tree-dfa.c (refs_may_alias_p): Move ...
20688         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
20689         * tree-ssa-alias.h: New file.
20690         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
20691         (statement_sink_location): Likewise.
20692         * opts.c (decode_options): Do not adjust max-aliased-vops or
20693         avg-aliased-vops values.
20694         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
20695         (TV_CALL_CLOBBER): Likewise.
20696         (TV_FLOW_SENSITIVE): Likewise.
20697         (TV_FLOW_INSENSITIVE): Likewise.
20698         (TV_MEMORY_PARTITIONING): Likewise.
20699         (TV_ALIAS_STMT_WALK): New timevar.
20700         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
20701         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
20702         (get_address_description): Remove memory-tag related code.
20703         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
20704         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
20705         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
20706         and immediate uses in statements.  Document.
20707         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
20708         (dump_symbols): Remove.
20709         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
20710         * alias.c (get_deref_alias_set): New function split out from ...
20711         (get_alias_set): ... here.
20712         * alias.h (get_deref_alias_set): Declare.
20713         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
20714         type parameter.  Remove restrict pointer handling.  Create a
20715         ref-all pointer in case type-based alias sets do not conflict.
20716         (vect_analyze_data_refs): Remove SMT related code.
20717         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
20718         (vectorizable_load): Likewise.
20719         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
20720         (DR_SYMBOL_TAG, DR_VOPS): Remove.
20721         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
20722         Ignore vops and SMTs.
20723         (dr_analyze_alias): Likewise..
20724         (free_data_ref): Likewise.
20725         (create_data_ref): Likewise.
20726         (analyze_all_data_dependences): Likewise.
20727         (get_references_in_stmt): Adjust.
20728         * tree-flow-inline.h (gimple_aliases_computed_p,
20729         gimple_addressable_vars, gimple_call_clobbered_vars,
20730         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
20731         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
20732         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
20733         gimple_mem_ref_stats): Remove.
20734         (gimple_vop): New function.
20735         (op_iter_next_use): Remove vuses and mayuses cases.
20736         (op_iter_next_def): Remove vdefs case.
20737         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
20738         (clear_and_done_ssa_iter): Do not set removed fields.
20739         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
20740         Assert we are not iterating over vuses or vdefs if not also
20741         iterating over uses or defs.
20742         (op_iter_init_use): Likewise.
20743         (op_iter_init_def): Likewise.
20744         (op_iter_next_vdef): Remove.
20745         (op_iter_next_mustdef): Likewise.
20746         (op_iter_init_vdef): Likewise.
20747         (compare_ssa_operands_equal): Likewise.
20748         (link_use_stmts_after): Handle vuse operand.
20749         (is_call_used): Use is_call_clobbered.
20750         (is_call_clobbered): Global variables are always call clobbered,
20751         query the call-clobbers bitmap.
20752         (mark_call_clobbered): Ignore global variables.
20753         (clear_call_clobbered): Likewise.
20754         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
20755         virtual operands sanity check.
20756         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
20757         Remove.
20758         (TARGET_MEM_REF): Remove TMR_TAG operand.
20759         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
20760         Remove call-clobber related code.
20761         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
20762         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
20763         partitions or escape reason.
20764         (get_single_def_stmt, get_single_def_stmt_from_phi,
20765         get_single_def_stmt_with_phi): Remove.
20766         (dump_referenced_vars): Tidy.
20767         (get_ref_base_and_extent): Allow bare decls.
20768         (collect_dfa_stats): Adjust.
20769         * graphite.c (rename_variables_in_stmt): Adjust.
20770         (graphite_copy_stmts_from_block): Likewise.
20771         (translate_clast): Likewise.
20772         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
20773         (EXPR_DIES): New.
20774         (translate_vuse_through_block): Use the oracle.
20775         (phi_translate_1): Adjust.
20776         (value_dies_in_block_x): Use the oracle.  Cache the outcome
20777         in EXPR_DIES.
20778         (valid_in_sets): Check if the VUSE for
20779         a REFERENCE is available.
20780         (eliminate): Do not remove stmts during elimination,
20781         instead queue and remove them afterwards.
20782         (do_pre): Do not rebuild alias info.
20783         (pass_pre): Run TODO_rebuild_alias before PRE.
20784         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
20785         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
20786         (mark_all_v_defs_stmt): Remove.
20787         (mark_all_v_defs_seq): Adjust.
20788         (sra_replace): Likewise.
20789         (scalarize_use): Likewise.
20790         (scalarize_copy): Likewise.
20791         (scalarize_init): Likewise.
20792         (scalarize_ldst): Likewise.
20793         (todoflags): Remove.
20794         (tree_sra): Do not rebuild alias info.
20795         (tree_sra_early): Adjust.
20796         (pass_sra): Run TODO_update_address_taken before SRA.
20797         * tree-predcom.c (set_alias_info): Remove.
20798         (prepare_initializers_chain): Do not call it.
20799         (mark_virtual_ops_for_renaming): Adjust.
20800         (mark_virtual_ops_for_renaming_list): Remove.
20801         (initialize_root_vars): Adjust.
20802         (initialize_root_vars_lm): Likewise.
20803         (prepare_initializers_chain): Likewise.
20804         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
20805         (may_propagate_copy_into_stmt): Likewise.
20806         (merge_alias_info): Do nothing for now.
20807         (propagate_tree_value_into_stmt): Adjust.
20808         (stmt_may_generate_copy): Likewise.
20809         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
20810         not mark symbols for renaming.
20811         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
20812         with the same statement, make sure to update the new pointed-to one.
20813         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
20814         call statements, do not mark symbols for renaming.
20815         (mark_operand_necessary): Dump something.
20816         (ref_may_be_aliased): New function.
20817         (mark_aliased_reaching_defs_necessary_1): New helper function.
20818         (mark_aliased_reaching_defs_necessary): Likewise.
20819         (mark_all_reaching_defs_necessary_1): Likewise.
20820         (mark_all_reaching_defs_necessary): Likewise.
20821         (propagate_necessity): Do not process virtual PHIs.  For
20822         non-aliased loads mark all reaching definitions as necessary.
20823         For aliased loads and stores mark the immediate dominating
20824         aliased clobbers as necessary.
20825         (visited): New global static.
20826         (perform_tree_ssa_dce): Free visited bitmap after propagating
20827         necessity.
20828         (remove_dead_phis): Perform simple dead virtual PHI removal.
20829         (remove_dead_stmt): Properly unlink virtual operands when
20830         removing stores.
20831         (eliminate_unnecessary_stmts): Schedule PHI removal after
20832         stmt removal.
20833         * tree-ssa-ter.c (is_replaceable_p): Adjust.
20834         (process_replaceable): Likewise.
20835         (find_replaceable_in_bb): Likewise.
20836         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
20837         based on the single gimple vop.
20838         (verify_flow_insensitive_alias_info): Remove.
20839         (verify_flow_sensitive_alias_info): Likewise.
20840         (verify_call_clobbering): Likewise.
20841         (verify_memory_partitions): Likewise.
20842         (verify_alias_info): Likewise.
20843         (verify_ssa): Adjust..
20844         (execute_update_addresses_taken): Export.  Update SSA
20845         manually.  Optimize only when optimizing.  Use a local bitmap.
20846         (pass_update_address_taken): Remove TODO_update_ssa, add
20847         TODO_dump_func.
20848         (pass_update_address_taken): Just use TODO_update_address_taken.
20849         (init_tree_ssa): Do not initialize addressable_vars.
20850         (verify_ssa): Verify new VUSE / VDEF properties.
20851         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
20852         Do not call verify_alias_info.
20853         (delete_tree_ssa): Clear the VUSE, VDEF operands.
20854         Do not free the loaded and stored syms bitmaps.  Reset the escaped
20855         and callused solutions.  Do not free addressable_vars.
20856         Remove memory-tag related code.
20857         (warn_uninitialized_var): Aliases are always available.
20858         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
20859         * lambda-code.c (can_put_in_inner_loop): Adjust.
20860         (can_put_after_inner_loop): Likewise.
20861         (perfect_nestify): Likewise.
20862         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
20863         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
20864         (vectorizable_conversion): Do not mark symbols for renaming.
20865         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
20866         (expand_call_inline): Unlink the calls virtual operands before
20867         replacing it.
20868         (tree_function_versioning): Do not call update_ssa if we are not
20869         updating clones.  Simplify.
20870         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
20871         (propagate_with_phi): Likewise..
20872         * tree-outof-ssa.c (create_temp): Remove memory tag and call
20873         clobber code.  Assert we are not aliased or global.
20874         * tree-flow.h: Include tree-ssa-alias.h
20875         (enum escape_type): Remove.
20876         (struct mem_sym_stats_d): Likewise.
20877         (struct mem_ref_stats_d): Likewise.
20878         (struct gimple_df): Add vop member.  Remove global_var,
20879         call_clobbered_vars, call_used_vars, addressable_vars,
20880         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
20881         escaped and callused members.
20882         (struct ptr_info_def): Remove all members, add points-to solution
20883         member pt.
20884         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
20885         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
20886         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
20887         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
20888         (tree-ssa-alias.o): Likewise.
20889         (toplev.o): Add tree-ssa-alias.h
20890         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
20891         * gimple.c (gimple_set_bb): Fix off-by-one error.
20892         (is_gimple_reg): Do not handle memory tags.
20893         (gimple_copy): Also copy virtual operands.
20894         Delay updating the statement.  Do not reset loaded and stored syms.
20895         (gimple_set_stored_syms): Remove.
20896         (gimple_set_loaded_syms): Likewise.
20897         (gimple_call_copy_skip_args): Copy the virtual operands
20898         and mark the new statement modified.
20899         * tree-ssa-structalias.c (may_alias_p): Remove.
20900         (set_uids_in_ptset): Take the alias set to prune with as
20901         parameter.  Fold in the alias test of may_alias_p.
20902         (compute_points_to_sets): Compute whether a ptr is dereferenced
20903         in a local sbitmap.
20904         (process_constraint): Deal with &ANYTHING on the lhs, reject all
20905         other ADDRESSOF constraints on the lhs.
20906         (get_constraint_for_component_ref): Assert that we don't get
20907         ADDRESSOF constraints from the base of the reference.
20908         Properly generate UNKNOWN_OFFSET for DEREF if needed.
20909         (struct variable_info): Remove collapsed_to member.
20910         (get_varinfo_fc): Remove.
20911         (new_var_info): Do not set collapsed_to.
20912         (dump_constraint): Do not follow cycles.
20913         (dump_constraint_graph): Likewise.
20914         (build_pred_graph): Likewise.
20915         (build_succ_graph): Likewise.
20916         (rewrite_constraints): Likewise.
20917         (do_simple_structure_copy): Remove.
20918         (do_rhs_deref_structure_copy): Remove.
20919         (do_lhs_deref_structure_copy): Remove.
20920         (collapse_rest_of_var): Remove.
20921         (do_structure_copy): Re-implement.
20922         (pta_stats): New global variable.
20923         (dump_pta_stats): New function.
20924         (struct constraint_expr): Make offset signed.
20925         (UNKNOWN_OFFSET): Define special value.
20926         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
20927         (solution_set_expand): New helper function split out from ...
20928         (do_sd_constraint): ... here.
20929         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
20930         (do_ds_constraint): Likewise.
20931         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
20932         and CALLUSED = *CALLUSED.
20933         (set_union_with_increment): Make inc argument signed.
20934         (type_safe): Remove.
20935         (get_constraint_for_ptr_offset): Handle unknown and negative
20936         constant offsets.
20937         (first_vi_for_offset): Handle offsets before start.  Bail
20938         out early for offsets beyond the variable extent.
20939         (first_or_preceding_vi_for_offset): New function.
20940         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
20941         Together with ESCAPED = *ESCAPED this properly computes reachability.
20942         (find_what_var_points_to): New function.
20943         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
20944         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
20945         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
20946         pt_solutions_intersect): New functions.
20947         (compute_call_used_vars): Remove.
20948         (compute_may_aliases): New main entry into PTA computation.
20949         * gimple.h (gimple_p): New typedef.
20950         (struct gimple_statement_base): Remove references_memory_p.
20951         (struct gimple_statement_with_memory_ops_base): Remove
20952         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
20953         members.
20954         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
20955         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
20956         gimple_set_references_memory): Remove.
20957         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
20958         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
20959         New functions.
20960         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
20961         (verify_expr): Allow RESULT_DECL.
20962         (gimple_duplicate_bb): Do not copy virtual operands.
20963         (gimple_duplicate_sese_region): Adjust.
20964         (gimple_duplicate_sese_tail): Likewise.
20965         (mark_virtual_ops_in_region): Remove.
20966         (move_sese_region_to_fn): Do not call it.
20967         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
20968         and pass_simple_dse.
20969         (execute_function_todo): Handle TODO_update_address_taken,
20970         call execute_update_addresses_taken for TODO_rebuild_alias.
20971         (execute_todo): Adjust.
20972         (execute_one_pass): Init dump files early.
20973         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
20974         call-clobbered.
20975         (create_general_new_stmt): Clear vops.
20976         * tree-ssa-reassoc.c (get_rank): Adjust.
20977         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
20978         symbols for renaming.
20979         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
20980         (PARAM_AVG_ALIASED_VOPS): Likewise.
20981         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
20982         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
20983         * tree-ssa-operands.c: Simplify for new virtual operand representation.
20984         (operand_build_cmp, copy_virtual_operands,
20985         create_ssa_artificial_load_stmt, add_to_addressable_set,
20986         gimple_add_to_addresses_taken): Remove public functions.
20987         (unlink_stmt_vdef): New function.
20988
20989 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
20990
20991         * config.gcc (powerpc-*-linux*): Merge variants.
20992
20993 2009-04-02  Chao-ying Fu  <fu@mips.com>
20994             James Grosbach  <james.grosbach@microchip.com>
20995
20996         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
20997         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
20998         cop0_sp_offset.
20999         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
21000         keep_interrupts_masked_p, use_debug_exception_return_p.
21001         (mips_attribute_table): Add interrupt, use_shadow_register_set,
21002         keep_interrupts_masked, use_debug_exception_return.
21003         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
21004         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
21005         New functions.
21006         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
21007         (mips_print_operand): Process COP0 registers to print $0 .. $31
21008         correctly for GAS to process.
21009         (mips_interrupt_extra_call_saved_reg_p): New function.
21010         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
21011         extra registers.
21012         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
21013         (mips_compute_frame_info): Add supports for interrupt context that
21014         includes doubleword accumulators and COP0 registers.
21015         (mips_for_each_saved_acc): New function.
21016         (mips_for_each_saved_gpr_and_fpr): Change the function name from
21017         mips_for_each_saved_reg.
21018         (mips_save_reg): Save accumulators.
21019         (mips_kernel_reg_p): A new for_each_rtx callback.
21020         (mips_expand_prologue): Support interrupt handlers.
21021         (mips_restore_reg): Restore accumulators.
21022         (mips_expand_epilogue): Support interrupt handlers.
21023         (mips_can_use_return_insn): Return false for interrupt handlers.
21024         (mips_epilogue_uses): New function.
21025         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
21026         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
21027         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
21028         cop0_move): New instructions.
21029         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
21030         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
21031         defines.
21032         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
21033         New defines.
21034         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
21035         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
21036         interrupt handlers, we use K0 as the temporary register.
21037         (EPILOGUE_USES): Change to a function call.
21038         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
21039         handlers, we use K0 as the temporary register.
21040
21041         * doc/extend.texi (Function Attributes): Document interrupt,
21042         use_shadow_register_set, keep_interrupts_masked,
21043         use_debug_exception_return for MIPS attributes.
21044
21045 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21046
21047         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
21048         Remove a number of t-files from tmake_file.
21049         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
21050         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
21051         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
21052         target_prototype, not TARGET_PROTOTYPE.
21053         (LINK_OS_GNU_SPEC): Define.
21054         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
21055         and darwin-ldoubdle.c.
21056
21057 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
21058
21059         PR driver/39293
21060         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
21061         (cpp_options): Ditto.
21062         (default_compilers): Ditto.
21063         (display_help): Ditto.
21064         (process_command): Ditto.
21065         (do_spec_1): Ditto.
21066         (set_input): Use lbasename instead of duplicate code.
21067         (save_temps_prefix): New static for -save-temps=obj.
21068         (save_temps_length): Ditto.
21069
21070         * doc/invoke.texi (-save-temps=obj): Document new variant to
21071         -save-temps switch.
21072
21073 2009-04-02  Jeff Law  <law@redhat.com>
21074
21075         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
21076         variable.
21077
21078 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21079
21080         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
21081         * configure: Regenerated.
21082
21083 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21084
21085         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
21086         share the argument list.
21087
21088 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21089
21090         Merge
21091
21092         2009-02-12  Diego Novillo  <dnovillo@google.com>
21093
21094         * varpool.c (debug_varpool): New.
21095         * cgraph.h (debug_varpool): Declare.
21096
21097 2009-04-02  Jan Hubicka  <jh@suse.cz>
21098
21099         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
21100         pass.
21101
21102 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21103
21104         * config/i386/i386.c (ix86_abi): Move initialization to ...
21105         (override_options): Here.
21106
21107 2009-04-02  Christian Bruel  <christian.bruel@st.com>
21108
21109         * config/sh/sh.c (sh_dwarf_register_span): New function.
21110         (TARGET_DWARF_REGISTER_SPAN): Define.
21111         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
21112
21113 2009-04-02  Ira Rosen  <irar@il.ibm.com>
21114
21115         PR tree-optimization/39595
21116         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
21117         interleaved loads group is not  greater than the SLP group size.
21118
21119 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21120
21121         * builtins.c (is_builtin_name): New.
21122         (called_as_built_in): Use is_builtin_name.
21123         * tree.h (is_builtin_name): New.
21124         * varasm.c (incorporeal_function_p): Use is_builtin_name
21125
21126 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
21127
21128         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
21129
21130 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
21131
21132         PR c++/26693
21133         * c-decl.c (clone_underlying_type): Move this ...
21134         * c-common.c (set_underlying_type): ... here.
21135         Also, make sure the function properly sets TYPE_STUB_DECL() on
21136         the newly created typedef variant type.
21137         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
21138         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
21139         points.
21140
21141 2009-04-02  Richard Guenther  <rguenther@suse.de>
21142
21143         PR tree-optimization/37221
21144         * tree-flow.h (degenerate_phi_result): Declare.
21145         * tree-ssa-dom.c (degenerate_phi_result): Export.
21146         * tree-scalar-evolution.c (analyze_initial_condition): If
21147         the initial condition is defined by a degenerate PHI node
21148         use the degenerate value.
21149
21150 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
21151
21152         PR rtl-optimization/39588
21153         * combine.c (merge_outer_ops): Do not set the constant when this
21154         is not necessary.
21155         (simplify_shift_const_1): Do not modify it either in this case.
21156
21157 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21158
21159         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
21160         tuning is deprecated if -mtune value is set to an Itanium1 variant.
21161
21162 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
21163
21164         PR c/29027
21165         * c-lex.c (interpret_float): Default (no suffix) is double.
21166
21167 2009-04-1  Xinliang David Li  <davidxl@google.com>
21168
21169         * config/i386/i386.c (legitimate_constant_p): Recognize
21170         all one vector constant.
21171
21172 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21173
21174         * config/vax/vax.c: Add #includes to silence warnings.
21175         Change #include order to silence two warnings.
21176
21177 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21178
21179         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
21180         (ASM_SPEC): Pass -k to the assembler for PIC code.
21181
21182 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21183
21184         * config.gcc: Add vax-*-linux* to the switch.
21185         * config/vax/linux.h: New file. (TARGET_VERSION,
21186         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
21187
21188 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21189
21190         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
21191         Use predicate macros instead of GET_CODE() == foo.
21192         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
21193         ashlsi3, rotrsi3, <unnamed>): Likewise.
21194
21195 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21196
21197         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
21198         jbbccihi, jbbccisi): Remova trailing whitespace.
21199         * config/vax/constraints.md: Likewise.
21200         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
21201         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
21202         * config/vax/predicates.md: Likewise.
21203         * config/vax/vax.c (print_operand_address, vax_output_int_move,
21204         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
21205         * config/vax/vax.h: Likewise.
21206         * config/vax/vax.md (nonlocal_goto): Likewise.
21207
21208 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21209
21210         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
21211         (indirectable_address_p, adjacent_operands_p): Add spaces around
21212         braces.
21213         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
21214
21215 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21216
21217         * config/vax/vax.c (legitimate_constant_address_p,
21218         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
21219         index_term_p, reg_plus_index_p, legitimate_address_p,
21220         vax_mode_dependent_address_p): Update comments to match functions
21221         modified by the recent int->bool conversion.
21222
21223 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21224
21225         * config/vax/builtins.md: Update copyright message.
21226         * config/vax/constraints.md: Likewise.
21227         * config/vax/netbsd-elf.h: Likewise.
21228         * config/vax/predicates.md: Likewise.
21229         * config/vax/vax-protos.h: Likewise.
21230         * config/vax/vax.c: Likewise.
21231         * config/vax/vax.h: Likewise.
21232         * config/vax/vax.md: Likewise.
21233         * config/vax/vax.opt: Likewise.
21234
21235 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21236
21237         * config/vax/builtins.md (ffssi2, ffssi2_internal,
21238         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
21239         * config/vax/constraints.md (B, R): Likewise.
21240         * config/vax/predicates.md (external_memory_operand,
21241         nonimmediate_addsub_di_operand): Likewise.
21242         * config/vax/vax.c (vax_output_int_add): Likewise.
21243         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
21244         untyped_call): Likewise.
21245
21246 2009-04-01  Matt Thomas  <matt@3am-software.com>
21247
21248         * config/vax/predicates.md: New file.
21249         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21250         external_const_operand, nonsymbolic_operand, external_memory_operand,
21251         indirect_memory_operand, indexed_memory_operand,
21252         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21253         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21254         predicate.
21255         * config/vax/constraints.md: New file.
21256         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21257         New constraint.
21258         * config/vax/builtins.md: New file.
21259         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21260         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21261         jbbccisi): Define.
21262         * config/vax/vax.opt (mqmath): Add option.
21263         * config/vax/vax.md (isfx): Extend with DI.
21264         (VAXintQH, VAXintQHSD): Define.
21265         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21266         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21267         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21268         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21269         (movdi): Update constraints and use vax_output_int_move().
21270         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21271         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21272         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
21273         nonlocal_goto): New.
21274         (mov<mode>): Extend accepted operand types.
21275         (subdi3_old): Rename from subdi3, change update constraints and use
21276         a new implementation.
21277         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
21278         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
21279         MOVE_RATIO, CLEAR_RATIO): Define.
21280         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
21281         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
21282         (PRINT_OPERAND): Redefine using a function instead of inlined code.
21283         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
21284         (split_quadword_operands): Make static and really allow variable
21285         splitting.
21286         (print_operand_address): Update for PIC generation.
21287         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
21288         indexable_address_p, fixup_mathdi_operand,
21289         vax_expand_addsub_di_operands, adjacent_operands_p): New.
21290         (vax_float_literal, legitimate_constant_p,
21291         indirectable_constant_address_p, index_term_p,
21292         reg_plus_index_p): Return bool instead of int.
21293         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
21294         where needed.
21295         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
21296         generation.
21297         (vax_output_conditional_branch): Indent.
21298         (legitimate_constant_address_p, indirectable_constant_address_p,
21299         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
21300         vax_mode_dependent_address_p): Return bool instead of int, update for
21301         PIC generation.
21302         * config/vax/vax-protos.h (legitimate_constant_address_p,
21303         legitimate_constant_p, legitimate_address_p,
21304         vax_mode_dependent_address_p): Change declaration to bool.
21305         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
21306         vax_expand_addsub_di_operands, vax_output_int_subtract,
21307         vax_output_movmemsi): Declare.
21308         (split_quadword_operands, vax_float_literal): Delete declaration.
21309         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
21310         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
21311         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
21312         ASM_OUTPUT_DWARF_PCREL): Define.
21313         (ASM_SPEC): Change definition to allow PIC generation.
21314
21315 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
21316
21317         * doc/sourcebuild.texi: Update front-end requirements.
21318
21319 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21320
21321         PR target/39226
21322         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
21323         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
21324         (booldi3_internal3): Use boolean_or_operator instead of
21325         boolean_operator.
21326
21327 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
21328
21329         PR c/39605
21330         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21331         declarator whose size is not an integer constant expression but
21332         folds to an integer constant, then treat it as a constant
21333         subsequently.
21334
21335 2009-04-01  Richard Guenther  <rguenther@suse.de>
21336
21337         * fold-const.c (fold_plusminus_mult_expr): Do not fold
21338         i * 4 + 2 to (i * 2 + 1) * 2.
21339
21340 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21341
21342         PR c/37772
21343         * c-parser.c (c_parser_asm_statement): Skip until close paren and
21344         return if c_parser_asm_string_literal returned NULL.
21345
21346 2009-04-01  Nick Clifton  <nickc@redhat.com>
21347
21348         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21349         already defined.
21350         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21351         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
21352         other typedefs to avoid conflicts with libgcc2.c.  Define labels
21353         to gain 16-bit bit-manipulation functions from libgcc2.c and then
21354         include it.
21355         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
21356         to gain 16-bit trapping arithmetic functions from libgcc2.c and
21357         then include it.
21358
21359 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
21360
21361         * varasm.c (default_function_rodata_section): Declare DOT as
21362         const char*.
21363
21364 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
21365             Andrey Galkin  <agalkin@hypercom.com>
21366
21367         PR/39492
21368         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21369         Make object_name unique for each process.
21370
21371 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21372
21373         PR other/39591
21374         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21375         addressable variables in the parallel that could go out of scope while
21376         running queued tasks.
21377
21378 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
21379
21380         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21381         (CASE_VALUES_THRESHOLD): Redefine.
21382         * config/avr/avr.c (avr_override_options): Remove initialization of
21383         avr_case_values_threshold variable.
21384         (avr_case_values_threshold): Remove variable. Add new function.
21385         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21386         * config/avr/avr.opt (mno-tablejump): Remove option.
21387         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21388
21389 2009-04-01  DJ Delorie  <dj@redhat.com>
21390
21391         * varasm.c (default_function_rodata_section): Don't assume
21392         anything about where the first '.' in the section name is.
21393
21394 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
21395
21396         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21397         rs6000_emit_stack_tie.
21398
21399 2009-03-31  Ian Lance Taylor  <iant@google.com>
21400
21401         * tree-eh.c (tree_remove_unreachable_handlers): Compare
21402         gimple_code with GIMPLE_RESX, not RESX.
21403
21404 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21405
21406         * c-common.c (c_get_ident): New.
21407         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21408
21409 2009-04-01  Ben Elliston  <bje@au.ibm.com>
21410
21411         * config/rs6000/sysv4.opt (msdata): Improve option description.
21412
21413 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
21414
21415         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21416         (divdf3_internal_lat): Remove.
21417         (divxf3_internal_lat): Remove.
21418         (divxf3_internal_thr): Remove.
21419         (divxf): Use divxf3_internal.
21420         * config/ia64/div.md (divsf3_internal_lat): New.
21421         (divdf3_internal_lat): New.
21422         (divxf3_internal): New.
21423
21424 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21425
21426         PR c/448
21427         * Makefile.in (USE_GCC_STDINT): Define.
21428         (stmp-int-hdrs): Install stdint.h if applicable.
21429         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21430         if known.
21431         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21432         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21433         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21434         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21435         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21436         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21437         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21438         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21439         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21440         (c_common_nodes_and_builtins): Initialize
21441         underlying_wchar_type_node.  Do not initialize
21442         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
21443         nodes for new types.
21444         (c_stddef_cpp_builtins): Define macros for new types.
21445         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21446         Remove.
21447         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21448         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21449         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21450         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21451         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21452         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21453         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21454         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21455         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21456         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21457         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21458         int16_type_node, int32_type_node, int64_type_node,
21459         uint8_type_node, uint16_type_node, c_uint32_type_node,
21460         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21461         int_least32_type_node, int_least64_type_node,
21462         uint_least8_type_node, uint_least16_type_node,
21463         uint_least32_type_node, uint_least64_type_node,
21464         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21465         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21466         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21467         uintptr_type_node): Define.
21468         * c-cppbuiltin.c (builtin_define_constants,
21469         builtin_define_type_minmax): New.
21470         (builtin_define_stdint_macros): Define more macros.
21471         (c_cpp_builtins): Define more limit macros.
21472         (type_suffix): New.
21473         (builtin_define_type_max): Define in terms of
21474         builtin_define_type_minmax.  Remove is_long parameter.  All
21475         callers changed.
21476         * config.gcc (use_gcc_stdint): Define.
21477         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21478         Add newlib-stdint.h for generic targets.
21479         * config/glibc-stdint.h, config/newlib-stdint.h,
21480         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21481         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21482         * config/score/score.h (UINTPTR_TYPE): Define.
21483         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21484         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21485         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21486         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21487         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21488         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21489         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21490         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21491         * config/spu/spu.h (STDINT_LONG32): Define.
21492         * configure.ac (use_gcc_stdint): Substitute.
21493         * configure: Regenerate.
21494         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21495         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
21496         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
21497         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
21498         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
21499         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
21500         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
21501         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
21502         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
21503         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
21504         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
21505         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
21506         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
21507         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
21508         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
21509         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
21510         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
21511         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
21512         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
21513         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
21514         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
21515         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
21516         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21517         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21518         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21519         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21520         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21521         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21522         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
21523
21524 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
21525
21526         * loop-iv.c (suitable_set_for_replacement): Renamed from
21527         simplify_using_assignment; changed to return bool and to accept new
21528         args DEST and SRC.  Return true iff we find a source/destination pair
21529         that can be used to make a replacement, and fill SRC and DEST if so.
21530         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
21531         changed.
21532         (simplify_using_initial_values): Deal with altered regs here and track
21533         more precisely the effect they have on the validity of our expression.
21534
21535         * loop-iv.c (simplify_using_condition): A condition of the form
21536         (EQ REG CONST) can be used to simply make a substitution.
21537         (simplify_using_initial_values): Keep track of conditions we have seen
21538         and keep using them to simplify new expressions, while applying the
21539         same substitutions to them as to the expression.
21540
21541         * simplify-rtx.c (simplify_relational_operation_1): Simplify
21542         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
21543         GEU/LTU reversed.
21544
21545         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
21546         changed.  Use this when trying to improve the upper bound.
21547         Generate the comparison by using simplify_gen_relational.
21548
21549         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
21550
21551         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
21552         functions.
21553         (simplify_using_assignment, simplify_using_initial_values): Call
21554         replace_in_expr to make replacements.  Call replace_single_def_regs
21555         once on the initial version of the expression.
21556
21557 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21558
21559         PR target/27237
21560         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
21561
21562 2009-03-31  Richard Guenther  <rguenther@suse.de>
21563
21564         PR middle-end/31029
21565         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
21566         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
21567
21568 2009-03-31  Richard Guenther  <rguenther@suse.de>
21569
21570         * tree.h (div_if_zero_remainder): Declare.
21571         * fold-const.c (div_if_zero_remainder): Export.
21572         * tree-ssa-forwprop.c
21573         (forward_propagate_addr_into_variable_array_index): Handle
21574         constant array index addition outside of the variable index.
21575
21576 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21577
21578         PR target/39592
21579         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
21580         define_splits, floatunssi<mode>2): Require x87 conversions from
21581         DImode to be permitted.
21582
21583 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21584
21585         PR preprocessor/15638
21586         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
21587
21588 2009-03-31  Richard Guenther  <rguenther@suse.de>
21589
21590         PR middle-end/23401
21591         PR middle-end/27810
21592         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
21593         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
21594         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
21595         a separate statement.
21596         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
21597         (lookup_tmp_var): Likewise.
21598         (is_gimple_formal_tmp_or_call_rhs): Remove.
21599         (is_gimple_reg_or_call_rhs): Rename to ...
21600         (is_gimple_reg_rhs_or_call): ... this.
21601         (is_gimple_mem_or_call_rhs): Rename to ...
21602         (is_gimple_mem_rhs_or_call): ... this.
21603         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
21604         DECL_GIMPLE_REG_P only if is_formal is true.
21605         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
21606         for non-proper post-modify expression gimplification.
21607         (gimplify_self_mod_expr): For post-modify expressions gimplify
21608         the lvalue to a minimal lvalue.
21609         (rhs_predicate_for): Remove formal temp case.
21610         (gimplify_modify_expr_rhs): Likewise.
21611         (gimplify_addr_expr): Use is_gimple_reg.
21612         (gimplify_expr): Remove formal temp cases.
21613         (gimple_regimplify_operands): Likewise.
21614         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
21615         and FILTER_EXPR like constants.
21616         * gimple.c (walk_gimple_op): Fix val_only initialization, use
21617         is_gimple_reg.
21618         (is_gimple_formal_tmp_rhs): Remove.
21619         (is_gimple_reg_rhs): Remove special casing.
21620         (is_gimple_mem_rhs): Fix.
21621         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
21622         (is_gimple_formal_tmp_var): Remove.
21623         (is_gimple_formal_tmp_reg): Likewise.
21624         (is_gimple_min_lval): Allow invariant component ref parts.
21625         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
21626         is_gimple_formal_tmp_reg): Remove declarations.
21627         * tree-cfg.c (verify_expr): Verify that variables with address
21628         taken do not have DECL_GIMPLE_REG_P set.
21629         * tree-mudflap.c (mf_build_check_statement_for): Use
21630         force_gimple_operand instead of gimplify_expr.
21631
21632 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
21633
21634         * modulo-sched.c (sms_schedule_by_order): Pass the actual
21635         schedulable rows to compute_split_row.
21636
21637 2009-03-31  Ben Elliston  <bje@au.ibm.com>
21638
21639         PR target/31635
21640         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
21641         OPT_mvrsave.
21642
21643 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21644
21645         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
21646         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
21647         * configure: Regenerate.
21648         * config.in: Regenerate.
21649         * config/rs6000/rs6000.opt (mtls-markers): Add.
21650         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
21651         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
21652         (tls_ld_aix, tls_ld_sysv): Likewise.
21653         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
21654         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
21655
21656 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21657
21658         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
21659
21660 2009-03-30  Jan Hubicka  <jh@suse.cz>
21661
21662         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
21663         out of RESX.
21664         (tree_remove_unreachable_handlers): Cleanup EH predecestor
21665         detection and label handling.
21666
21667 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21668
21669         * ira-int.h (ira_allocno): Rename left_conflicts_num to
21670         left_conflicts_size.
21671         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
21672         ALLOCNO_LEFT_CONFLICTS_SIZE.
21673
21674         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
21675         remove_allocno_from_bucket_and_push,
21676         allocno_spill_priority_compare, push_allocnos_to_stack,
21677         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21678         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
21679         (setup_allocno_left_conflicts_num): Ditto.  Rename to
21680         setup_allocno_left_conflicts_size.
21681         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21682         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
21683         setup_allocno_left_conflicts_size instead of
21684         setup_allocno_left_conflicts_num.
21685
21686         * ira-build.c (ira_create_allocno): Use
21687         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
21688         ALLOCNO_LEFT_CONFLICTS_NUM.
21689
21690 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21691
21692         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21693         instead of DF_LR_OUT.
21694
21695         * ira-lives.c (process_bb_node_lives): Ditto.
21696
21697         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21698         instead of DF_LR_{OUT,IN}.
21699
21700         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21701
21702         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21703
21704 2009-03-30  Jan Hubicka  <jh@suse.cz>
21705
21706         * except.c (label_to_region_map): Fix thinko.
21707
21708 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
21709
21710         PR middle-end/38237
21711         * tree.h (tree_find_value): New declaration.
21712         * tree.c (tree_find_value): New function.
21713         * varasm.c (assemble_external): Avoid duplicate entries on lists.
21714
21715 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
21716
21717         PR debug/39563
21718         * c-decl.c (struct c_binding): Add locus field.
21719         (bind): Add locus argument, set locus field from it.
21720         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
21721         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
21722         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
21723         implicitly_declare, undeclared_variable, lookup_label,
21724         declare_label, c_make_fname_decl, c_builtin_function,
21725         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
21726         bind callers.
21727
21728 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21729
21730         PR target/38781
21731         * config/i386/i386.c (classify_argument): Check total size of
21732         structure.
21733
21734 2009-03-30  Martin Jambor  <mjambor@suse.cz>
21735
21736         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
21737         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
21738         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
21739         respectively.
21740
21741         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
21742         seen_variable_array_ref while also traversing a union.
21743
21744         * tree-inline.c (optimize_inline_calls): Do not call
21745         cgraph_node_remove_callees.
21746         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
21747         (pass_remove_cgraph_callee_edges): New variable.
21748         * passes.c (init_optimization_passes): Add
21749         pass_remove_cgraph_callee_edges after early inlining and before all
21750         late intraprocedural passes.
21751
21752         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
21753
21754 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21755
21756         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
21757         Fix typos in names.
21758
21759 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21760
21761         * combine.c (simplify_comparison): Use have_insn_for.
21762         * dojump.c (do_jump): Likewise.
21763
21764 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21765
21766         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
21767         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
21768         sparc_compare_op0 like sparc_compare_emitted used to be handled.
21769         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
21770         instead of sparc_compare_emitted.
21771         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
21772         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
21773         instead of sparc_compare_emitted.
21774
21775 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21776
21777         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
21778         enter/exit cfglayout mode.
21779         (pass_partition_block): Require it.
21780         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
21781         (combine_instructions): Track basic blocks instead of labels.
21782         (update_cfg_for_uncondjump): New.
21783         (try_combine): Use it.  Update jumps after rescanning.
21784         (pass_combine): Require PROP_cfglayout.
21785         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
21786
21787 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21788
21789         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
21790         Provide/destroy PROP_cfglayout respectively.
21791         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
21792         * tree-pass.h (PROP_cfglayout): New.
21793
21794 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
21795
21796         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
21797         fold_convert_const_fixed_from_fixed,
21798         fold_convert_const_fixed_from_int,
21799         fold_convert_const_fixed_from_real, fold_negate_const): Do not
21800         set TREE_CONSTANT_OVERFLOW.
21801         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
21802         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
21803
21804 2009-03-30  Ira Rosen  <irar@il.ibm.com>
21805
21806         * tree-vect-loop-manip.c: New file.
21807         * tree-vectorizer.c: Update documentation and included files.
21808         (vect_loop_location): Make extern.
21809         (rename_use_op): Move to tree-vect-loop-manip.c
21810         (rename_variables_in_bb, rename_variables_in_loop,
21811         slpeel_update_phis_for_duplicate_loop,
21812         slpeel_update_phi_nodes_for_guard1,
21813         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
21814         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
21815         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
21816         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
21817         find_loop_location): Likewise.
21818         (new_stmt_vec_info): Move to tree-vect-stmts.c.
21819         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
21820         get_vectype_for_scalar_type, vect_is_simple_use,
21821         supportable_widening_operation, supportable_narrowing_operation):
21822         Likewise.
21823         (bb_in_loop_p): Move to tree-vect-loop.c.
21824         (new_loop_vec_info, destroy_loop_vec_info,
21825         reduction_code_for_scalar_code, report_vect_op,
21826         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
21827         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
21828         (vect_supportable_dr_alignment): Likewise.
21829         * tree-vectorizer.h (tree-data-ref.h): Include.
21830         (vect_loop_location): Declare.
21831         Reorganize function declarations according to the new file structure.
21832         * tree-vect-loop.c: New file.
21833         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
21834         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
21835         * tree-vect-data-refs.c: New file.
21836         * tree-vect-patterns.c (timevar.h): Don't include.
21837         * tree-vect-stmts.c: New file.
21838         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
21839         tree-vect-slp.c, tree-vect-loop.c.
21840         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
21841         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
21842         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
21843         (tree-vect-analyze.o): Remove.
21844         (tree-vect-transform.o): Likewise.
21845         (tree-vect-data-refs.o): Add rule.
21846         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
21847         tree-vect-slp.o): Likewise.
21848         (tree-vect-patterns.o): Remove redundant dependencies.
21849         (tree-vectorizer.o): Likewise.
21850         * tree-vect-slp.c: New file.
21851
21852 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21853
21854         * optc-gen.awk: Warn if an option flag has multiple different
21855         help strings.
21856
21857 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
21858
21859         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
21860         -floop-block): Document dependences on PPL, CLooG and Graphite.
21861
21862 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21863
21864         PR rtl-optimization/323
21865         * c-common.c (c_fully_fold, convert_and_check,
21866         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
21867         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
21868         * c-common.def (EXCESS_PRECISION_EXPR): New.
21869         * c-cppbuiltin.c (builtin_define_float_constants): Define
21870         constants with enough digits for long double.
21871         * c-lex.c (interpret_float): Interpret constant with excess
21872         precision where appropriate.
21873         * c-opts.c (c_common_post_options): Set
21874         flag_excess_precision_cmdline.  Give an error for
21875         -fexcess-precision=standard for C++ for processors where the
21876         option is significant.
21877         * c-parser.c (c_parser_conditional_expression): Handle excess
21878         precision in condition.
21879         * c-typeck.c (convert_arguments): Handle arguments with excess
21880         precision.
21881         (build_unary_op): Move excess precision outside operation.
21882         (build_conditional_expr): Likewise.
21883         (build_compound_expr): Likewise.
21884         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
21885         (build_modify_expr): Handle excess precision in RHS.
21886         (convert_for_assignment): Handle excess precision in converted
21887         value.
21888         (digest_init, output_init_element, process_init_element): Handle
21889         excess precision in initializer.
21890         (c_finish_return): Handle excess precision in return value.
21891         (build_binary_op): Handle excess precision in operands and add
21892         excess precision as needed for operation.
21893         * common.opt (-fexcess-precision=): New option.
21894         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
21895         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
21896         For standard excess precision, output explicit conversion to and
21897         truncation from XFmode.
21898         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
21899         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
21900         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
21901         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
21902         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
21903         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
21904         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
21905         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
21906         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
21907         define_splits, sqrt<mode>2): Disable where appropriate for
21908         standard excess precision.
21909         * convert.c (convert_to_real): Do not shorten arithmetic to type
21910         for which excess precision would be used.
21911         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
21912         * doc/invoke.texi (-fexcess-precision=): Document option.
21913         (-mfpmath=): Correct index entry.
21914         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
21915         flag_excess_precision): New.
21916         * langhooks.c (lhd_post_options): Set
21917         flag_excess_precision_cmdline.
21918         * opts.c (common_handle_option): Handle -fexcess-precision=.
21919         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
21920         init_excess_precision): New.
21921         (lang_dependent_init_target): Call init_excess_precision.
21922         * tree.c (excess_precision_type): New.
21923         * tree.h (excess_precision_type): Declare.
21924
21925 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
21926
21927         PR c/35235
21928         * c-typeck.c (build_component_ref): Do not copy qualifiers from
21929         non-lvalue to component.
21930
21931 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21932
21933         PR preprocessor/34695
21934         * Makefile.in (c-opts.o): Depend on c-tree.h.
21935         * c-common.c: Move down include of diagnostic.h.
21936         (done_lexing, c_cpp_error): New.
21937         * c-common.h (done_lexing): Declare.
21938         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
21939         (parse_in).
21940         * c-opts.c: Include c-tree.h.
21941         (c_common_init_options): Set preprocessor error callback.
21942         (c_common_handle_option): Do not set preprocessor
21943         inhibit_warnings, warnings_are_errors, warn_system_headers,
21944         pedantic_errors or inhibit_warnings flags.
21945         (c_common_post_options): Do not check cpp_errors (parse_in).
21946         (c_common_finish): Do not output dependencies if there were
21947         errors.  Do not check return value of cpp_finish.
21948         * c-ppoutput.c (pp_file_change): Set input_location.
21949         * c-tree.h (c_cpp_error): Declare.
21950         * diagnostic.c (diagnostic_set_info_translated): Also initialize
21951         override_column.
21952         (diagnostic_build_prefix): Check override_column.
21953         * diagnostic.h (diagnostic_info): Add override_column field.
21954         (diagnostic_override_column): Define.
21955
21956 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
21957
21958         * c-common.c (c_expand_expr, c_staticp): Remove.
21959         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
21960         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
21961         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
21962         * c-gimplify.c (gimplify_compound_literal_expr,
21963         optimize_compound_literals_in_ctor): Remove.
21964         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
21965         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
21966         * c-semantics.c (emit_local_var): Remove.
21967
21968         * langhooks-def.h (lhd_expand_expr): Remove.
21969         * langhooks.c (lhd_expand_expr): Remove.
21970         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
21971
21972         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
21973         handling from c-semantics.c; don't call into langhook.
21974         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
21975         * gimplify.c (gimplify_compound_literal_expr,
21976         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
21977         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
21978         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
21979         as was done in c-gimplify.c.
21980         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
21981         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
21982         Move from c-common.h.
21983         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
21984
21985         * tree.c (staticp): Do not call langhook.
21986         * langhooks.c (lhd_staticp): Delete.
21987         * langhooks-def.h (lhd_staticp): Delete prototype.
21988         (LANG_HOOKS_STATICP): Delete.
21989         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
21990
21991         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
21992         instead of DECL_STMTs.
21993
21994 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
21995
21996         PR c/456
21997         PR c/5675
21998         PR c/19976
21999         PR c/29116
22000         PR c/31871
22001         PR c/35198
22002         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
22003         void_type_node.
22004         (fold_call_expr): Return a NOP_EXPR from folding rather than the
22005         contained expression.
22006         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
22007         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
22008         conditional expressions for C.
22009         (decl_constant_value_for_optimization): Move from
22010         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
22011         whether optimizing and that the expression is a VAR_DECL not of
22012         array type instead of doing such checks in the caller.  Do not
22013         check pedantic.  Call gcc_unreachable for C++.
22014         * c-common.def (C_MAYBE_CONST_EXPR): New.
22015         * c-common.h (c_fully_fold, c_save_expr,
22016         decl_constant_value_for_optimization): New prototypes.
22017         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22018         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22019         EXPR_INT_CONST_OPERANDS): Define.
22020         * c-convert.c (convert): Strip nops from expression.
22021         * c-decl.c (groktypename): Take extra parameters expr and
22022         expr_const_operands.  Update call to grokdeclarator.
22023         (start_decl): Update call to grokdeclarator.  Add statement for
22024         expressions used in type of decl.
22025         (grokparm): Update call to grokdeclarator.
22026         (push_parm_decl): Update call to grokdeclarator.
22027         (build_compound_literal): Add parameter non_const and build a
22028         C_MAYBE_COSNT_EXPR if applicable.
22029         (grokdeclarator): Take extra parameters expr and
22030         expr_const_operands.  Track expressions used in declaration
22031         specifiers and declarators.  Fold array sizes and track whether
22032         they are constant expressions and whether they are integer
22033         constant expressions.
22034         (parser_xref_tag): Set expr and expr_const_operands fields in
22035         return value.
22036         (grokfield): Update call to grokdeclarator.
22037         (start_function): Update call to grokdeclarator.
22038         (build_null_declspecs): Set expr and expr_const_operands fields in
22039         return value.
22040         (declspecs_add_type): Handle expressions in typeof specifiers.
22041         * c-parser.c (c_parser_declspecs): Set expr and
22042         expr_const_operands fields for declaration specifiers.
22043         (c_parser_enum_specifier): Likewise.
22044         (c_parser_struct_or_union_specifier): Likewise.
22045         (c_parser_typeof_specifier): Likewise.  Update call to
22046         groktypename.  Fold expression as needed.  Return expressions with
22047         type instead of adding statements.
22048         (c_parser_attributes): Update calls to c_parser_expr_list.
22049         (c_parser_statement_after_labels): Fold expression before passing
22050         to objc_build_throw_stmt.
22051         (c_parser_condition): Fold expression.
22052         (c_parser_asm_operands): Fold expression.
22053         (c_parser_conditional_expression): Use c_save_expr.  Update call
22054         to build_conditional_expr.
22055         (c_parser_alignof_expression): Update call to groktypename.
22056         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
22057         original_code.  Fold expression argument of va_arg.  Create
22058         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
22059         argument to va_arg.  Update calls to groktypename.  Fold array
22060         index for offsetof.  Verify that first argument to
22061         __builtin_choose_expr has integer type.
22062         (c_parser_postfix_expression_after_paren_type): Update calls to
22063         groktypename and build_compound_literal.  Handle expressions with
22064         side effects in type name.
22065         (c_parser_postfix_expression_after_primary): Update call to
22066         c_parser_expr_list.  Set original_code for calls to
22067         __builtin_constant_p.
22068         (c_parser_expr_list): Take extra parameter fold_p.  Fold
22069         expressions if requested.
22070         (c_parser_objc_type_name): Update call to groktypename.
22071         (c_parser_objc_synchronized_statement): Fold expression.
22072         (c_parser_objc_receiver): Fold expression.
22073         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
22074         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
22075         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
22076         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
22077         (struct c_typespec): Add elements expr and expr_const_operands.
22078         (struct c_declspecs): Add elements expr and expr_const_operands.
22079         (groktypename, build_conditional_expr, build_compound_literal):
22080         Update prototypes.
22081         (in_late_binary_op): Declare.
22082         * c-typeck.c (note_integer_operands): New function.
22083         (in_late_binary_op): New variable.
22084         (decl_constant_value_for_broken_optimization): Move to c-common.c
22085         and rename to decl_constant_value_for_optimization.
22086         (default_function_array_conversion): Do not strip nops.
22087         (default_conversion): Do not call
22088         decl_constant_value_for_broken_optimization.
22089         (build_array_ref): Do not fold result.
22090         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
22091         result when operand is a VLA.
22092         (c_expr_sizeof_type): Update call to groktypename.  Handle
22093         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
22094         result when operand names a VLA type.
22095         (build_function_call): Update call to build_compound_literal.
22096         Only fold result for calls to __builtin_* functions.  Strip
22097         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
22098         the function designator.
22099         (convert_arguments): Fold arguments.  Update call to
22100         convert_for_assignment.
22101         (build_unary_op): Handle increment and decrement of
22102         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
22103         decrement earlier.  Fold operand of increment and decrement.
22104         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
22105         built for integer operand.  Wrap returns that are INTEGER_CSTs
22106         without being integer constant expressions or that have integer
22107         constant operands without being INTEGER_CSTs.
22108         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
22109         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
22110         result is an integer constant expression or can be used in
22111         unevaluated parts of one and avoid folding and wrap as
22112         appropriate.  Fold operands before possibly doing -Wsign-compare
22113         warnings.
22114         (build_compound_expr): Wrap result for C99 if operands can be used
22115         in integer constant expressions.
22116         (build_c_cast): Update call to digest_init.  Do not ignore
22117         overflow from casting floating-point constants to integers.  Wrap
22118         results that could be confused with integer constant expressions,
22119         null pointer constants or floating-point constants.
22120         (c_cast_expr): Update call to groktypename.  Handle expressions
22121         included in type name.
22122         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
22123         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
22124         Update calls to convert_for_assignment.
22125         (convert_for_assignment): Take new parameter
22126         null_pointer_constant.  Do not strip nops or call
22127         decl_constant_value_for_broken_optimization.  Set
22128         in_late_binary_op for conversions to boolean.
22129         (store_init_value): Update call to digest_init.
22130         (digest_init): Take new parameter null_pointer_constant.  Do not
22131         call decl_constant_value_for_broken_optimization.  pedwarn for
22132         initializers not constant expressions.  Update calls to
22133         convert_for_assignment.
22134         (constructor_nonconst): New.
22135         (struct constructor_stack): Add nonconst element.
22136         (really_start_incremental_init, push_init_level, pop_init_level):
22137         Handle constructor_nonconst and nonconst element.
22138         (set_init_index): Call constant_expression_warning for array
22139         designators.
22140         (output_init_element): Fold value.  Set constructor_nonconst as
22141         applicable.  pedwarn for initializers not constant expressions.
22142         Update call to digest_init.  Call constant_expression_warning
22143         where constant initializers are required.
22144         (process_init_element): Use c_save_expr.
22145         (c_finish_goto_ptr): Fold expression.
22146         (c_finish_return): Fold return value.  Update call to
22147         convert_for_assignment.
22148         (c_start_case): Fold switch expression.
22149         (c_process_expr_stmt): Fold expression.
22150         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
22151         ensure statement expression is not evaluated in constant expression.
22152         (build_binary_op): Track whether results are integer constant
22153         expressions or may occur in such, disable folding and wrap results
22154         as applicable.  Fold operands for -Wsign-compare warnings unless
22155         in_late_binary_op.
22156         (c_objc_common_truthvalue_conversion): Handle results folded to
22157         integer constants that are not integer constant expressions.
22158         * doc/extend.texi: Document when typeof operands are evaluated,
22159         that condition of __builtin_choose_expr is an integer constant
22160         expression, and more about use of __builtin_constant_p in
22161         initializers.
22162
22163 2009-03-29  Richard Guenther  <rguenther@suse.de>
22164
22165         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
22166         propagate addresses of array references.
22167
22168 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22169
22170         * regmove.c (perhaps_ends_bb_p): Remove.
22171         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
22172         from INSN and check that the main loop stays within that basic block.
22173         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
22174         (regmove_forward_pass): Split out from regmove_optimize.  Use
22175         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
22176         (regmove_backward_pass): Split out from regmove_optimize.  Use
22177         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
22178         (regmove_optimize): Simplify.
22179
22180 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22181
22182         PR target/39545
22183         * config/i386/i386.c (classify_argument): Ignore flexible array
22184         member in struct and warn ABI change.
22185
22186 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22187
22188         * config/i386/i386-protos.h (ix86_agi_dependent): New.
22189
22190         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
22191         (ix86_adjust_cost): Updated.
22192
22193 2009-03-29  Jan Hubicka  <jh@suse.cz>
22194
22195         PR middle-end/28850
22196         * tree-pass.h (pass_cleanup_eh): New function.
22197         (remove_unreachable_regions): Break code handling RTL
22198         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
22199         that can not be reached by runtime.
22200         (can_be_reached_by_runtime): New function.
22201         (label_to_region_map): New function.
22202         (num_eh_regions): New function.
22203         (rtl_remove_unreachable_regions): New function.
22204         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
22205         (remove_eh_region): New function.
22206         * except.h: Include sbitmap and vecprim.
22207         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
22208         num_eh_regions): Declare.
22209         * passes.c (init_optimization_passes): Schedule cleanup_eh.
22210         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
22211         * tree-eh.c (tree_remove_unreachable_handlers): New function.
22212         (tree_empty_eh_handler_p): New function.
22213         (cleanup_empty_eh): New function.
22214         (cleanup_eh): New function.
22215         (pass_cleanup_eh): New function.
22216
22217 2009-03-29  Jan Hubicka  <jh@suse.cz>
22218
22219         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
22220         for removed regions.
22221
22222 2009-03-29  Jan Hubicka  <jh@suse.cz>
22223
22224         * except.c (dump_eh_tree): Dump all datastructures.
22225
22226 2009-03-29  Jan Hubicka  <jh@suse.cz>
22227
22228         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
22229         (duplicate_eh_regions_1): Likewise.
22230         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
22231         vector; call EH verification.
22232         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22233         Be ready for region being removed.
22234
22235 2009-03-29  Jan Hubicka  <jh@suse.cz>
22236
22237         * bitmap.c (bitmap_last_set_bit): New function.
22238         * bitmap.h (bitmap_last_set_bit): Declare.
22239
22240 2009-03-29  David Ayers  <ayers@fsfe.org>
22241
22242         PR objc/27377
22243         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
22244         by calling objc_compare_types and surpress warnings about
22245         incompatible C pointers that are compatible ObjC pointers.
22246
22247 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
22248
22249         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22250         call initialize_inline_failed.
22251         (initialize_inline_failed): Move it from here ...
22252         * cgraph.c (initialize_inline_failed): ... to here.
22253         (cgraph_create_edge): Call initialize_inline_failed rather than
22254         setting inline_failed directly.
22255
22256 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22257
22258         PR target/32542
22259         * sysv4.opt (msdata): Improve comment.
22260         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22261         * sysv4.h (SVR4_ASM_SPEC): Likewise.
22262
22263 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22264
22265         PR target/30451
22266         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22267         load and store attributes.
22268
22269 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22270
22271         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22272         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
22273         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
22274         * doc/extend.texi (X86 Built-in Functions): Add index entries for
22275         __builtin_infq and __builtin_huge_valq.
22276
22277 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
22278
22279         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
22280         atmega8m1 devices.
22281         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22282         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
22283
22284 2009-03-28  Xinliang David Li  <davidxl@google.com>
22285
22286         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
22287         (do_dbg_cnt): New function.
22288
22289 2009-03-28  Jan Hubicka  <jh@suse.cz>
22290
22291         Merge from pretty-ipa:
22292
22293         2009-03-27  Jan Hubicka  <jh@suse.cz>
22294
22295         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22296         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
22297         * passes.c (function_called_by_processed_nodes_p): New.
22298         * ipa-pure-const.c (check_call): Fix handling of operands.
22299         (analyze_function): Dump debug output for skipped bodies.
22300         (local_pure_const): Use function_called_by_processed_nodes_p.
22301         * dwarf2out.c (reference_to_unused): Use output.
22302         * passes.c (do_per_function_toporder): Likewise.
22303
22304         2008-11-12  Jan Hubicka  <jh@suse.cz>
22305
22306         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
22307         * ipa-pure-const.c (funct_state_d): Add can throw field; make
22308         state_set_in_source enum
22309         (check_decl): Ignore memory tags; do not set fake looping flags;
22310         dump diagnostics.
22311         (check_operand, check_tree, check_rhs_var, check_lhs_var,
22312         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
22313         (check_call, analyze_function): Rewrite.
22314         (check_stmt): New.
22315         (add_new_function): Update call of analyze_function.
22316         (generate_summary): Add call of analyze_function.
22317         (propagate): Propagate can_throw; handle state_set_in_source correctly.
22318         (local_pure_const): New function.
22319         (pass_local_pure_const): New pass.
22320         * ipa-inline.c (inline_transform): Set after_inlining.
22321         * tree-eh.c (stmt_can_throw_external): New.
22322         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
22323         work with aliasing built.
22324         * tree-flow.h (stmt_can_throw_external): New.
22325         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
22326         and local pure/const pass in early and late optimization queue.
22327
22328 2009-03-28  Martin Jambor  <mjambor@suse.cz>
22329
22330         * fold-const.c (get_pointer_modulus_and_residue): New parameter
22331         allow_func_align.
22332         (fold_binary): Allow function decl aligment consideration is the
22333         second argument is integer constant one.
22334         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22335         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22336         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22337
22338 2009-03-28  Jan Hubicka  <jh@suse.cz>
22339
22340         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22341         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22342         * function.h (rtl_data): Add nothrow flag.
22343         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22344         set DECL_NOTHROW for AVAILABLE functions.
22345
22346 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
22347
22348         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22349         following vector keyword has expansion starting with pixel or bool
22350         keyword, expand vector to __vector and pixel or bool to __pixel or
22351         __bool.
22352
22353         PR c++/39554
22354         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22355         warn_if_disallowed_function_p): Removed.
22356         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22357         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22358         warning_if_disallowed_function_p.
22359         * flags.h (warn_if_disallowed_function_p,
22360         warn_disallowed_functions): Removed.
22361         * common.opt (Wdisallowed-function-list=): Removed.
22362         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22363
22364 2009-03-28  Richard Guenther  <rguenther@suse.de>
22365
22366         PR tree-optimization/38723
22367         * tree-ssa-pre.c (compute_avail): Add all default definitions to
22368         the entry block.
22369
22370 2009-03-28  Jan Hubicka  <jh@suse.cz>
22371
22372         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22373         test introduced by my previous patch.
22374
22375 2009-03-28  Richard Guenther  <rguenther@suse.de>
22376
22377         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22378         the PHIs value undefined.
22379
22380 2009-03-28  Jan Hubicka  <jh@suse.cz>
22381
22382         * tree-pass.h (pass_fixup_cfg): New pass.
22383         * ipa-inline.c (inline_transform): Set
22384         always_inline_functions_inlined/after_inlining.
22385         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22386         (pass_fixup_cfg): New pass.
22387         * passes.c (init_optimization_passes): Add fixup_cfg.
22388
22389 2009-03-28  Richard Guenther  <rguenther@suse.de>
22390
22391         PR tree-optimization/38458
22392         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22393         argument use the arguments copy-of value.
22394
22395 2009-03-28  Richard Guenther  <rguenther@suse.de>
22396
22397         PR tree-optimization/38180
22398         * tree-ssa-ccp.c (get_default_value): Simplify.
22399         (likely_value): Likewise.
22400         (surely_varying_stmt_p): Properly handle VOP case.
22401         (ccp_initialize): Likewise.
22402         (ccp_fold): Handle propagating through *&.
22403         (fold_const_aggregate_ref): Also handle decls.
22404
22405 2009-03-28  Jan Hubicka  <jh@suse.cz>
22406
22407         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22408         * cgraph.h (cgraph_node): Likewise.
22409         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22410         (cgraph_reset_node): Use process flag.
22411         (cgraph_mark_functions_to_output): Likewise.
22412         (cgraph_expand_function): Likewise.
22413         (cgraph_expand_all_functions): Likewise.
22414         (cgraph_output_in_order): Likewise.
22415         * dwarf2out.c (reference_to_unused): Likewise.
22416         * passes.c do_per_function_toporder): Likewise.
22417
22418 2009-03-28  Jan Hubicka  <jh@suse.cz>
22419
22420         Bring from lto-branch:
22421
22422         2008-09-03  Doug Kwan  <dougkwan@google.com>
22423
22424         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22425         enums instead of reason strings.
22426         * cgraph.c (cgraph_create_edge): Same.
22427         (cgraph_inline_failed_string): New function.
22428         * cgraph.h (cgraph_inline_failed_t): New enum type.
22429         (cgraph_inline_failed_string): New prototype.
22430         (struct cgraph_edge): Change type of INLINED_FAILED from constant
22431         char pointer to cgraph_inline_failed_t.
22432         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22433         (cgraph_default_inline_p): Ditto.
22434         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22435         to cgraph_inline_failed_t pointer.
22436         * cif-code.def: New file.
22437         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22438         reason string.
22439         (cgraph_check_inline_limits): Change type of REASON to pointer to
22440         cgraph_inline_failed_t.  Replace reason strings with enums.
22441         (cgraph_default_inline_p): Ditto.
22442         (cgraph_recursive_inlining_p): Ditto.
22443         (update_caller_keys): Change type of FAILED_REASON to
22444         cgraph_inline_failed_t.
22445         (cgraph_set_inline_failed): Change type of REASON to pointer to
22446         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
22447         convert enums to strings for text output.
22448         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22449         to be of type cgraph_inline_failed_t.  Replace reason strings with
22450         enums.  Call cgraph_inline_failed_string to covert enums
22451         to strings for text output.
22452         (cgraph_decide_inlining): Replace reason strings with enums.
22453         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22454         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
22455         for text output.
22456         * tree-inline.c (expand_call_inline): Change type of REASON
22457         to cgraph_inline_failed_t.  Replace reason strings with enums.
22458         Call cgraph_inline_failed_string for text output.
22459         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22460         (cgraph.o): Ditto.
22461
22462 2009-03-28  Jan Hubicka  <jh@suse.cz>
22463
22464         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22465         cgraph_clone_node): Remove master clone handling.
22466         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22467         * cgraph.h (master_clone): Remove.
22468         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22469         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22470         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22471
22472 2009-03-28  Jan Hubicka  <jh@suse.cz>
22473
22474         * cgraph.c (cgraph_function_body_availability): Functions declared
22475         inline are always safe to assume that it is not going to be replaced.
22476
22477 2009-03-28  Richard Guenther  <rguenther@suse.de>
22478
22479         PR tree-optimization/38513
22480         * tree-ssa-pre.c (eliminate): Remove redundant stores.
22481         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22482         EXC_PTR_EXPR and FILTER_EXPR.
22483         (get_ref_from_reference_ops): Likewise.
22484
22485 2009-03-28  Richard Guenther  <rguenther@suse.de>
22486
22487         PR tree-optimization/38968
22488         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22489         Use FLOOR_MOD_EXPR to compute misalignment.
22490
22491 2009-03-28  Richard Guenther  <rguenther@suse.de>
22492
22493         PR tree-optimization/37795
22494         * tree.h (combine_comparisons): Declare.
22495         * fold-const.c (combine_comparisons): Export.
22496         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
22497         comparisons.
22498         (ifcombine_iforif): Use combine_comparisons.
22499
22500 2009-03-28  Jan Hubicka  <jh@suse.cz>
22501
22502         * tree-eh.c (inlinable_call_p): New function.
22503         (make_eh_edges): Use it.
22504         (verify_eh_edges): Use it.
22505         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
22506         * except.c (reachable_next_level): Add inlinable_function argument
22507         (sjlj_find_directly_reachable_regions): Update.
22508         (add_reachable_handler): Do not set saw_any_handlers.
22509         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
22510         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22511         Add new inlinable call parameter.
22512         (can_throw_internal, can_throw_external): Update.
22513         * except.h (can_throw_internal_1, can_throw_external_1,
22514         foreach_reachable_handler): Update declaration.
22515
22516 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
22517
22518         * config/arm/t-arm-coff, config/h8300/coff.h,
22519         config/i386/i386-aout.h, config/i386/i386-coff.h,
22520         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
22521         config/pdp11/2bsd.h, config/rs6000/aix41.h,
22522         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
22523         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
22524         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
22525         sys-types.h: Remove.
22526         * Makefile.in: Remove protoize and fixproto support and references
22527         in comments.
22528         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
22529         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
22530         Remove.
22531         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
22532         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
22533         unprotoize$(exeext).
22534         (rest.encap): Don't depend on $(STMP_FIXPROTO)
22535         (.PHONY): Don't depend on proto.
22536         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
22537         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
22538         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
22539         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
22540         build/gen-protos.o, build/scan.o, xsys-protos.h,
22541         build/fix-header$(build_exeext), build/fix-header.o,
22542         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
22543         stmp-install-fixproto): Remove.
22544         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
22545         SYSCALLS.c or fixproto files.
22546         (install-common): Don't install protoize.
22547         (install-headers-tar, install-headers-cpio, install-headers-cp):
22548         Don't depend on $(STMP_FIXPROTO).
22549         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
22550         install fixproto files or write out fixproto settings.
22551         (uninstall): Don't uninstall protoize.
22552         * config.gcc (use_fixproto): Remove.
22553         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
22554         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
22555         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
22556         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
22557         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
22558         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
22559         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
22560         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
22561         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
22562         * config/t-vxworks (STMP_FIXPROTO): Remove.
22563         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
22564         STMP_FIXPROTO): Remove.
22565         * config.in, configure: Regenerate.
22566         * crtstuff.c (gid_t, uid_t): Don't undefine.
22567         * doc/install.texi: Change m68k-coff to m68k-elf in example.
22568         (arm-*-coff, arm-*-aout: Remove target entries.
22569         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
22570         Remove mention of AIX 4.1.
22571         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
22572         * doc/invoke.texi (Running Protoize): Remove.
22573         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
22574         (Protoize Caveats): Remove.
22575         * tsystem.h: Update comments on headers assumed to exist.
22576
22577 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
22578
22579         * genautomata.c: Add a new year to the copyright.  Add a new
22580         reference.
22581         (struct insn_reserv_decl): Add comments for member bypass_list.
22582         (find_bypass): Remove.
22583         (insert_bypass): New.
22584         (process_decls): Use insert_bypass.
22585         (output_internal_insn_latency_func): Output all bypasses with the
22586         same input insn in one switch case.
22587
22588         * rtl.def (define_bypass): Describe bypass choice.
22589         * doc/md.texi (define_bypass): Ditto.
22590
22591 2009-03-27  Richard Guenther  <rguenther@suse.de>
22592
22593         * gimplify.c (mark_addressable): Export.
22594         * tree-flow.h (mark_addressable): Declare.
22595         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
22596         * tree-ssa.c (verify_phi_args): Verify that address taken
22597         variables have TREE_ADDRESSABLE set.
22598
22599 2009-03-27  Richard Guenther  <rguenther@suse.de>
22600
22601         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
22602         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
22603         Do not mark decls TREE_ADDRESSABLE.
22604         (build_fold_addr_expr): Adjust.
22605         (fold_addr_expr): Remove.
22606         (fold_unary): Use build_fold_addr_expr.
22607         (fold_comparison): Likewise.
22608         (split_address_to_core_and_offset): Likewise.
22609         * coverage.c (tree_coverage_counter_addr): Mark the array decl
22610         TREE_ADDRESSABLE.
22611         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
22612         (gimplify_modify_expr_to_memcpy): Mark source and destination
22613         addressable.
22614         * omp-low.c (create_omp_child_function): Mark the object decl
22615         TREE_ADDRESSABLE.
22616         (lower_rec_input_clauses): Mark the var we take the address of
22617         TREE_ADDRESSABLE.
22618         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
22619
22620 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22621
22622         PR middle-end/39315
22623         * cfgexpand.c (expand_one_stack_var_at): Change alignment
22624         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
22625
22626 2009-03-27  Richard Guenther  <rguenther@suse.de>
22627
22628         PR tree-optimization/39120
22629         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
22630         constraints.
22631         (handle_lhs_call): Process return constraints.  Add escape
22632         constraints if necessary.
22633         (handle_const_call): Fill out return constraints.  Make nested
22634         case more precise.  Avoid consttmp if possible.
22635         (handle_pure_call): Fill out return constraints.  Avoid
22636         callused if possible.
22637         (find_func_aliases): Simplify call handling.
22638
22639 2009-03-27  Richard Guenther  <rguenther@suse.de>
22640
22641         PR tree-optimization/39120
22642         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
22643         as a representative.
22644         (solve_graph): Do propagate CALLUSED.
22645         (handle_pure_call): Use a scalar constraint from CALLUSED for
22646         the return value.
22647         (find_what_p_points_to): CALLUSED shall not appear in poins-to
22648         solutions.
22649
22650 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22651
22652         PR c/39323
22653         * c-common.c (handle_aligned_attribute): Properly check alignment
22654         overflow.  Use (1U << i) instead of (1 << i).
22655
22656         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
22657
22658         * expr.h (get_mem_align_offset): Updated.
22659
22660         * tree.h (tree_decl_common): Change align to "unsigned int" and
22661         move it before pointer_alias_set.
22662
22663 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22664             Jakub Jelinek  <jakub@redhat.com>
22665
22666         PR target/38034
22667         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
22668         gr_register_operand with gr_reg_or_0_operand.
22669         (cmpxchg_rel_di): Likewise.
22670         (sync_lock_test_and_set<mode>): Likewise.
22671
22672 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22673
22674         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
22675         (true_regnum): Likewise.
22676
22677         * rtlanal.c (subreg_info): Moved to ...
22678         * rtl.h (subreg_info): Here.  New.
22679         (subreg_get_info): New.
22680
22681         * rtlanal.c (subreg_get_info): Make it extern.
22682
22683 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22684
22685         PR target/39472
22686         * config/i386/i386.c (ix86_abi): New.
22687         (override_options): Handle -mabi=.
22688         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
22689         (ix86_call_abi_override): Likewise.
22690         (init_cumulative_args): Likewise.
22691         (function_arg_advance): Likewise.
22692         (function_arg_64): Likewise.
22693         (function_arg): Likewise.
22694         (ix86_pass_by_reference): Likewise.
22695         (ix86_function_value_regno_p): Likewise.
22696         (ix86_build_builtin_va_list_abi): Likewise.
22697         (setup_incoming_varargs_64): Likewise.
22698         (is_va_list_char_pointer): Likewise.
22699         (ix86_init_machine_status): Likewise.
22700         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
22701         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
22702         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
22703         (ix86_function_abi): Make it static and return enum calling_abi.
22704         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
22705         with ix86_abi.
22706         (ix86_fn_abi_va_list): Updated.
22707
22708         * config/i386/i386.h (ix86_abi): New.
22709         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
22710         (CONDITIONAL_REGISTER_USAGE): Likewise.
22711         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
22712         (machine_function): Likewise.
22713
22714         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
22715         with ix86_abi.
22716         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
22717         (STACK_BOUNDARY): Likewise.
22718         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
22719
22720         * config/i386/i386.opt (mabi=): New.
22721
22722         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
22723         return enum calling_abi.
22724         (ix86_function_type_abi): Likewise.
22725         (ix86_function_abi): Removed.
22726
22727         * doc/invoke.texi: Document -mabi= option for x86.
22728
22729 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22730
22731         * builtins.c (real_dconstp): Delete.
22732         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
22733
22734 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
22735             Jakub Jelinek  <jakub@redhat.com>
22736
22737         PR debug/37959
22738         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
22739         (gen_subprogram_die): When a function is explicit, generate the
22740         DW_AT_explicit attribute.
22741         * langhooks.h (struct lang_hooks_for_decls): Add
22742         function_decl_explicit_p langhook.
22743         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
22744         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
22745
22746 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
22747
22748         * builtins.c (fold_builtin_memory_op): Optimize memmove
22749         into memcpy if we can prove source and destination don't overlap.
22750
22751         * tree-inline.c: Include gt-tree-inline.h.
22752         (clone_fn_id_num): New variable.
22753         (clone_function_name): New function.
22754         (tree_function_versioning): Use it.
22755         * Makefile.in (GTFILES): Add tree-inline.c.
22756
22757 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
22758
22759         * BASE-VER: Change to 4.5.0.
22760
22761 2009-03-27  Xinliang David Li  <davidxl@google.com>
22762
22763         PR tree-optimization/39557
22764         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
22765
22766 2009-03-27  Xinliang David Li  <davidxl@google.com>
22767
22768         PR tree-optimization/39548
22769         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
22770         candidate check.
22771
22772 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22773
22774         * c-common.c (pointer_int_sum): Use %wd on return from
22775         tree_low_cst.
22776
22777 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22778
22779         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
22780         on return from tree_low_cst.
22781
22782 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22783
22784         PR c++/36799
22785         * ginclude/stdarg.h (va_copy): Define also for
22786         __GXX_EXPERIMENTAL_CXX0X__.
22787
22788 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22789
22790         PR c++/35652
22791         * builtins.h (c_strlen): Do not warn here.
22792         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22793         * c-common.c (pointer_int_sum): Take an explicit location.
22794         Warn about offsets out of bounds.
22795         * c-common.h (pointer_int_sum): Adjust declaration.
22796
22797 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22798
22799         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
22800         markup glitch.
22801
22802 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
22803
22804         PR c++/39554
22805         * opts.c (warn_if_disallowed_function_p): Don't assume
22806         get_callee_fndecl must return non-NULL.
22807
22808 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
22809
22810         PR rtl-optimization/39522
22811         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
22812         when reg_reloaded_valid is set.
22813
22814 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
22815
22816         * config/spu/divv2df3.c: New file.
22817         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
22818         (DPBIT_FUNCS): Filter out _div_df.
22819
22820 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
22821
22822         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
22823         a jump insn, count that jump in the distance to the loop start.
22824
22825 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
22826
22827         PR target/39523
22828         * config/sh/sh.c (calc_live_regs): Fix condition for global
22829         registers except PIC_OFFSET_TABLE_REGNUM.
22830
22831 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
22832
22833         PR/39518
22834         * doc/invoke.texi (-mconsole): New.
22835         (-mcygwin): New.
22836         (-mno-cygwin): New.
22837         (-mdll): New.
22838         (-mnop-fun-dllimport): New.
22839         (-mthread): New.
22840         (-mwin32): New.
22841         (-mwindows): New.
22842         (sub section "i386 and x86-64 Windows Options"): New.
22843
22844 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
22845
22846         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
22847         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
22848
22849 2009-03-25  Richard Guenther  <rguenther@suse.de>
22850
22851         PR middle-end/39497
22852         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
22853         of -Wno-error.
22854
22855 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
22856
22857         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
22858         neither of haifa/selective schedulers are working.
22859
22860 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22861
22862         * doc/invoke.texi (Debugging Options): Fix description of
22863         -fno-merge-debug-strings.
22864
22865 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
22866
22867         * config/cris/libgcc.ver: New version-script.
22868         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
22869
22870         * configure.ac <GAS features, nop mnemonic>: Add pattern
22871         crisv32-*-* for "nop".
22872         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
22873         * configure: Regenerate.
22874
22875 2009-03-24  Ira Rosen  <irar@il.ibm.com>
22876
22877         PR tree-optimization/39529
22878         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
22879         mark_sym_for_renaming for the tag copied to the new vector
22880         pointer.
22881
22882 2009-03-24  Arthur Loiret  <aloiret@debian.org>
22883
22884         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
22885         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
22886         EXTRA_SPEC_FUNCTIONS.
22887         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
22888         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
22889         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
22890         -march and -mtune options.
22891
22892 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
22893
22894         * config/m68k/t-rtems: Add m5329 multilib.
22895
22896 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
22897             Jakub Jelinek  <jakub@redhat.com>
22898
22899         PR debug/39524
22900         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
22901         nodes.
22902
22903 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22904
22905         PR c/39495
22906         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
22907         instead of c_parser_expression_conv, if original_code isn't one of the
22908         4 allowed comparison codes, fail.
22909
22910 2009-03-23  Richard Guenther  <rguenther@suse.de>
22911
22912         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
22913         * tree.h (struct tree_type): Likewise.
22914         * reload.h (struct insn_chain): Likewise.
22915         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
22916         * function.h (struct function): Likewise.
22917         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
22918
22919 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
22920
22921         PR tree-optimization/39516
22922         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
22923
22924 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
22925
22926         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
22927         should be set true if BITS_PER_WORD of target is bigger than 32
22928
22929 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
22930
22931         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
22932         Translate -B-options to -rpath-link.  Correct existing
22933         rpath-link and conditionalize on !nostdlib.
22934
22935 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22936
22937         * doc/extend.texi (Function Attributes, Variable Attributes):
22938         Fix typos.
22939         * doc/invoke.texi (Debugging Options, Optimize Options)
22940         (i386 and x86-64 Options, MCore Options): Likewise.
22941
22942 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
22943
22944         PR debug/37890
22945         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
22946         it for block local namespace aliases.
22947         (gen_decl_die): Pass context_die to gen_namespace_die.
22948
22949 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22950
22951         PR c/39495
22952         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
22953         minimum or maximum value.
22954
22955 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
22956
22957         * reginfo.c (globalize_reg): Recompute derived reg sets.
22958
22959 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
22960
22961         PR target/39063
22962         * libgcc2.c (mprotect): Do not use signed arguments for
22963         VirtualProtect, use DWORD arguments.  Also fix the 'may
22964         be used uninitialized' warning for the np variable.
22965
22966 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
22967
22968         PR target/39496
22969         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
22970         functions using regparm calling conventions when not optimizing.
22971         (ix86_function_sseregparm): Similarly for sseregparm calling
22972         conventions.
22973
22974 2009-03-19  Li Feng  <nemokingdom@gmail.com>
22975
22976         PR middle-end/39500
22977         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
22978         dependence if the first conflict is after niter iterations.
22979
22980 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
22981
22982         PR middle-end/38609
22983         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
22984         functions with dynamic stack-pointer adjustments.
22985
22986 2009-03-19  Ben Elliston  <bje@au.ibm.com>
22987
22988         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
22989         option; change to -msdata=data.
22990
22991 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22992
22993         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
22994         and -fopenmp.
22995
22996 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
22997
22998         PR target/35180
22999         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
23000
23001 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
23002
23003         * doc/invoke.texi (Code Gen Options): Expand discussion of
23004         -fno-common.
23005
23006 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
23007
23008         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
23009         * matrix-reorg.c (struct matrix_info): Likewise.
23010         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
23011         * rtl.h (struct mem_attrs): Likewise.
23012         * df.h (struct df): Likewise.
23013         * tree-data-ref.h (struct data_dependence_relation): Likewise.
23014         * ira-int.h (struct ira_allocno): Likewise.
23015         * df-scan.c (struct df_collection_rec): Likewise.
23016         * ira.c (struct equivalence): Likewise.
23017         * function.c (struct temp_slot): Likewise.
23018         * cfgloop.h (struct loop): Likewise.
23019
23020         PR debug/39485
23021         * function.c (use_register_for_decl): When not optimizing, disregard
23022         register keyword for variables with types containing methods.
23023
23024 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
23025
23026         PR middle-end/39447
23027         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
23028         (is_simple_operand): Call contains_component_ref_p before calling data
23029         reference analysis that would fail on COMPONENT_REFs.
23030
23031         * tree-vrp.c (search_for_addr_array): Fix formatting.
23032
23033 2009-03-18  Richard Guenther  <rguenther@suse.de>
23034
23035         * tree-vect-transform.c (vect_loop_versioning): Fold the
23036         generated comparisons.
23037         * tree-vectorizer.c (set_prologue_iterations): Likewise.
23038         (slpeel_tree_peel_loop_to_edge): Likewise.
23039
23040 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23041
23042         PR middle-end/37805
23043         * opts.c (print_specific_help): In addition to `undocumented',
23044         accept `separate' and `joined' flags if passed alone.  Describe
23045         output by the first matched one of those.
23046         (common_handle_option): Skip over empty strings.
23047         * gcc.c (display_help): Fix help string for `--help='.
23048         * doc/invoke.texi (Option Summary, Overall Options): With
23049         `--help=', classes and qualifiers can both be repeated, but
23050         only the latter can be negated.  One should not pass only
23051         negated qualifiers.  Fix markup and examples.
23052
23053         Revert
23054         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
23055         PR middle-end/37805
23056         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
23057         and -fhelp=separate.
23058
23059 2009-03-17  Jing Yu  <jingyu@google.com>
23060
23061         PR middle-end/39378
23062         * function.h (struct rtl_data): Move is_thunk from here...
23063         (struct function): ...to here.
23064         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
23065         * varasm.c (assemble_start_function): Change is_thunk from crtl to
23066         cfun.
23067         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
23068         cfun.
23069         (alpha_does_function_need_gp, alpha_start_function): Likewise.
23070         (alpha_output_function_end_prologue): Likewise.
23071         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
23072         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
23073         (rs6000_output_function_epilogue): Likewise.
23074         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
23075
23076 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
23077
23078         PR target/39482
23079         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
23080         from different units in a single alternative.
23081         (*truncdfsf_i387): Ditto.
23082         (*truncxfsf2_mixed): Ditto.
23083         (*truncxfdf2_mixed): Ditto.
23084
23085 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
23086
23087         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
23088         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
23089
23090         PR debug/39474
23091         * tree-ssa-live.c (remove_unused_locals): Don't remove local
23092         unused non-artificial variables when not optimizing.
23093
23094         PR debug/39471
23095         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
23096         DW_TAG_imported_module even if decl is IMPORTED_DECL with
23097         NAMESPACE_DECL in its DECL_INITIAL.
23098
23099         PR middle-end/39443
23100         * optabs.c (set_user_assembler_libfunc): New function.
23101         * expr.h (set_user_assembler_libfunc): New prototype.
23102         * c-common.c: Include libfuncs.h.
23103         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
23104         for memcmp, memset, memcpy, memmove and abort.
23105         * Makefile.in (c-common.o): Depend on libfuncs.h.
23106
23107         PR debug/39412
23108         * dwarf2out.c (gen_inlined_enumeration_type_die,
23109         gen_inlined_structure_type_die, gen_inlined_union_type_die,
23110         gen_tagged_type_instantiation_die): Removed.
23111         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
23112         do nothing.
23113
23114 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
23115
23116         PR testsuite/38526
23117         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
23118         its use.
23119         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
23120         (check-parallel-%): Ditto.
23121         (check-consistency): Ditto.
23122
23123 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
23124
23125         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
23126         local variable rhs by NULL_TREE.
23127
23128 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23129
23130         PR target/39477
23131         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
23132
23133 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23134
23135         PR target/39476
23136         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
23137
23138 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23139
23140         PR target/39473
23141         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
23142         for ms->sysv ABI calls only in 64bit mode.
23143
23144         * config/i386/i386.md (untyped_call): Support 32bit.
23145
23146 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
23147
23148         * doc/extend.texi: Replace x86_65 with x86_64.
23149
23150 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
23151
23152         PR tree-optimization/39455
23153         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
23154         mismatches for POINTER_TYPE_P (type).
23155         (number_of_iterations_le): Likewise.
23156
23157 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23158
23159         * config/picochip/picochip.c: Removed profiling support.
23160         * config/picochip/picochip.md: Removed profiling instruction.
23161         * config/picochip/picochip.h: Removed profiling builtin.
23162
23163 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
23164
23165         * doc/install.texi (--with-host-libstdcxx): Document.
23166
23167 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
23168
23169         PR target/34299
23170         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
23171         generate a warning if the function name does not begin with
23172         "__vector" and the function has either the 'signal' or 'interrupt'
23173         attribute, from here to ...
23174         (avr_declare_function_name): ...here. New function.
23175         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
23176         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
23177
23178 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
23179
23180         PR bootstrap/39454
23181         * cse.c (fold_rtx): Don't modify original const_arg1 when
23182         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
23183         separate variable instead.
23184         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
23185         from out of range shift counts.
23186         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
23187
23188 2009-03-13  Catherine Moore  <clm@codesourcery.com>
23189
23190         * config/i386/x-mingw32 (host-mingw32.o): Replace
23191         diagnostic.h with $(DIAGNOSTIC_H).
23192
23193 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
23194
23195         PR target/39431
23196         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
23197         predicate.
23198         * config/i386/sync.md (sync_compare_and_swap<mode>,
23199         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
23200         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
23201         into a register.
23202         (sync_double_compare_and_swapdi_pic,
23203         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
23204         cmpxchg8b_pic_memory_operand instead of just memory_operand.
23205
23206 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23207
23208         PR target/39445
23209         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
23210
23211 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23212
23213         PR target/39327
23214         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23215         (avx_addsubv4df3): Likewise.
23216         (*avx_addsubv4sf3): Likewise.
23217         (sse3_addsubv4sf3): Likewise.
23218
23219 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23220
23221         PR target/38824
23222         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
23223
23224 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
23225
23226         PR debug/39432
23227         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
23228         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23229         registers for allocnos created from user-defined variables.
23230
23231 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23232
23233         PR target/39181
23234         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
23235         of non-integer mode as well.
23236
23237 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
23238
23239         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
23240         for functions for which the parameter types are unknown.
23241
23242 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
23243
23244         PR target/39137
23245         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
23246         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23247         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23248         * config/i386/i386.c (ix86_local_alignment): For
23249         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23250         long long variables on the stack to avoid dynamic realignment.
23251         Allow the first argument to be a decl rather than type.
23252         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23253
23254 2009-03-11  Nick Clifton  <nickc@redhat.com>
23255
23256         PR target/5362
23257         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23258         options.
23259         Add description to mno-lsim option.
23260         * config/mcore/mcore.h: Remove comment about deprecated m4align
23261         option.
23262         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23263         * doc/invoke.texi: Add description of mno-lsim and
23264         mstack-increment options.
23265
23266         * config/fr30/fr30.opt: Document the -mno-lsim option.
23267         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23268         and -mno-lsim options.
23269
23270 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23271
23272         * fold-const.c (fold_comparison): Only call fold_inf_compare
23273         if the mode supports infinities.
23274
23275 2009-03-11  Jason Merrill  <jason@redhat.com>
23276
23277         PR debug/39086
23278         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
23279         end already did.  Notice GIMPLE_CALL modifications of the result.
23280         Don't copy debug information from an ignored decl or a decl from
23281         another function.
23282
23283 2009-03-10  Richard Guenther  <rguenther@suse.de>
23284             Nathan Froyd  <froydnj@codesourcery.com>
23285
23286         PR middle-end/37850
23287         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
23288         (__divMODE3): Likewise.
23289
23290 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
23291
23292         PR tree-optimization/39394
23293         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
23294         DECL_SIZE_UNIT of variable length FIELD_DECLs.
23295
23296 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23297
23298         * recog.c (verfiy_changes): Disallow renaming of hard regs in
23299         inline asms for register asm ("") declarations.
23300
23301 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
23302
23303         * fold-const.c (fold_unary): Fix comment.
23304
23305 2009-03-07  Jan Hubicka  <jh@suse.cz>
23306
23307         PR target/39361
23308         * tree-inline.c (setup_one_parameter): Do replacement of const
23309         argument by constant in SSA form.
23310
23311 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23312
23313         PR middle-end/38028
23314         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
23315         determine alignment passed to assign_stack_local.
23316         (assign_parms_unsplit_complex): Likewise.
23317         * except.c (sjlj_build_landing_pads): Likewise.
23318
23319 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23320
23321         PR middle-end/39360
23322         * tree-flow.h (add_referenced_var): Return bool instead of void.
23323         * tree-dfa.c (add_referenced_var): Return result of
23324         referenced_var_check_and_insert call.
23325         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
23326         of referenced_var_check_and_insert.
23327
23328         PR debug/39372
23329         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23330         (gen_variable_die): Emit DW_AT_location on abstract static variable's
23331         DIE, don't emit it if abstract origin already has it.
23332         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23333         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23334
23335 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23336
23337         * genpreds.c (needs_variable): Fix parentheses at variable name
23338         detection.
23339         (write_tm_constrs_h): Indent generated code.
23340
23341 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23342
23343         * doc/extend.texi (Function Attributes): Add documentation
23344         for isr attributes.
23345
23346 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23347
23348         PR debug/39387
23349         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23350         take locus from its DECL_SOURCE_LOCATION instead of input_location.
23351
23352 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23353
23354         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23355         the loop as bad.
23356
23357 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
23358
23359         PR debug/39379
23360         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23361         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23362
23363 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
23364
23365         * config/i386/i386.md (R8_REG, R9_REG): New constants.
23366         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23367         constants instead of magic numbers.
23368         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23369         (QI_REG_P): Ditto.
23370         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23371         (x86_64_ms_abi_int_parameter_registers): Ditto.
23372         (x86_64_int_return_registers): Ditto.
23373         (ix86_maybe_switch_abi): Ditto.
23374         (ix86_expand_call): Ditto for clobbered_registers array.
23375         (ix86_hard_regno_mode_ok): Ditto.
23376         (x86_extended_QIreg_mentioned_p): Ditto.
23377
23378 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
23379
23380         PR tree-optimization/39349
23381         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23382
23383         * combine.c (gen_lowpart_for_combine): Use omode when generating
23384         clobber.
23385
23386 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
23387
23388         PR rtl-optimization/39235
23389         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23390
23391 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23392
23393         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23394
23395 2009-03-04  Richard Guenther  <rguenther@suse.de>
23396
23397         PR tree-optimization/39362
23398         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23399         that occur in abnormal PHIs should be varying.
23400
23401 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23402
23403         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23404         Extend comments.
23405         (simple_iv):  Take loop as an argument instead of statement.
23406         * tree-scalar-evolution.h (simple_iv): Declaration changed.
23407         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23408         to simple_iv.
23409         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23410         Ditto.
23411         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23412         * matrix-reorg.c (analyze_transpose): Ditto.
23413         * tree-data-ref.c (dr_analyze_innermost): Ditto.
23414         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23415         * tree-predcom.c (ref_at_iteration): Ditto.
23416         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23417
23418 2009-03-04  Richard Guenther  <rguenther@suse.de>
23419
23420         PR tree-optimization/39358
23421         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23422         escaped_id and callused_id.
23423         (solve_graph): Likewise.
23424
23425 2009-03-04  Richard Guenther  <rguenther@suse.de>
23426
23427         PR tree-optimization/39339
23428         * tree-sra.c (try_instantiate_multiple_fields): Make it
23429         no longer ICE on the above.
23430
23431 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
23432
23433         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23434         that fits within Pmode.
23435
23436 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23437
23438         PR middle-end/10109
23439         * tm.texi (LIBCALL_VALUE): Update description.
23440
23441 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23442
23443         PR middle-end/34443
23444         * doc/extend.texi (section): Update description.
23445
23446 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
23447
23448         PR middle-end/39345
23449         * tree-inline.c (remapped_type): New.
23450         (can_be_nonlocal): Call remapped_type instead of remap_type.
23451
23452 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23453
23454         PR fortran/39354
23455         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23456         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23457
23458 2009-03-03  Richard Guenther  <rguenther@suse.de>
23459
23460         PR middle-end/39272
23461         * tree.c (tree_nonartificial_location): New function.
23462         * tree.h (tree_nonartificial_location): Declare.
23463         * builtins.c (expand_builtin_memory_chk): Provide location
23464         of the call location for artificial function pieces.
23465         (maybe_emit_chk_warning): Likewise.
23466         (maybe_emit_sprintf_chk_warning): Likewise.
23467         (maybe_emit_free_warning): Likewise.
23468         * expr.c (expand_expr_real_1): Likewise.
23469
23470 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23471
23472         PR tree-optimization/39343
23473         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23474         COMPONENT_REF t has ARRAY_TYPE.
23475
23476 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23477
23478         PR middle-end/39335
23479         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23480         when the type precision of the induction variable should be
23481         larger than the type precision of nit.
23482         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23483         * graphite.c (graphite_loop_normal_form): Same.
23484         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23485
23486 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23487
23488         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23489         (*call_1_rex64_ms_sysv): Use named constants instead of magic
23490         numbers to describe clobbered registers.
23491         (*call_value_0_rex64_ms_sysv): Ditto.
23492         * config/i386/mmx.md (mmx_emms): Ditto.
23493         (mmx_femms): Ditto.
23494
23495 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
23496
23497         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
23498         of ABI_64.
23499
23500 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23501
23502         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
23503         (spu_section_type_flags): New function.
23504
23505 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23506
23507         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
23508         reg_class_contents of FLOAT_REGS into a temporary.
23509
23510 2009-03-02  Richard Guenther  <rguenther@suse.de>
23511             Ira Rosen  <irar@il.ibm.com>
23512
23513         PR tree-optimization/39318
23514         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
23515         information to the vectorized statement.
23516
23517 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
23518
23519         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
23520         variable.  Use defined names instead of magic constants for REX SSE
23521         registers.
23522
23523 2009-03-01  Richard Guenther  <rguenther@suse.de>
23524
23525         PR tree-optimization/39331
23526         * omp-low.c (lower_send_shared_vars): Do not receive new
23527         values for the reference of DECL_BY_REFERENCE parms or results.
23528
23529 2009-03-01  Jan Hubicka  <jh@suse.cz>
23530
23531         PR debug/39267
23532         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
23533         BLOCK_NONLOCALIZED_VAR): New macros.
23534         (tree_block): Add nonlocalized_vars.
23535         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
23536         gen_decl_die): Add origin argument.  Allow generation of die with
23537         origin at hand only.
23538         (gen_member_die, gen_type_die_with_usage, force_decl_die,
23539         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
23540         of gen_*.
23541         (gen_block_die): Fix checking for unused blocks.
23542         (process_scope_var): Break out from .... ; work with origins only.
23543         (decls_for_scope) ... here; process nonlocalized list.
23544         (dwarf2out_ignore_block): Look for nonlocalized vars.
23545         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
23546         vars.
23547         (dump_scope_block): Dump them.
23548         * tree-inline.c (remap_decls): Handle nonlocalized vars.
23549         (remap_block): Likewise.
23550         (can_be_nonlocal): New predicate.
23551         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
23552
23553 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23554
23555         * configure: Regenerate.
23556
23557 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23558
23559         * optc-gen.awk: No need to duplicate option flags twice.
23560         Reuse help texts for duplicate options which do not have any.
23561
23562         * gcc.c (display_help): Document --version.
23563
23564         * gcc.c (main): If print_help_list and verbose_flag, ensure
23565         driver output comes before subprocess output.
23566
23567         * optc-gen.awk: Assign all remaining fields to help string,
23568         space-separated, for multi-line help in *.opt.
23569
23570         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
23571         -Wno-pedantic-ms-format is for MinGW targets only.
23572
23573         * doc/options.texi (Option file format): Fix bad indentation,
23574         restoring dropped sentence.
23575
23576 2009-02-28  Jan Hubicka  <jh@suse.cz>
23577
23578         * tree-inline.c (tree_function_versioning): Output debug info.
23579
23580 2009-02-28  Jan Hubicka  <jh@suse.cz>
23581
23582         PR debug/39267
23583         * tree-inline.c (setup_one_parameter): Do not copy propagate
23584         arguments when not optimizing.
23585
23586 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
23587
23588         PR target/39327
23589         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23590         (avx_addsubv4df3): Likewise.
23591         (*avx_addsubv4sf3): Likewise.
23592         (sse3_addsubv4sf3): Likewise.
23593         (*avx_addsubv2df3): Likewise.
23594         (sse3_addsubv2df3): Likewise.
23595         (avx_unpckhps256): Correct item selectors.
23596         (avx_unpcklps256): Likewise.
23597         (avx_unpckhpd256): Likewise.
23598         (avx_unpcklpd256): Likewise.
23599
23600 2009-02-28  Jan Hubicka  <jh@suse.cz>
23601
23602         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
23603         static vars.
23604         (copy_arguments_for_versioning): If var is declared don't declare it.
23605         (tree_function_versioning): First setup substitutions and then copy
23606         args.
23607
23608 2009-02-27  Jan Hubicka  <jh@suse.cz>
23609
23610         PR debug/39267
23611         * cgraph.h (varpool_output_debug_info): Remove.
23612         * cgraphunit.c (varpool_output_debug_info): Remove.
23613         * dwarf2out.c (deferred_locations_struct): New struct
23614         (deferred_locations): New type.
23615         (deferred_locations_list): New static var.
23616         (deffer_location): New function.
23617         (gen_variable_die): Use it.
23618         (decls_for_scope): Output info on local static vars.
23619         (dwarf2out_finish): Process deferred locations.
23620         * varpool.c (varpool_output_debug_info): Remove.
23621
23622 2009-02-27  Jan Hubicka  <jh@suse.cz>
23623
23624         PR debug/39267
23625         * tree.h (TREE_PROTECTED): Fix comment.
23626         (BLOCK_HANDLER_BLOCK): Remove.
23627         (struct tree_block): Remove handler_block add body_block.
23628         (inlined_function_outer_scope_p): New.
23629         (is_body_block): Remove.
23630         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
23631         * dwarf2out.c (is_inlined_entry_point): Remove.
23632         (add_high_low_attributes): Use inlined_function_outer_scope_p.
23633         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
23634         code.
23635         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
23636         * gimplify.c (gimplify_expr): Gimplify body blocks.
23637         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
23638         block with multiple subblocks.
23639         (dump_scope_block): Prettier output; dump more flags and info.
23640         (dump_scope_blocks): New.
23641         (remove_unused_locals): Use dump_scope_blocks.
23642         * tree-flow.h (dump_scope_blocks): Declare.
23643         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
23644         * stmt.c (is_body_block): Remove.
23645         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
23646         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
23647
23648 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
23649
23650         PR middle-end/39308
23651         * graphite.c (graphite_loop_normal_form): Do not call
23652         number_of_iterations_exit from a gcc_assert.
23653
23654 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23655
23656         * config/s390/s390.c (s390_swap_cmp): Look for conditional
23657         jumps if COND is NULL.
23658         (find_cond_jump): New function.
23659         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
23660         * config/s390/s390.md: Remove z10_cobra attribute value.
23661
23662 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
23663
23664         * config/alpha/alpha.h (alpha_expand_mov): Return false if
23665         force_const_mem returns NULL_RTX.
23666
23667 2009-02-26  Jan Hubicka  <jh@suse.cz>
23668
23669         PR debug/39267
23670         * cgraph.h (varpool_output_debug_info): Remove.
23671         * cgraphunit.c (varpool_output_debug_info): Remove.
23672         * dwarf2out.c (deferred_locations_struct): New struct
23673         (deferred_locations): New type.
23674         (deferred_locations_list): New static var.
23675         (deffer_location): New function.
23676         (gen_variable_die): Use it.
23677         (decls_for_scope): Output info on local static vars.
23678         (dwarf2out_finish): Process deferred locations.
23679         * varpool.c (varpool_output_debug_info): Remove.
23680
23681 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
23682
23683         PR rtl-optimization/39241
23684         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
23685         to subreg_offset_representable_p.
23686
23687 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23688
23689         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
23690         execute function prototype.  Get f and nregs from max_reg_num
23691         and get_insns.  Remove the first backward pass as it's dead,
23692         guard the forward pass by flag_expensive_optimizations.
23693         (rest_of_handle_regmove): Delete.
23694         (pass_regmove): Replace it with regmove_optimize.
23695
23696 2009-02-25  Martin Jambor  <mjambor@suse.cz>
23697
23698         PR tree-optimization/39259
23699         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
23700         calls_alloca function flags.
23701         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
23702         calls are detected.
23703
23704 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
23705
23706         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
23707         flags_set_1_rtx, flags_set_1_set): Delete.
23708         (regmove_optimize): Do not call mark_flags_life_zones.
23709
23710 2009-02-24  Julian Brown  <julian@codesourcery.com>
23711
23712         PR target/35965
23713         * config/arm/arm.c (require_pic_register): Only set
23714         cfun->machine->pic_reg once per function.
23715
23716 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
23717
23718         * doc/invoke.texi (Link Options): Document an easier way to pass
23719         options that take arguments to the GNU linker using -Xlinker and -Wl.
23720
23721 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
23722
23723         PR target/33785
23724         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
23725
23726 2009-02-24  Richard Guenther  <rguenther@suse.de>
23727
23728         PR debug/39285
23729         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
23730
23731 2009-02-24  Richard Guenther  <rguenther@suse.de>
23732             Zdenek Dvorak  <ook@ucw.cz>
23733
23734         PR tree-optimization/39233
23735         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
23736         from converting them to a generic type.
23737
23738 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
23739
23740         PR tree-optimization/39260
23741         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
23742         contains a condition with a real type.
23743         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
23744
23745 2009-02-23  Jason Merrill  <jason@redhat.com>
23746
23747         PR c++/38880
23748         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
23749         narrowing_initializer_constant_valid_p.
23750         (narrowing_initializer_constant_valid_p): Don't return
23751         null_pointer_node for adding a pointer to itself.
23752
23753 2009-02-23  Jan Hubicka  <jh@suse.cz>
23754
23755         PR c/12245
23756         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
23757         resizing.
23758
23759 2009-02-23  Jan Hubicka  <jh@suse.cz>
23760
23761         PR tree-optimization/37709
23762         * tree.c (block_ultimate_origin): Move here from dwarf2out.
23763         * tree.h (block_ultimate_origin): Declare.
23764         * dwarf2out.c (block_ultimate_origin): Move to tree.c
23765         * tree-ssa-live.c (remove_unused_scope_block_p):
23766         Eliminate blocks containig no instructions nor live variables nor
23767         nested blocks.
23768         (dump_scope_block): New function.
23769         (remove_unused_locals): Enable removal of dead blocks by default;
23770         enable dumping at TDF_DETAILS.
23771
23772 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23773
23774         * config/i386/i386.c (classify_argument): Don't allow COImode
23775         and OImode.
23776         (function_arg_advance_32): Don't allow OImode.
23777         (function_arg_32): Likewise.
23778         (function_value_32): Likewise.
23779         (return_in_memory_32): Likewise.
23780         (function_arg_64): Remove OImode comment.
23781
23782 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23783
23784         PR target/39261
23785         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
23786         ix86_expand_vector_set for V4DImode in 64bit mode only.
23787         (ix86_expand_vector_init_one_var): Likewise.
23788
23789 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
23790
23791         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
23792
23793 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23794
23795         PR bootstrap/39257
23796         * loop-iv.c: Revert last change.
23797         * emit-rtl.c: Likewise.
23798
23799 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
23800
23801         PR target/39256
23802         * config/i386/i386.c (type_natural_mode): Remove an extra
23803         space in the warning message.
23804         (function_value_32): Handle 32-byte vector modes.
23805         (return_in_memory_32): Likewise.
23806
23807 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
23808
23809         * loop-iv.c (truncate_value): New function.
23810         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
23811         of lowpart_subreg.
23812         (lowpart_subreg): Move to...
23813         * emit-rtl.c: ...here.
23814
23815 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
23816
23817         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
23818         accidental and undocumented change at revision 140860.
23819
23820 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
23821
23822         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
23823         take gimple_seq * arguments.
23824         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
23825         types_compatible_p langhook.
23826
23827 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
23828             Joseph Myers  <joseph@codesourcery.com>
23829
23830         * config/arm/arm.c (arm_builtin_va_list): New function.
23831         (arm_expand_builtin_va_start): Likewise.
23832         (arm_gimplify_va_arg_expr): Likewise.
23833         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
23834         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
23835         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
23836         (va_list_type): New variable.
23837         (arm_mangle_type): Mangle va_list_type appropriately.
23838
23839 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23840
23841         PR middle-end/39157
23842         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
23843         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
23844         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
23845         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
23846         parameter to 1000 for -O1 by default.
23847         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
23848         parameter.
23849         * loop-invariant.c: Include params.h.
23850         (move_loop_invariants): Don't call move_single_loop_invariants on
23851         very large loops.
23852
23853 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
23854
23855         * calls.c (emit_library_call_value_1): Use slot_offset instead of
23856         offset when calculating bounds for indexing stack_usage_map.  Fixes
23857         a buffer overflow with certain target setups.
23858
23859 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
23860
23861         PR target/39240
23862         * calls.c (expand_call): Clear try_tail_call if caller and callee
23863         disagree in promotion of function return value.
23864
23865 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
23866
23867         PR target/39175
23868         * c-common.c (c_determine_visibility): If visibility changed and
23869         DECL_RTL has been already set, call make_decl_rtl to update symbol
23870         flags.
23871
23872 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
23873
23874         PR c++/39188
23875         * varasm.c (assemble_variable): Don't check DECL_NAME when
23876         globalizing a variable.
23877
23878 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
23879
23880         PR c/38483
23881         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
23882         expression before any __builtin_trap call.
23883         * c-typeck.c (build_function_call): Convert and check function
23884         arguments before generating a call to a trap.  Evaluate the
23885         function arguments before the trap.
23886
23887 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
23888
23889         PR target/39228
23890         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
23891         (UNSPEC_FXAM_MEM): New unspec.
23892         (fxam<mode>2_i387_with_temp): New insn and split pattern.
23893         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
23894         memory using fxam<mode>2_i387_with_temp to remove excess precision.
23895
23896 2009-02-19  Richard Guenther  <rguenther@suse.de>
23897
23898         PR tree-optimization/39207
23899         PR tree-optimization/39074
23900         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
23901         storedanything_tree): New.
23902         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
23903         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
23904         (build_succ_graph): Add edges from STOREDANYTHING to all
23905         non-direct nodes.
23906         (init_base_vars): Initialize STOREDANYTHING.
23907         (compute_points_to_sets): Free substitution info after
23908         building the succ graph.
23909         (ipa_pta_execute): Likewise.
23910
23911         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
23912         field.
23913         (do_ds_constraint): Do not add to special var or non-pointer
23914         field solutions.
23915         (type_could_have_pointers): Split out from ...
23916         (could_have_pointers): ... here.  For arrays use the element type.
23917         (create_variable_info_for): Initialize may_have_pointers.
23918         (new_var_info): Likewise.
23919         (handle_lhs_call): Make the HEAP variable unknown-sized.
23920         (intra_create_variable_infos): Use a type with pointers for
23921         PARM_NOALIAS, make it unknown-sized.
23922
23923 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23924
23925         PR target/39224
23926         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
23927
23928 2009-02-18  Jason Merrill  <jason@redhat.com>
23929
23930         PR target/39179
23931         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
23932         value if DECL_EXTERNAL.
23933         * tree-sra.c (sra_walk_gimple_assign): Likewise.
23934         * target.h (gcc_target::binds_local_p): Clarify "module".
23935         * tree.h (TREE_PUBLIC): Clarify "module".
23936
23937 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
23938
23939         PR target/38891
23940         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
23941         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
23942
23943 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
23944
23945         PR target/39082
23946         * c.opt (Wabi): Support C and ObjC.
23947         (Wpsabi): New.
23948
23949         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
23950
23951         * config/i386/i386.c (classify_argument): Warn once about the ABI
23952         change when passing union with long double.
23953
23954         * doc/invoke.texi: Update -Wabi for warning psABI changes.
23955
23956 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
23957
23958         PR c/35447
23959         * c-parser.c (c_parser_compound_statement): Always enter and leave
23960         a scope.
23961
23962 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23963
23964         PR target/34587
23965         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
23966
23967 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
23968
23969         PR tree-optimization/36922
23970         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
23971         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
23972         Likewise.
23973
23974 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23975
23976         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
23977         to 0 for EABI64.
23978
23979 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23980
23981         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
23982
23983 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
23984
23985         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
23986         tree sharing.
23987
23988 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
23989             Richard Sandiford  <rdsandiford@googlemail.com>
23990
23991         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
23992         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
23993         (loongson_biadd): ...this.
23994
23995 2009-02-17  Richard Guenther  <rguenther@suse.de>
23996
23997         PR tree-optimization/39202
23998         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
23999         a var make sure to follow existing collapses.
24000
24001 2009-02-17  Richard Guenther  <rguenther@suse.de>
24002
24003         PR middle-end/39214
24004         * langhooks.c (lhd_print_error_function): Check for NULL block.
24005
24006 2009-02-17  Richard Guenther  <rguenther@suse.de>
24007
24008         PR tree-optimization/39204
24009         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
24010         of the PHI arg.
24011
24012 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
24013
24014         * config/soft-fp/double.h: Update from glibc CVS.
24015
24016 2009-02-17  Richard Guenther  <rguenther@suse.de>
24017
24018         PR tree-optimization/39207
24019         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
24020         strict-aliasing warnings for pointers pointing to NULL.
24021
24022 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
24023
24024         PR c/35446
24025         * c-parser.c (c_parser_braced_init): Call pop_init_level when
24026         skipping until next close brace.
24027
24028 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
24029
24030         PR target/37049
24031         * config/i386/i386.c (ix86_expand_push): Set memory alignment
24032         to function argument boundary.
24033
24034 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24035
24036         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
24037         in the lea_add. Reload eventually constraints it properly.
24038         * config/picochip/constraints.md: Remove the target constraint
24039         "b", since it is not needed anymore.
24040
24041 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
24042
24043         * gthr-dce.h: Uglify function parameter and local variable names.
24044         * gthr-gnat.h: Likewise.
24045         * gthr-mipssde.h: Likewise.
24046         * gthr-nks.h: Likewise.
24047         * gthr-posix95.h: Likewise.
24048         * gthr-posix.h: Likewise.
24049         * gthr-rtems.h: Likewise.
24050         * gthr-single.h: Likewise.
24051         * gthr-solaris.h: Likewise.
24052         * gthr-tpf.h: Likewise.
24053         * gthr-vxworks.h: Likewise.
24054         * gthr-win32.h: Likewise.
24055
24056 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
24057
24058         PR target/39196
24059         * config/i386/i386.md: Restrict the new peephole2 to move
24060         between MMX/SSE registers.
24061
24062 2009-02-15  Richard Guenther  <rguenther@suse.de>
24063
24064         Revert
24065         2009-02-13  Richard Guenther  <rguenther@suse.de>
24066
24067         * configure.ac: Enable LFS.
24068         * configure: Re-generate.
24069         * config.in: Likewise.
24070
24071 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24072
24073         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
24074         spu_srqwbyte, spu_srqwbytebc): Define.
24075         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
24076         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
24077         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
24078         "shrqby_<mode>"): New insn-and-split patterns.
24079         * config/spu/spu.c (expand_builtin_args): Determine and return
24080         number of operands using spu_builtin_description data.
24081         (spu_expand_builtin_1): Use it.
24082
24083 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
24084
24085         PR target/38056
24086         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
24087         TARGET_CONST_GP.
24088
24089 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24090
24091         PR target/39149
24092         * config/i386/i386.c (override_options): Correct warning
24093         messages for -malign-loops, -malign-jumps and -malign-functions.
24094
24095 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24096
24097         PR target/39152
24098         * config/i386/i386.md: Restrict the new peephole2 to move
24099         between the general purpose registers.
24100
24101 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24102
24103         PR target/39162
24104         * config/i386/i386.c (type_natural_mode): Add a new argument.
24105         Return the original mode and warn ABI change if vector size is 32byte.
24106         (function_arg_advance): Updated.
24107         (function_arg): Likewise.
24108         (ix86_function_value): Likewise.
24109         (ix86_return_in_memory): Likewise.
24110         (ix86_sol10_return_in_memory): Likewise.
24111         (ix86_gimplify_va_arg): Likewise.
24112         (function_arg_32): Don't warn ABX ABI change here.
24113         (function_arg_64): Likewise.
24114
24115 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
24116
24117         * loop-iv.c (implies_p): In the final case, test that operands 0
24118         of the two comparisons match.
24119
24120         * config/bfin/bfin.c (find_prev_insn_start): New function.
24121         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
24122         (find_next_insn_start): Move.
24123
24124 2009-02-13  Richard Guenther  <rguenther@suse.de>
24125
24126         * configure.ac: Enable LFS.
24127         * configure: Re-generate.
24128         * config.in: Likewise.
24129
24130 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
24131
24132         PR c/35444
24133         * c-parser.c (c_parser_parms_list_declarator): Discard pending
24134         sizes on syntax error after some arguments have been parsed.
24135
24136 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24137
24138         * doc/invoke.texi (-fira): Remove.
24139
24140 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24141
24142         * caller-save.c: Replace regclass.c with reginfo.c in comments.
24143         * recog.c: Likewise.
24144         * rtl.h: Likewise.
24145
24146 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
24147
24148         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
24149         (umul_ppmm): Likewise.
24150         (count_leading_zeros): Likewise.
24151         (count_trailing_zeros): Likewise.
24152         (UMUL_TIME): Likewise.
24153
24154 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24155
24156         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
24157         soft-fp/t-softfp to tmake_file.
24158
24159         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
24160         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
24161         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
24162         IA64_BUILTIN_INFQ]: New.
24163         (ia64_init_builtins): Initialize __builtin_infq,
24164         __builtin_fabsq and __builtin_copysignq if not HPUX.
24165         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
24166         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
24167
24168         * config/ia64/lib1funcs.asm (__divtf3): Define only if
24169         SHARED is defined.
24170         (__fixtfti): Likewise.
24171         (__fixunstfti): Likewise.
24172         (__floattitf): Likewise.
24173
24174         * config/ia64/libgcc-glibc.ver: New.
24175         * config/ia64/t-fprules-softfp: Likewise.
24176         * config/ia64/sfp-machine.h: Likewise.
24177
24178         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
24179         (LIBGCC2_TF_CEXT): Likewise.
24180         (TF_SIZE): Likewise.
24181         (TARGET_INIT_LIBFUNCS): Likewise.
24182
24183         * config/ia64/t-glibc (SHLINB_MAPFILES):
24184         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
24185
24186 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24187
24188         * config/i386/i386.c (construct_container): Rewrite processing
24189         BLKmode with X86_64_SSE_CLASS.
24190
24191 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
24192
24193         PR target/39152
24194         * config/i386/i386.md: Replace simplify_replace_rtx with
24195         replace_rtx in the new peephole2.
24196
24197 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
24198
24199         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
24200         loop unrolling do not happen at -O2.
24201
24202 2009-02-12  Michael Matz  <matz@suse.de>
24203
24204         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
24205
24206 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24207
24208         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
24209         for -g3.
24210
24211 2009-02-12  Ben Elliston  <bje@au.ibm.com>
24212
24213         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
24214         patterns when updating the back chain.  Missed in the 2009-02-10
24215         change.
24216
24217 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
24218
24219         * doc/extend.texi (Decimal Floating Types): Update identifier of
24220         draft TR and list of missing support.
24221
24222 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
24223
24224         PR middle-end/39154
24225         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
24226         bit to variable length decl's flags, add it also to its
24227         pointer replacement variable.
24228
24229 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
24230             Jakub Jelinek  <jakub@redhat.com>
24231
24232         PR target/39118
24233         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
24234         (memory_blockage): New expander.
24235         (*memory_blockage): New insn pattern.
24236         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
24237         instead of general blockage at the end of function prologue when
24238         frame pointer is used to access red zone area.  Do not emit blockage
24239         when profiling, it is emitted in generic code.
24240         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
24241         function epilogue when frame pointer is used to access red zone area.
24242
24243 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
24244
24245         PR target/38824
24246         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24247         by arithmetic with memory operands.
24248         * config/i386/predicates.md (commutative_operator): New.
24249
24250 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
24251
24252         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24253         bulleted lists.
24254
24255 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
24256
24257         * alias.h (record_alias_subset): Declare.
24258         * alias.c (record_alias_subset): Make global.
24259
24260 2009-02-10  Nick Clifton  <nickc@redhat.com>
24261
24262         * tree-parloops.c: Change license to GPLv3.
24263         * ipa-struct-reorg.c: Change license to GPLv3.
24264         * ipa-struct-reorg.h: Change license to GPLv3.
24265
24266 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
24267
24268         PR c/39084
24269         * c-decl.c (start_struct): Return NULL on error.
24270
24271 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
24272
24273         PR middle-end/39124
24274         * cfgloopmanip.c (remove_path): Call remove_bbs after
24275         cancel_loop_tree, not before it.
24276
24277         PR target/39139
24278         * function.h (struct function): Add has_local_explicit_reg_vars bit.
24279         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
24280         VAR_DECLs were seen.
24281         * tree-ssa-live.c (remove_unused_locals): Recompute
24282         cfun->has_local_explicit_reg_vars.
24283         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
24284         copies or clearings if cfun->has_local_explicit_reg_vars.
24285
24286 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
24287
24288         PR target/39118
24289         * config/i386/i386.c (expand_prologue): Emit blockage at the end
24290         of function prologue when frame pointer is used to access
24291         red zone area.
24292
24293 2009-02-10  Richard Guenther  <rguenther@suse.de>
24294
24295         PR middle-end/39127
24296         * gimplify.c (gimple_regimplify_operands): Always look if
24297         we need to create a temporary.
24298
24299 2009-02-10  Richard Guenther  <rguenther@suse.de>
24300
24301         PR tree-optimization/39132
24302         * tree-loop-distribution.c (todo): New global var.
24303         (generate_memset_zero): Trigger TODO_rebuild_alias.
24304         (tree_loop_distribution): Return todo.
24305
24306 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
24307
24308         PR target/39119
24309         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
24310         (x86_64_reg_class_name): Removed.
24311         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
24312         first one isn't X86_64_SSE_CLASS or any other ones aren't
24313         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
24314         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
24315         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
24316         and 3 X86_64_SSEUP_CLASS.
24317         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
24318         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
24319
24320 2009-02-10  Ben Elliston  <bje@au.ibm.com>
24321
24322         * config/rs6000/rs6000.md (allocate_stack): Always use an update
24323         form instruction to update the stack back chain word, even if the
24324         user has disabled the generation of update instructions.
24325         (movdi_<mode>_update_stack): New.
24326         (movsi_update_stack): Likewise.
24327         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
24328         always use an update form instruction to update the stack back
24329         chain word.
24330
24331 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
24332
24333         PR middle-end/38953
24334         * graphite.c (if_region_set_false_region): After moving a region in
24335         the false branch of a condition, remove the empty dummy basic block.
24336         (gloog): Remove wrong fix for PR38953.
24337
24338 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24339
24340         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24341         generation due to implicit sign extension.
24342
24343 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
24344
24345         PR middle-end/38981
24346         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24347         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24348
24349 2009-02-09  Richard Guenther  <rguenther@suse.de>
24350
24351         PR middle-end/35202
24352         * convert.c (convert_to_real): Disable (float)fn((double)x)
24353         to fnf(x) conversion if errno differences may occur and
24354         -fmath-errno is set.
24355
24356 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
24357
24358         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24359         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24360         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24361
24362 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24363
24364         PR c/35434
24365         * c-common.c (handle_alias_attribute): Disallow attribute for
24366         anything not a FUNCTION_DECL or VAR_DECL.
24367
24368 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
24369
24370         PR c/39035
24371         * real.c (do_compare): Special-case compare of zero against
24372         decimal float value.
24373
24374 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24375
24376         PR c/36432
24377         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24378         as indicating flexible array members unless the field itself is
24379         being declarared as the incomplete array.
24380
24381 2009-02-06  Jan Hubicka  <jh@suse.cz>
24382
24383         PR tree-optimization/38844
24384         * ipa-inline.c (try_inline): Stop inlining recursion when edge
24385         is already inlined.
24386
24387 2009-02-06  Richard Guenther  <rguenther@suse.de>
24388
24389         PR middle-end/38977
24390         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24391         fork because we may expand it as __gcov_fork.
24392
24393 2009-02-06  Nick Clifton  <nickc@redhat.com>
24394
24395         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24396
24397 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
24398
24399         PR tree-optimization/35659
24400         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24401         vn_phi_eq): Shortcut if hashcode does not match.
24402         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24403         NULL operands.
24404         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24405         and avoid iterative_hash_expr.
24406         (FOR_EACH_VALUE_ID_IN_SET): New.
24407         (value_id_compare): Remove.
24408         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24409         sort expressions by value id.
24410
24411 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
24412
24413         PR target/38991
24414         * config/sh/predicates.md (general_movsrc_operand): Don't check
24415         the subreg of system registers here.
24416
24417 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
24418
24419         PR c++/39106
24420         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24421         on the copied decl.
24422
24423 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
24424
24425         PR rtl-optimization/39110
24426         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24427         addresses, not aligned ones.
24428
24429 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
24430             Richard Guenther  <rguenther@suse.de>
24431
24432         PR tree-optimization/39100
24433         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24434         comment says and add edges.
24435
24436 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
24437
24438         PR c/35435
24439         * c-common.c (handle_tls_model_attribute): Ignore attribute for
24440         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24441
24442 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
24443
24444         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24445         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24446         register_bb_in_sese, new_sese, free_sese): Moved.
24447         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24448         outermost_loop_in_scop, build_scop_iteration_domain,
24449         expand_scalar_variables_ssa_name, get_vdef_before_scop,
24450         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24451         Use loop_in_sese_p instead of loop_in_scop_p.
24452         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24453         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24454         (scopdet_basic_block_info): Fix bug in scop detection.
24455         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24456         eq_loop_to_cloog_loop): Remove.
24457         (nb_loops_around_loop_in_scop, nb_loop
24458         ref_nb_loops): Moved here...
24459         * graphite.h (ref_nb_loops): ... from here.
24460         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24461         (loop_domain_dim, loop_iteration_vector_dim): Remove.
24462         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24463         * testsuite/gcc.dg/graphite/scop-19.c: New
24464
24465 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
24466             Hans-Peter Nilsson  <hp@axis.com>
24467
24468         PR rtl-optimization/37889
24469         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24470         Move offset handling from PLUS to before the switch.  Use new
24471         arguments when considering SYMBOL_REFs too.
24472         (rtx_addr_can_trap_p): Pass dummy offset and size.
24473         (enum may_trap_p_flags): Remove.
24474         (may_trap_p_1): Pass size from MEM_SIZE.
24475
24476         PR rtl-optimization/38921
24477         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24478         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24479         * rtlanal.c (may_trap_after_code_motion_p): Delete.
24480         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24481
24482 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
24483
24484         AVX Programming Reference (January, 2009)
24485         * config/i386/sse.md (*vpclmulqdq): New.
24486
24487 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
24488
24489         PR tree-optimization/38977
24490         PR gcov-profile/38292
24491         * calls.c (special_function_p): Disregard __builtin_ prefix.
24492
24493 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
24494
24495         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24496         non-indexable addresses even before reload.
24497
24498 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24499
24500         PR c/29129
24501         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
24502         as having variable size.  Do not give an error for unnamed
24503         parameters with [*] declarators.  Give a warning for type names
24504         with [*] declarators and mark them as variable size.
24505         * c-parser.c (c_parser_sizeof_expression): Do not give an error
24506         for sizeof applied to [*] type names.
24507
24508 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24509
24510         PR C++/36607
24511         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
24512
24513 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24514
24515         * gcc.c (process_command): Update copyright notice dates.
24516         * gcov.c (print_version): Likewise.
24517         * gcov-dump.c (print_version): Likewise.
24518         * mips-tfile.c (main): Likewise.
24519         * mips-tdump.c (main): Likewise.
24520
24521 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24522
24523         PR c/35433
24524         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
24525         for composite type involving a zero-length array type.
24526
24527 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24528
24529         PR target/35318
24530         * function.c (match_asm_constraints_1): Skip over
24531         initial optional % in the constraint.
24532
24533         PR inline-asm/39059
24534         * c-parser.c (c_parser_postfix_expression): If fixed point is not
24535         supported, don't accept FIXED_CSTs.
24536         * c-decl.c (finish_declspecs): Error if fixed point is not supported
24537         and _Sat is used without _Fract/_Accum.  Set specs->type to
24538         integer_type_node for cts_fract/cts_accum if fixed point is not
24539         supported.
24540
24541 2009-02-02  Catherine Moore  <clm@codesourcery.com>
24542
24543         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
24544
24545 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
24546
24547         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
24548         (ABI_HAS_64BIT_SYMBOLS): Use it.
24549         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
24550
24551 2009-02-02  Paul Brook  <paul@codesourcery.com>
24552
24553         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
24554
24555 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
24556
24557         PR inline-asm/39058
24558         * recog.h (asm_operand_ok): Add constraints argument.
24559         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
24560         recurse on matching constraint.
24561         (check_asm_operands): Pass constraints as 3rd argument to
24562         asm_operand_ok.  Don't look up matching constraint here.
24563         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
24564         to asm_operand_ok.
24565
24566 2009-02-02  Ben Elliston  <bje@au.ibm.com>
24567
24568         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
24569         TARGET_NARROW_VOLATILE_BITFIELD macro names.
24570
24571 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24572
24573         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
24574         information.  Remove some obsolete information.  Reorganize.
24575
24576         * config/pa/fptr.c: Revert license to GPL 2.
24577         * config/pa/milli64.S: Likewise.
24578
24579 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24580
24581         PR target/38904
24582         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
24583         LIBRARY name in, instead of hard-coding it.
24584         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
24585         extra target make frag to tmake_files according to EH model.
24586         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
24587         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
24588         frags that define makefile variable EH_MODEL appropriately.
24589         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
24590         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
24591         to "-sjlj" according to type of EH configured.
24592         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24593         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
24594         to "_sjlj" according to type of EH configured.
24595         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24596         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
24597         (SHLIB_LINK):  Add missing semicolon to if-else construct.
24598         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24599         string value of "pe_dll" command-line option.
24600         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
24601         (SHLIB_SONAME):  Use it when overriding t-cygming default.
24602         (SHLIB_IMPLIB):  Override t-cygming default.
24603         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24604         string value of "pe_dll" command-line option.
24605
24606 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24607
24608         PR target/38952
24609         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
24610         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
24611
24612 2009-01-31  Richard Guenther  <rguenther@suse.de>
24613
24614         PR tree-optimization/38937
24615         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
24616         computing the transitive closure.
24617
24618 2009-01-30  Richard Guenther  <rguenther@suse.de>
24619
24620         PR tree-optimization/39041
24621         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24622         Propagate variable indices only if the types match for this stmt.
24623
24624 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
24625
24626         PR target/39013
24627         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
24628         inline but never defined.
24629
24630 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
24631
24632         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
24633         (*insv_h_di_reg_extimm): New insn.
24634         (*insv_l<mode>_reg_extimm): New insn.
24635
24636 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24637
24638         * config/picochip/picochip.c (flag_conserve_stack): set
24639         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
24640         fconserve-stack. Reduce call-overhead used by inliner.
24641
24642 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24643
24644         PR/38157
24645         * common.opt (flag_conserve_stack): Initialised to zero.
24646
24647 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
24648
24649         PR/39002
24650         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
24651         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
24652         method.
24653
24654 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
24655
24656         * ira-color.c (allocno_reload_assign): Update comments.
24657         * regmove.c (regmove_optimize): Likewise.
24658
24659         * ra.h: Removed.
24660
24661 2009-01-29  Robert Millan  <rmh@aybabtu.com>
24662
24663         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
24664         * config/i386/kopensolaris-gnu.h: New file.  Undefine
24665         `MD_UNWIND_SUPPORT'.
24666         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
24667
24668 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
24669
24670         PR tree-optimization/39007
24671         * tree-loop-distribution.c (generate_builtin): Use
24672         recompute_dominator to compute the immediate dominator of the
24673         basic block just after the loop.
24674
24675 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
24676
24677         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
24678         (ASM_OUTPUT_DWARF_PCREL): Define.
24679
24680 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
24681
24682         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
24683         * doc/passes.texi: Remove entries about regclass, local-alloc, and
24684         global.  Modify entries about regmove and IRA.
24685
24686         * ra-conflict.c: Remove the file.
24687
24688         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
24689
24690         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
24691         (pass_regclass_init): Rename to pass_reginfo_init.
24692
24693         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
24694
24695         * toplev.h (flag_ira): Remove.
24696
24697         * caller-save.c (setup_save_areas): Remove flag_ira.
24698
24699         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
24700
24701         * global.c: Remove the file.
24702
24703         * opts.c (decode_options): Remove flag_ira.
24704
24705         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
24706
24707         * regmove.c: Modify file description.
24708         (find_use_as_address, try_auto_increment): Define them only if
24709         AUTO_INC_DEC is defined.
24710         (replacement_quality, replace_in_call_usage, fixup_match_1,
24711         stable_and_no_regs_but_for_p): Remove.
24712         (reg_set_in_bb): Make it static.
24713         (regmove_optimize): Remove flag_ira and code which worked for
24714         !flag_ira.
24715
24716         * local-alloc.c: Remove the file.
24717
24718         * common.opt (fira): Remove.
24719
24720         * ira.c: Include except.h.
24721         (eliminable_regset): Move from global.c.
24722         (mark_elimination): Ditto.  Remove flag_ira.
24723         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
24724         equiv_mem_modified, validate_equiv_mem_from_store,
24725         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
24726         contains_replace_regs, memref_referenced_p, memref_used_between_p,
24727         no_equiv, recorded_label_ref): Move from local-alloc.c.
24728         (update_equiv_regs): Ditto.  Make it static.
24729         (print_insn_chain, print_insn_chains): Move it from global.c.
24730         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
24731         (build_insn_chain): Ditto.  Make it static.
24732         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
24733         Rename to init_live_subregs.
24734         (gate_ira): Remove flag_ira.
24735
24736         * regclass.c: Rename reginfo.c.  Change file description.
24737         (FORBIDDEN_INC_DEC_CLASSES): Remove.
24738         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
24739         (init_reg_sets_1): Remove code for evaluation of
24740         reg_class_superclasses and losing_caller_save_reg_set.
24741         (init_regs): Remove init_reg_autoinc.
24742         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
24743         ok_for_base_p_nonstrict): Remove.
24744         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
24745         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
24746         corresponding entries.
24747         (dump_regclass, record_operand_costs, scan_one_insn,
24748         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
24749         record_address_regs, auto_inc_dec_reg_p): Remove.
24750         (gt-regclass.h): Rename to gt-reginfo.h.
24751
24752         * rtl.h (dump_global_regs, retry_global_alloc,
24753         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
24754
24755         * Makefile.in (RA_H): Remove.
24756         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
24757         Rename regclass.o to reginfo.o.
24758         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
24759         gt-reginfo.h.
24760         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
24761         (GTFILES): Rename regclass.c to reginfo.c.
24762
24763         * passes.c (init_optimization_passes): Remove pass_local_alloc and
24764         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
24765
24766         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
24767         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
24768         Remove flag_ira.
24769         (finish_spills): Ditto.  Remove code for !flag_ira.
24770
24771 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
24772
24773         PR middle-end/35854
24774         * doc/invoke.texi (rtl debug options): Complete rewrite.
24775         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
24776         to auto_inc_dec".
24777         * mode-switching.c (pass_mode_switching): Rename pass from
24778         "mode-sw" to "mode_sw".
24779         * except.c (pass_convert_to_eh_ranges): Rename pass from
24780         "eh-ranges" to "eh_ranges".
24781         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
24782         to "subreg1".
24783
24784
24785 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
24786             Alexander Monakov  <amonakov@ispras.ru>
24787
24788         PR middle-end/38857
24789         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
24790         register.
24791         (move_exprs_to_boundary): Change return type and pass through
24792         should_move from move_op.  Relax assert.  Update usage ...
24793         (schedule_expr_on_boundary): ... here.  Use should_move instead of
24794         cant_move.
24795         (move_op_orig_expr_found): Indicate that insn was disconnected from
24796         stream.
24797         (code_motion_process_successors): Do not call after_merge_succs
24798         callback if original expression was not found when traversing any of
24799         the branches.
24800         (code_motion_path_driver): Change return type.  Update prototype.
24801         (move_op): Update comment.  Add a new parameter (should_move).  Update
24802         prototype.  Set *should_move based on indication provided by
24803         move_op_orig_expr_found.
24804
24805 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
24806
24807         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
24808         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
24809         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
24810         * config/rs6000/rs6000.c (rs6000_override_options): Default
24811         avoid-indexed-addresses on for Power6, off for everything else.
24812         (avoiding_indexed_address_p): New function.
24813         (rs6000_legitimize_address): Use it.
24814         (rs6000_legitimate_address): Likewise.
24815         * config/rs6000/rs6000.md (movXX_updateX): Likewise
24816
24817 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
24818
24819         PR tree-optimization/38997
24820         * tree-loop-distribution.c (generate_memset_zero): Use
24821         POINTER_PLUS_EXPR for a pointer addition.
24822
24823 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
24824
24825         * config/s390/s390.md (bswap<mode>2): New pattern added.
24826
24827 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24828
24829         * config/s390/s390.md (*tls_load_31): Added type attribute.
24830
24831 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24832
24833         * config/s390/s390.md: Fix a few comments.
24834
24835 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
24836
24837         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
24838         (*tm<mode>_full): Fixed z10prop attribute.
24839         (*tst<mode>_extimm): Fixed z10prop attribute.
24840         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
24841         (*tstqiCCT_cconly): Fixed z10prop attribute.
24842         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
24843         (*movsi_larl): Fixed z10prop attribute.
24844         (*movsi_zarch): Fixed z10prop attribute.
24845         (*movsi_eas): Fixed z10prop attribute.
24846         (*movhi): Fixed z10prop attribute.
24847         (*movqi): Fixed z10prop attribute.
24848         (*movstrictqi): Fixed z10prop attribute.
24849         (*mov<mode>): Fixed z10prop attribute.
24850         (*movcc): Fixed z10prop attribute.
24851         (*sethighpartdi_64): Fixed z10prop attribute.
24852         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
24853         (*negdi2_sign_cc): Fixed z10prop attribute.
24854         (*negdi2_sign): Fixed z10prop attribute.
24855         (*absdi2_sign_cc): Fixed z10prop attribute.
24856         (*absdi2_sign): Fixed z10prop attribute.
24857         (*negabsdi2_sign_cc): Fixed z10prop attribute.
24858         (*negabsdi2_sign): Fixed z10prop attribute.
24859         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
24860         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
24861         (doloop_si64): Fixed z10prop attribute.
24862         (doloop_si31): Fixed z10prop attribute.
24863         (doloop_long): Fixed z10prop attribute.
24864         (indirect_jump): Fixed z10prop attribute.
24865         (nop): Fixed z10prop attribute.
24866         (main_base_64): Fixed z10prop attribute.
24867         (reload_base_64): Fixed z10prop attribute.
24868
24869 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24870
24871         PR rtl-optimization/38740
24872         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
24873         if !optimize.
24874         * config/mips/mips.c (mips_reorg): Likewise.
24875
24876 2009-01-28  Richard Guenther  <rguenther@suse.de>
24877
24878         PR tree-optimization/38926
24879         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
24880         with the correct value id to a value.
24881         (do_regular_insertion): Use the value number of edoubleprime
24882         for the value number of the expr.
24883
24884         Revert
24885         2008-08-21  Richard Guenther  <rguenther@suse.de>
24886
24887         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
24888         a PHI ask VN if it is already available.
24889         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
24890         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
24891
24892 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
24893
24894         PR middle-end/38934
24895         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
24896         set to varying whenever max has TREE_OVERFLOW set, similarly
24897         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
24898
24899 2009-01-28  Richard Guenther  <rguenther@suse.de>
24900
24901         PR middle-end/38908
24902         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
24903         uninitialized aggregate uses in call arguments.
24904
24905 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
24906
24907         PR tree-optimization/38984
24908         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
24909         the nothing_id variable if -fno-delete-null-pointer-checks.
24910
24911 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
24912
24913         PR target/38988
24914         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
24915         (set_got_offset_rex64): Ditto.
24916
24917 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
24918
24919         PR target/38941
24920         * doc/extend.texi: Improve local variable with asm reg.
24921
24922 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
24923
24924         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
24925         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
24926         was not supplied then set warn_packed_bitfield_compat to the
24927         default value of 1.
24928         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
24929         against 1.
24930
24931 2009-01-27  Richard Guenther  <rguenther@suse.de>
24932
24933         PR tree-optimization/38503
24934         * cfgexpand.c (expand_gimple_basic_block): Ignore
24935         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
24936         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
24937         variables that cannot have TBAA applied.
24938         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
24939         statements.
24940
24941 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
24942
24943         PR middle-end/38969
24944         * calls.c (initialize_argument_information): Do not wrap complex
24945         arguments in SAVE_EXPR.
24946
24947 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
24948
24949         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
24950         (INSTALL_LIBGCC): Revert typo commit.
24951
24952 2009-01-26  Richard Guenther  <rguenther@suse.de>
24953
24954         PR tree-optimization/38745
24955         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
24956         from special handling.
24957
24958 2009-01-26  Richard Guenther  <rguenther@suse.de>
24959
24960         PR tree-optimization/38745
24961         * tree-ssa.c (execute_update_addresses_taken): Do not include
24962         variables that cannot possibly be a register in not_reg_needs.
24963         Do not clear TREE_ADDRESSABLE on vars that may not become
24964         registers.
24965         * tree-ssa.c (update_alias_info_1): Include those in the set
24966         of addressable vars.
24967
24968 2009-01-26  Richard Guenther  <rguenther@suse.de>
24969
24970         PR middle-end/38851
24971         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
24972         * tree-ssa-dse.c: Include langhooks.h
24973         (execute_simple_dse): Remove stores with zero size.
24974
24975 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
24976
24977         PR c/38957
24978         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
24979         as PLUS_EXPR.
24980
24981 2009-01-24  Julian Brown  <julian@codesourcery.com>
24982
24983         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
24984         config/arm/linux-atomic.c.
24985         * config/arm/linux-atomic.c: New.
24986
24987 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
24988
24989         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
24990         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
24991         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
24992
24993 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
24994
24995         PR c/38938
24996         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
24997         properly.
24998
24999 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
25000
25001         PR tree-optimization/38953
25002         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
25003         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
25004         (gloog): Split the exit of the scop when the scop exit is a loop exit.
25005         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
25006         changed the CFG.
25007
25008 2009-01-24  Paul Brook  <paul@codesourcery.com>
25009
25010         * config/arm/neon.md (neon_type): Move to arm.md.
25011         (neon_mov<VSTRUCT>): Add neon_type attribute.
25012         * config/arm/arm.md (neon_type): Move to here.
25013         (conds): Add "unconditioal" and use as default for NEON insns.
25014
25015 2009-01-24  Ben Elliston  <bje@au.ibm.com>
25016
25017         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
25018         void *' warning from -Wc++-compat.
25019         * Makefile.in (dominance.o-warn): Remove.
25020
25021 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
25022
25023         PR tree-optimization/38932
25024         * fold-const.c (fold_unary_ignore_overflow): New.
25025         * tree.h (fold_unary_ignore_overflow): Declare.
25026         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
25027         * tree-ssa-sccvn.c (visit_reference_op_load,
25028         simplify_unary_expression): Likewise.
25029
25030 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
25031
25032         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
25033         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
25034         regardless of their type.
25035         * c-common.c (handle_packed_attribute): Don't ignore packed on
25036         bitfields.
25037         * c.opt (Wpacked-bitfield-compat): New warning option.
25038         * stor-layout.c (place_field): Warn if offset of a field changed.
25039         * doc/extend.texi (packed): Mention the ABI change.
25040         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
25041         (Warning Options): Add it to the list.
25042
25043 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25044
25045         * c-opts.c (c_common_post_options): Fix a typo in comments.
25046
25047 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
25048
25049         PR middle-end/38615
25050         * gimplify.c (gimplify_init_constructor): Fix promotion of const
25051         variables to static.
25052         * doc/invoke.texi (-fmerge-all-constants): Update description.
25053
25054 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
25055
25056         PR target/38931
25057         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
25058         (*movdi_1_rex64): Use type "mmx" for alternative 5.
25059
25060 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
25061
25062         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
25063         a word boundary.
25064         (LOCAL_ALIGNMENT): Similarly.
25065
25066 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25067             Joseph Myers  <joseph@codesourcery.com>
25068
25069         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
25070         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
25071         * config/arm/arm-tune.md: Regenerate.
25072         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
25073         -march=iwmmxt2.
25074
25075 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25076
25077         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
25078         version number to five.
25079
25080 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
25081
25082         PR c++/38930
25083         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
25084         * c-common.c (set_underlying_type): Likewise.
25085         (is_typedef_decl ): Likewise
25086         * tree.h: Likewise
25087         (set_underlying_type): Likewise.
25088         (is_typedef_type): Likewise.
25089
25090 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
25091
25092         PR middle-end/38587
25093         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
25094         crossing setjmps.
25095
25096 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
25097
25098         PR bootstrap/37660
25099         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
25100         (LIBGCC_SPEC):  Don't define.
25101         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
25102
25103 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
25104
25105         PR rtl-optimization/38879
25106         * alias.c (base_alias_check): Unaligned access via AND address can
25107         alias all surrounding object types except those with sizes equal
25108         or wider than the size of unaligned access.
25109
25110 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
25111
25112         PR c++/26693
25113         * c-decl.c (clone_underlying_type): Move this ...
25114         * c-common.c (set_underlying_type): ... here.
25115         Also, make sure the function properly sets TYPE_STUB_DECL() on
25116         the newly created typedef variant type.
25117         (is_typedef_decl ): New entry point.
25118         * tree.h: Added a new member member_types_needing_access_check to
25119         struct tree_decl_non_common.
25120         (set_underlying_type): New entry point.
25121         (is_typedef_type): Likewise.
25122
25123 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
25124
25125         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
25126         Check whether two instructions have memory references that
25127         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
25128         are helper functions for traversing.
25129         * alias.h (insn_alias_sets_confilict_p): New prototypes.
25130         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
25131         not to draw dependency edge for instructions with non-conflicting
25132         alias sets.
25133
25134 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
25135
25136         PR other/38758
25137         * longlong.h: Update copyright years.  Use soft-fp license notice.
25138         Sync __clz_tab declaration with glibc.
25139
25140 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
25141
25142         PR target/30687
25143         * doc/extend.texi (syscall_linkage): New.
25144         (version_id): Modify.
25145
25146 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25147             Richard Guenther  <rguenther@suse.de>
25148
25149         PR tree-optimization/38747
25150         PR tree-optimization/38748
25151         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
25152         conversion if the base address is an indirect reference and the
25153         aliasing sets could cause issues.
25154
25155 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25156
25157         * common.opt (fgraphite, fgraphite-identity): Add comment for
25158         explaining why these options are not documented.
25159
25160 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25161
25162         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
25163         gimple_call_lhs is NULL.
25164
25165 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
25166
25167         PR target/38868
25168         * emit-rtl.c (adjust_address_1): Make sure memref is never
25169         overwritten.
25170
25171 2009-01-20  Ben Elliston  <bje@au.ibm.com>
25172
25173         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25174         const qualifier from arg parameter. Remove unnecessary cast to char *.
25175         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25176         const qualifier from arg 2.
25177
25178 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
25179
25180         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
25181
25182 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
25183
25184         PR c/38869
25185         * rtl.h (reinit_regs): New prototype.
25186         * regclass.c: Include ira.h.
25187         (reinit_regs): New.
25188         * Makefile.in (regclass.o): Add ira.h.
25189         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
25190
25191 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
25192
25193         PR target/38736
25194         * c-common.c (handle_aligned_attribute): Use
25195         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
25196         default alignment value.
25197
25198         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
25199
25200         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
25201         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
25202
25203         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
25204         __BIGGEST_ALIGNMENT__.
25205
25206         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
25207
25208 2009-01-18  Richard Guenther  <rguenther@suse.de>
25209
25210         PR tree-optimization/38819
25211         * tree-flow.h (operation_could_trap_helper_p): Declare.
25212         * tree-eh.c (operation_could_trap_helper_p): Export.
25213         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
25214         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
25215         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
25216         are about to insert a possibly trapping instruction and fail
25217         in this case.
25218
25219 2009-01-18  Andreas Schwab  <schwab@suse.de>
25220
25221         * doc/install.texi (Configuration): Remove obsolete paragraph
25222         about use of --with-gnu-ld with --with-gnu-as.
25223
25224 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
25225
25226         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
25227         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
25228         Follow spelling conventions.
25229
25230 2009-01-18  Ben Elliston  <bje@au.ibm.com>
25231
25232         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
25233         C++ warning about implicit conversion from void * to struct
25234         bitmap_head_def *.
25235         (bitmap_obstack_free): Likewise for bitmap_element *.
25236         * Makefile.in (bitmap.o-warn): Remove.
25237
25238 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
25239
25240         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
25241
25242 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
25243             Tobias Grosser  <tobi.grosser@amd.com>
25244
25245         * graphite.c (graphite_trans_scop_block): Do not block single
25246         nested loops.
25247
25248 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
25249
25250         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25251         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25252         test with assertion.
25253
25254 2009-01-16  Richard Guenther  <rguenther@suse.de>
25255
25256         PR tree-optimization/38835
25257         PR middle-end/36227
25258         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25259         and INT + PTR -> (INT)(PTR p+ INT) folding.
25260         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25261
25262 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
25263
25264         PR target/38554
25265         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25266         the subreg from a lowpart subreg if it is also casting the value.
25267
25268 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25269             Tobias Grosser  <tobi.grosser@amd.com>
25270
25271         * graphite.c (compare_prefix_loops): New.
25272         (build_scop_canonical_schedules): Rewritten.
25273         (graphite_transform_loops): Move build_scop_canonical_schedules
25274         after build_scop_iteration_domain.
25275
25276 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25277             Tobias Grosser  <tobi.grosser@amd.com>
25278
25279         * graphite.c (add_conditions_to_domain): Add the loops to
25280         the dimension of the iteration domain.  Do copy the domain
25281         only when it exists.
25282         (build_scop_conditions_1): Do not call add_conditions_to_domain.
25283         (add_conditions_to_constraints): New.
25284         (can_generate_code_stmt, can_generate_code): Removed.
25285         (gloog): Do not call can_generate_code.
25286         (graphite_transform_loops): Call add_conditions_to_constraints
25287         after building the iteration domain.
25288
25289 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
25290
25291         PR tree-optimization/38789
25292         * tree-ssa-threadedge.c
25293         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
25294         __builtin_constant_p.
25295
25296 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
25297
25298         * dce.c (delete_unmarked_insns): Reversed the order that insns are
25299         examined before deleting them.
25300
25301 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
25302
25303         * function.c (aggregate_value_p): Correctly extract the function
25304         type from CALL_EXPR_FN lookup.
25305
25306 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25307
25308         * config/picochip/picochip.c (picochip_override_options): Revert
25309         CFI asm flag disable commited previously.
25310
25311 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25312             Tobias Grosser  <tobi.grosser@amd.com>
25313             Jan Sjodin  <jan.sjodin@amd.com>
25314
25315         * graphite.c (scan_tree_for_params): On substractions negate
25316         all the coefficients of the term.
25317         (clast_to_gcc_expression_red): New.  Handle reduction expressions
25318         of more than two operands.
25319         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
25320         (get_vdef_before_scop): Handle also the case of default definitions.
25321
25322 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
25323
25324         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
25325         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
25326         Also use them when walking CALL_INSN_FUNCTION_USAGE.
25327
25328 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
25329             Joey Ye  <joey.ye@intel.com>
25330
25331         PR middle-end/37843
25332         * cfgexpand.c (expand_stack_alignment): Don't update stack
25333         boundary nor check incoming stack boundary here.
25334         (gimple_expand_cfg): Update stack boundary and check incoming
25335         stack boundary here.
25336
25337 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
25338
25339         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25340
25341 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
25342
25343         PR rtl-optimization/38245
25344         * calls.c (expand_call): Add stack arguments to
25345         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25346         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25347         in regs and partially in memory or BLKmode arguments.
25348         (emit_library_call_value_1): Add stack arguments to
25349         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25350         ACCUMULATE_OUTGOING_ARGS).
25351         * dce.c: Include tm_p.h.
25352         (find_call_stack_args): New function.
25353         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
25354         argument.
25355         (mark_insn): Call find_call_stack_args for CALL_Ps.
25356         (prescan_insns_for_dce): Walk insns backwards in bb rather than
25357         forwards.  Allocate and free arg_stores bitmap if needed, pass it
25358         down to deletable_insn_p, don't mark stores set in arg_stores
25359         bitmap, clear the bitmap at the beginning of each bb.
25360         * Makefile.in (dce.o): Depend on $(TM_P_H).
25361
25362 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
25363
25364         PR target/22599
25365         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25366         to make sure the insn is a conditional test (bug 22599).  Reformat a
25367         few long lines.
25368
25369 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
25370
25371         PR middle-end/38431
25372         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25373         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25374         (gloog): Do not call cleanup_tree_cfg.
25375         (graphite_transform_loops): Call cleanup_tree_cfg after all
25376         scops have been code generated.
25377
25378 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
25379         * doc/gty.texi (Invoking the garbage collector): Added new node
25380         and section documenting ggc_collect.
25381
25382 2009-01-14  Richard Guenther  <rguenther@suse.de>
25383
25384         PR tree-optimization/38826
25385         PR middle-end/38477
25386         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25387         initialization notes only if we actually emitted a warning.
25388         (intra_create_variable_infos): Add constraints for a result decl
25389         that is passed by hidden reference.
25390         (build_pred_graph): Mark all related variables non-direct on
25391         address-taking.
25392
25393 2009-01-14  Nick Clifton  <nickc@redhat.com>
25394
25395         * ira-conflicts.c: Include addresses.h for the definition of
25396         base_reg_class.
25397         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25398         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25399
25400 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
25401
25402         PR target/38811
25403         * Makefile.in (ira-lives.o): Add except.h.
25404
25405         * ira-lives.c: Include except.h.
25406         (process_bb_node_lives): Process can_throw_internal.
25407
25408 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
25409
25410         PR rtl-optimization/38774
25411         * combine.c (simplify_set): When undoing cc_use change, don't do
25412         PUT_CODE on the newly created comparison, but instead put back the
25413         old comparison.
25414
25415 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
25416
25417         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25418         values.  Remove duplicate arm8 entry.
25419
25420 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25421
25422         PR tree-optimization/38786
25423         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25424         the SSA_NAME case of expand_scalar_variables_expr.
25425         Set the type of an expression to the type of its assign statement.
25426         (expand_scalar_variables_expr): Also gather the scalar computation
25427         used to index the memory access.  Do not pass loop_p.
25428         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
25429         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25430         the gimple_stmt_iterator where it inserts new code.
25431         Do not pass loop_p.
25432         (copy_bb_and_scalar_dependences): Do not pass loop_p.
25433         (translate_clast): Update call to copy_bb_and_scalar_dependences.
25434
25435 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25436
25437         * graphite.h (debug_value): Removed.
25438         * graphite.c (debug_value): Removed.
25439
25440 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25441
25442         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25443         ldrd/strd with two 32-bit instructions.
25444
25445 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25446
25447         * config/arm/arm.c (struct processors): Pass for speed down into
25448         cost helper functions.
25449         (const_ok_for_op): Handle COMPARE and inequality nodes.
25450         (arm_rtx_costs_1): Rewrite.
25451         (arm_size_rtx_costs): Update prototype.
25452         (arm_rtx_costs): Pass speed down to helper functions.
25453         (arm_slowmul_rtx_costs): Rework cost calculations.
25454         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25455         (arm_9e_rtx_costs): Likewise.
25456
25457 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
25458
25459         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25460         relocations of local symbols wider than UNITS_PER_WORD are not valid.
25461         (alpha_legitimize_address): Do not split local symbols wider than
25462         UNITS_PER_WORD into HIGH/LO_SUM parts.
25463
25464 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
25465
25466         PR bootstrap/38580
25467         * gcc.c (process_command): Replace call to execvp with calls
25468         to pex_one and exit.
25469
25470 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
25471
25472         PR target/29141
25473         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25474         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25475         variant for devices with 3-byte PC.
25476         (__tablejump_elpm__): New.
25477
25478 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25479
25480         PR c/32041
25481         * c-parser.c (c_parser_postfix_expression): Allow `->' in
25482         offsetof member-designator, handle it as `[0].'.
25483
25484 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25485
25486         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25487         function when not using named sections on targets with named sections
25488         if branch distance is less than 262132.
25489
25490 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
25491
25492         * combine.c (combine_instructions):  Recompute
25493         optimize_this_for_speed_p  for each BB in the main combine loop.
25494
25495 2009-01-12  Tomas Bily  <tbily@suse.cz>
25496
25497         PR middlend/38385
25498         * tree-loop-distribution.c (prop_phis): New function.
25499         (generate_builtin): Call prop_phis.
25500         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
25501
25502 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25503
25504         PR tree-optimization/38807
25505         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
25506         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
25507
25508 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
25509
25510         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
25511         subreg of op0 to the original op0.
25512
25513 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
25514
25515         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
25516
25517 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
25518
25519         PR debug/7055
25520         * mips-tfile.c (parse_def): Fix parsing of def strings
25521         starting with digits.
25522
25523 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
25524
25525         PR target/38695
25526         * config/arm/arm.c (arm_is_long_call_p): Don't call
25527         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
25528
25529 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
25530
25531         * regrename.c (regrename_optimize): Fix dumping.
25532         (find_oldest_value_reg): Preserve REG_POINTER.
25533         (copy_hardreg_forward_1): Likewise.
25534
25535 2009-01-09  Diego Novillo  <dnovillo@google.com>
25536
25537         * gimple.h (struct gimple_statement_base) <uid>: Document
25538         the restrictions on its use.
25539         (gimple_uid): Tidy.
25540         (gimple_set_uid): Tidy.
25541
25542 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25543
25544         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
25545         zero guard even if align_bytes != 0 and count is smaller than
25546         size_needed.
25547
25548 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
25549
25550         PR rtl-optimization/38495
25551         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
25552         (add_range_and_copies_from_move_list): Print all added ranges.
25553         Add ranges to memory optimized destination.
25554
25555 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25556
25557         PR target/38686
25558         PR target/38708
25559         * config/i386/i386.c (override_options): Reject
25560         -mstringop-strategy=rep_8byte with -m32.
25561         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
25562         to 1.  Do count comparison against epilogue_size_needed at compile
25563         time even when count_exp was constant forced into register.  For
25564         size_needed don't jump to epilogue, instead just avoid aligning
25565         and invoke the body algorithm.  If need_zero_guard, add zero guard
25566         even if count is non-zero, but smaller than size_needed + number of
25567         bytes that could be stored for alignment.
25568         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
25569         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
25570         but smaller than size_needed + number of bytes that could be stored
25571         for alignment.  Compare size_needed with epilogue_size_needed instead
25572         of desired_align - align, don't adjust size_needed, pass
25573         epilogue_size_needed to the epilogue expanders.
25574
25575         PR c/35742
25576         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
25577
25578 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25579
25580         * pa.c (last_address): Change to unsigned.
25581         (update_total_code_bytes): Change argument to unsigned.  Don't
25582         check if insn addresses are set.
25583         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
25584         addresses are not set.
25585         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
25586
25587 2009-01-09  Nick Clifton  <nickc@redhat.com>
25588
25589         * config/sh/symbian.c: Replace uses of DECL_INLINE with
25590         DECL_DECLARED_INLINE_P.
25591
25592 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25593
25594         PR middle-end/38347
25595         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
25596         GET_MODE (op0) in operand_subword_force calls.
25597
25598         PR middle-end/38771
25599         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
25600         fold_convert arg0 operands to TREE_TYPE (op0) first.
25601
25602 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
25603
25604         * params.def (ira-max-conflict-table-size): Decrease default value
25605         to 1000.
25606
25607 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
25608
25609         PR tree-optimization/37031
25610         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
25611         on parameter_set.
25612         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
25613         allocate it using gc instead of heap, use VEC_quick_push instead of
25614         VEC_safe_push.
25615         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
25616         instead of heap, use VEC_quick_push instead of VEC_safe_push.
25617         * tree-data-ref.h (struct access_matrix): Change matrix to gc
25618         allocated vector from heap allocated.
25619         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
25620         * tree-loop-linear.c (linear_transform_loops): Allocate nest
25621         vector only after perfect_loop_nest_depth call.
25622
25623 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
25624             Jan Sjodin  <jan.sjodin@amd.com>
25625
25626         PR tree-optimization/38559
25627         * graphite.c (debug_value, copy_constraint,
25628         swap_constraint_variables, scale_constraint_variable, ): New.
25629         (get_lower_bound, get_upper_bound): Removed.
25630         (graphite_trans_bb_strip_mine): Clean up this code that works
25631         only for constant number of iterations.  Fully copy upper and
25632         lower bound constraints, not only the constant part of them.
25633         * graphite.h (debug_value): Declared.
25634
25635 2009-01-08  Ira Rosen  <irar@il.ibm.com>
25636
25637         PR tree-optimization/37194
25638         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
25639         Don't add the cost of cost model guard in prologue to scalar
25640         outside cost in case of known number of iterations.
25641
25642 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25643             Alan Modra  <amodra@bigpond.net.au>
25644
25645         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
25646         non-word-aligned REG+CONST addressing.
25647
25648 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25649
25650         PR target/38706
25651         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
25652         free_after_compilation when outputting a thunk.
25653         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
25654         Do not call free_after_compilation here.
25655
25656 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25657
25658         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
25659         (ix86_valid_target_attribute_inner_p): Ditto.
25660
25661 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
25662
25663         PR tree-optimization/38492
25664         PR tree-optimization/38498
25665         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
25666         * tree-chrec.h (scev_is_linear_expression): Declared.
25667         * graphite.c (graphite_cannot_represent_loop_niter): New.
25668         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
25669         (graphite_loop_normal_form): Use gcc_assert.
25670         (scan_tree_for_params): Use CASE_CONVERT.
25671         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
25672         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
25673         Use gcc_assert.  Discard scops that contain unhandled cases.
25674         (build_scop_conditions): Return a boolean status for unhandled cases.
25675         (strip_mine_profitable_p): Print the loop number, not its depth.
25676         (is_interchange_valid): Pass the depth of the loop nest, don't
25677         recompute it wrongly.
25678         (graphite_trans_bb_block): Same.
25679         (graphite_trans_bb_block): Print tentative of loop blocking.
25680         (graphite_trans_scop_block): Do not print that the loop has been
25681         blocked.
25682         (graphite_transform_loops): Do not handle scops that contain condition
25683         scalar phi nodes.
25684
25685 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
25686
25687         AVX Programming Reference (December, 2008)
25688         * config/i386/avxintrin.h (_mm256_stream_si256): New.
25689         (_mm256_stream_pd): Likewise.
25690         (_mm256_stream_ps): Likewise.
25691
25692         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
25693         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
25694         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
25695         (bdesc_special_args): Add __builtin_ia32_movntdq256,
25696         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
25697         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
25698         (ix86_expand_special_args_builtin): Likewise.
25699
25700         * config/i386/sse.md (AVXMODEDI): New.
25701         (avx_movnt<mode>): Likewise.
25702         (avx_movnt<mode>): Likewise.
25703         (<sse>_movnt<mode>): Remove AVX support.
25704         (sse2_movntv2di): Likewise.
25705
25706 2009-01-07  Richard Guenther  <rguenther@suse.de>
25707
25708         PR middle-end/38751
25709         * fold-const.c (extract_muldiv): Remove obsolete comment.
25710         (fold_plusminus_mult_expr): Undo MINUS_EXPR
25711         to PLUS_EXPR canonicalization for the canonicalization.
25712
25713 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
25714
25715         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
25716         hosted cross-compilers generating less efficient code.
25717
25718 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25719
25720         * function.h (rtl_data): Add a dbr_scheduled_p field.
25721         * reorg.c (dbr_schedule): Set it.
25722         (gate_handle_delay_slots): Check it.
25723         * config/mips/mips.c (mips_base_delayed_branch): Delete.
25724         (mips_reorg): Check flag_delayed_branch instead of
25725         mips_base_delayed_branch.
25726         (mips_override_options): Don't set mips_base_delayed_branch
25727         or flag_delayed_branch.
25728
25729 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
25730
25731         PR rtl-optimization/38426.
25732         * ira.c (ira): Set current_function_is_leaf earlier.
25733
25734 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
25735
25736         PR rtl-optimization/38722
25737         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
25738         too early, only set a flag and modify after last possible
25739         undo_all point.
25740
25741 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
25742
25743         PR c/34252
25744         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
25745         * real.c (decimal_single_format): Correct values of emin and emax.
25746         (decimal_double_format): Ditto.
25747         (decimal_quad_format): Ditto.
25748         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
25749         computation of DECnn_MIN and DECnn_MAX for corrected values of
25750         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
25751         __DECnn_MIN__, and adjust its computation for the corrected value
25752         of emin.
25753
25754 2009-01-06  Jan Hubicka  <jh@suse.cz>
25755
25756         PR target/38744
25757         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
25758
25759 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
25760
25761         * doc/contrib.texi (Contributors): Slightly adjust the end note.
25762         Add Robert Clark to the list of testers.
25763
25764 2009-01-06  Jan Hubicka  <jh@suse.cz>
25765             Kai Tietz  <kai.tietz@onevision.com>
25766
25767         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
25768         * config/i386/i386.c (ix86_expand_call): Add clobbers.
25769
25770 2009-01-06  Jan Hubicka  <jh@suse.cz>
25771             Kai Tietz  <kai.tietz@onevision.com>
25772
25773         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
25774         for w64 ABI.
25775         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
25776         (ix86_nsaved_regs): Count only general purpose regs.
25777         (ix86_nsaved_sseregs): New.
25778         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
25779         to 16 for w64; compute padding and size of sse reg save area.
25780         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
25781         general purpose regs.
25782         (ix86_emit_save_sse_regs_using_mov): New.
25783         (ix86_expand_prologue): Save SSE regs if needed.
25784         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
25785         (ix86_emit_restore_sse_regs_using_mov): New.
25786         (ix86_expand_epilogue): Save SSE regs if needed.
25787
25788 2009-01-06  Jan Hubicka  <jh@suse.cz>
25789             Kai Tietz  <kai.tietz@onevision.com>
25790
25791         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
25792         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
25793         functions when accumulate outgoing args is off.
25794
25795 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25796
25797         PR bootstrap/38742
25798         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
25799         before using pseudos_have_intersected_live_ranges_p.
25800
25801         * ira-int.h (ira_assert): Always define.
25802
25803 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
25804
25805         AVX Programming Reference (December, 2008)
25806         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
25807         (_mm256_permute2_pd): Likewise.
25808         (_mm_permute2_ps): Likewise.
25809         (_mm256_permute2_ps): Likewise.
25810         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
25811         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
25812
25813         * config/i386/i386.c (ix86_builtins): Remove
25814         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
25815         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
25816         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
25817         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
25818         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
25819         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
25820         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
25821         __builtin_ia32_vpermil2ps256.
25822         (ix86_init_mmx_sse_builtins): Updated.
25823         (ix86_expand_args_builtin): Likewise.
25824
25825 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25826
25827         * pa.c (output_call): Relocate non-jump insns in the delay slot of
25828         long absolute calls when generating PA 2.0 code.
25829
25830 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
25831
25832         PR rtl-optimization/38583
25833         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
25834
25835         * params.def (ira-max-conflict-table-size): New.
25836
25837         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
25838
25839         * ira.h (ira_conflicts_p): New external definition.
25840
25841         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
25842         table.  Report this.  Return result of building.
25843         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
25844         building conflict table.
25845
25846         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
25847         (ira_color): Use ira_conflicts_p.
25848
25849         * global.c: Include ira.h.
25850         (pseudo_for_reload_consideration_p, build_insn_chain): Use
25851         ira_conflicts_p.
25852
25853         * Makefile.in (global.o): Add ira.h.
25854
25855         * ira-build.c (mark_all_loops_for_removal,
25856         propagate_some_info_from_allocno): New.
25857         (remove_unnecessary_allocnos): Call
25858         propagate_some_info_from_allocno.
25859         (remove_low_level_allocnos): New.
25860         (remove_unnecessary_regions): Add parameter.  Call
25861         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
25862         parameter to remove_unnecessary_regions.
25863         (ira_build): Remove all regions but root if the conflict table was
25864         not built.  Update conflict hard regs for allocnos crossing calls.
25865
25866         * ira.c (ira_conflicts_p): New global.
25867         (ira): Define and use ira_conflicts_p.
25868
25869         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25870         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
25871         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
25872
25873 2009-01-06  Ben Elliston  <bje@au.ibm.com>
25874
25875         * gengtype-lex.l (YY_NO_INPUT): Define.
25876
25877 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25878
25879         PR c/34911
25880         * c-common.c (handle_vector_size_attribute): Also reject
25881         BOOLEAN_TYPE types.
25882
25883 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
25884
25885         PR tree-optimization/38492
25886         * graphite.c (rename_map_elt, debug_rename_elt,
25887         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
25888         rename_map_elt_info, eq_rename_map_elts,
25889         get_new_name_from_old_name, bb_in_sese_p): Moved around.
25890         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
25891         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
25892         (sese_build_livein_liveouts): New.
25893         (new_sese, free_sese): New.
25894         (new_scop): Call new_sese.
25895         (free_scop): Call free_sese.
25896         (rename_variables_from_edge, rename_phis_end_scop): Removed.
25897         (register_old_new_names): Renamed register_old_and_new_names.
25898         (register_scop_liveout_renames, add_loop_exit_phis,
25899         insert_loop_close_phis, struct igp,
25900         default_liveout_before_guard, add_guard_exit_phis,
25901         insert_guard_phis, copy_renames): New.
25902         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
25903         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
25904         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
25905         (scop_adjust_phis_for_liveouts): New.
25906         (gloog): Call scop_adjust_phis_for_liveouts.
25907
25908         * graphite.h (struct sese): Documented.  Added fields liveout,
25909         num_ver and livein.
25910         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
25911         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
25912         (struct scop): Added field liveout_renames.
25913         (SCOP_LIVEOUT_RENAMES): New.
25914
25915 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25916
25917         PR tree-optimization/38510
25918         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
25919         (translate_clast): Call recompute_all_dominators before
25920         graphite_verify.
25921         (gloog): Call recompute_all_dominators before graphite_verify.
25922
25923 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25924             Jan Sjodin  <jan.sjodin@amd.com>
25925
25926         PR tree-optimization/38500
25927         * graphite.c (create_sese_edges): Call fix_loop_structure after
25928         splitting blocks.
25929
25930 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
25931
25932         * config.gcc: Add m32r*-*-rtems*.
25933         * config/m32r/rtems.h: New file.
25934
25935 2009-01-05  Ben Elliston  <bje@au.ibm.com>
25936
25937         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
25938         (.po.pox): Likewise.
25939         (po/gcc.pot): Likewise.
25940
25941 2009-01-04  David S. Miller  <davem@davemloft.net>
25942
25943         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
25944         (STARTING_FRAME_OFFSET): Always set to zero.
25945
25946 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25947
25948         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
25949         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
25950         fixed-point types, and vectors of the same.
25951
25952 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
25953
25954         * config/mips/sync.md (*mb_barrier): Rename to...
25955         (*memory_barrier): ...this.
25956
25957 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
25958
25959         * doc/extend.texi (Function Attributes): Move @cindex after @item
25960         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
25961         and put in alphabetical order. Fix 'target' name and put in order.
25962         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
25963         typos.
25964
25965 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
25966
25967         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
25968         (memory_barrier): Expand as unspec instead of unspec_volatile.
25969         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25970         (*memory_barrier): Define as unspec instead of unspec_volatile.
25971         Use (match_dup 0) as input operand.
25972
25973         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
25974         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
25975         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
25976         scratch register.  Remove operand 1.
25977         (*stbar): Define as unspec instead of unspec_volatile.
25978         Use (match_dup 0) as input operand, remove (const_int 8).
25979         (*membar): Define as unspec instead of unspec_volatile.
25980         Use (match_dup 0) as input operand, remove input operand 2.
25981
25982         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
25983         (memory_barrier): Expand as unspec instead of unspec_volatile.
25984         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25985         (*memory_barrier): Define as unspec instead of unspec_volatile.
25986         Use (match_dup 0) as input operand.
25987
25988         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
25989         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25990         Set volatile flag on operand 0.
25991         (*memory_barrier): New insn pattern.
25992
25993         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
25994         insn operands.
25995         (*memory_barrier): Use (match_dup 0) as input operand.
25996
25997         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
25998         Remove mem:BLK from insn operands.  Use Pmode scratch register.
25999         Set volatile flag on operand 0.
26000         (*mb_internal): New insn pattern.
26001
26002         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
26003
26004 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26005
26006         PR middle-end/38586
26007         * function.c (struct temp_slot): Move to the section of the file
26008         that deals with temp slots.  Remove field 'address'.
26009         (temp_slot_address_table): New hash table of address -> temp slot.
26010         (struct temp_slot_address_entry): New struct, items for the table.
26011         (temp_slot_address_compute_hash, temp_slot_address_hash,
26012         temp_slot_address_eq, insert_temp_slot_address): Support functions
26013         for the new table.
26014         (find_temp_slot_from_address): Rewrite to use the new hash table.
26015         (remove_unused_temp_slot_addresses): Remove addresses of temp
26016         slots that have been made available.
26017         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
26018         worker function for remove_unused_temp_slot_addresses.
26019         (assign_stack_temp_for_type): Don't clear the temp slot address list.
26020         Add the temp slot address to the address -> temp slot map.
26021         (update_temp_slot_address): Update via insert_temp_slot_address.
26022         (free_temp_slots): Call remove_unused_temp_slot_addresses.
26023         (pop_temp_slots): Likewise.
26024         (init_temp_slots): Allocate the address -> temp slot map, or empty
26025         the map if it is already allocated.
26026         (prepare_function_start): Initialize temp slot processing.
26027
26028 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26029
26030         PR middle-end/38584
26031         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
26032         Calculate the size of all stack vars assuming no packing of stack
26033         vars will happen, replacing a quadratic algorithm with a linear one.
26034
26035 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26036
26037         PR target/38707
26038         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
26039         can't be used.
26040
26041 2009-01-03  Diego Novillo  <dnovillo@google.com>
26042
26043         * doc/contrib.texi: Update contributions.
26044
26045 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26046
26047         PR c++/38705
26048         * builtins.c (fold_builtin_memory_op): Give up if either operand
26049         is volatile.  Set srctype or desttype to non-qualified version
26050         of the other type.
26051
26052         PR c/38700
26053         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
26054         and FUNCTION_DECLs.
26055
26056 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
26057
26058         PR rtl-optimization/35805
26059         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
26060         problem if fast dce is able to remove any instructions.
26061         * dce.c (dce_process_block): Fix dump message.
26062
26063 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
26064
26065         PR 33649
26066         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
26067
26068 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
26069
26070         PR middle-end/38690
26071         * tree-flow.h (op_code_prio, op_prio): New prototypes.
26072         * tree-pretty-print.c (op_code_prio): New function.
26073         (op_prio): No longer static.  Use op_code_prio.
26074         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
26075         Use op_prio and op_code_prio to determine if () should be
26076         printed around operand(s) or not.
26077
26078         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
26079         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
26080         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
26081         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
26082         pp_character instead of pp_string for single letter printing.
26083
26084 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
26085
26086         * doc/extend.texi: Fix '#pragma GCC option' typo.
26087
26088 2009-01-02  Richard Guenther  <rguenther@suse.de>
26089
26090         * doc/install.texi (--enable-checking): Mention different
26091         default for stage1.
26092         (--enable-stage1-checking): Document.
26093
26094 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
26095
26096         PR middle-end/30142
26097         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
26098         case to be an error.
26099
26100 2009-01-02  Ben Elliston  <bje@au.ibm.com>
26101
26102         * config/fp-bit.h (pack_d): Constify argument.
26103         * config/fp-bit.c (makenan): Constify return type. Remove casts.
26104         (isnan): Constify argument.
26105         (isinf): Likewise.
26106         (iszero): Likewise.
26107         (pack_d): Likewise.
26108         (_fpadd_parts): Constify return type.
26109         (_fpmul_parts): Likewise.
26110         (_fpdiv_parts): Likewise.
26111
26112 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
26113
26114         PR c/36489
26115         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
26116         warn about overwriting initializer with side-effects or
26117         -Woverride-init if !IMPLICIT.
26118         (output_init_element): Likewise.  Pass IMPLICIT down to
26119         add_pending_init.
26120         (process_init_element): Add IMPLICIT argument.  Pass it down
26121         to output_init_element.
26122         (push_init_element, pop_init_level, set_designator): Adjust
26123         process_init_element callers.
26124         (set_nonincremental_init, set_nonincremental_init_from_string):
26125         Adjust add_pending_init callers.
26126         (output_pending_init_elements): Adjust output_init_element callers.
26127         * c-tree.h (process_init_element): Adjust prototype.
26128         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
26129         process_init_element callers.
26130
26131 \f
26132 Copyright (C) 2009 Free Software Foundation, Inc.
26133
26134 Copying and distribution of this file, with or without modification,
26135 are permitted in any medium without royalty provided the copyright
26136 notice and this notice are preserved.