OSDN Git Service

2010-05-21 Kai Tietz <kai.tietz@onevision.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2010-05-21  Kai Tietz  <kai.tietz@onevision.com>
2
3         PR/44139
4         * varasm.c (emutls_decl): Merge attributes to new decl.
5
6 2010-05-21  Eric Botcazou  <ebotcazou@adacore.com>
7
8         PR middle-end/44101
9         * gimplify.c (gimplify_init_constructor): Build a VIEW_CONVERT_EXPR
10         around the uniquized constructor if its type requires a conversion.
11
12 2010-05-21  Jakub Jelinek  <jakub@redhat.com>
13
14         PR debug/44205
15         * tree-cfgcleanup.c (tree_forwarder_block_p): Return false if
16         at -O0 goto_locus of any of the incoming edges differs from
17         goto_locus of outgoing edge, or gimple_location of any of the
18         labels differs.
19
20 2009-09-14  Vladimir Makarov <vmakarov@redhat.com>
21
22         * ira.c (ira_non_ordered_class_hard_regs): Define.
23         (setup_class_hard_regs): Initialize ira_non_ordered_class_hard_regs.
24         * ira-int.h (ira_non_ordered_class_hard_regs): Declare.
25         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Increase
26         cost of unaligned hard regs when allocating multi-reg pseudos.
27
28 2010-05-20  Richard Sandiford  <rdsandiford@googlemail.com>
29
30         * config.gcc (mips*-sde-elf*): Don't use sdemtk.opt.
31         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_no_float
32         for TARGET_NO_FLOAT.
33         * config/mips/mips.c (mips_file_start): Expand conditional expression
34         into "if" statements.  Use .gnu_attribute 4,0 for TARGET_NO_FLOAT.
35         (mips_override_options): Move -mno-float override -msoft-float and
36         -mhard-float.
37         * config/mips/mips.opt (mno-float): Move from sdemtk.opt, but add
38         Condition(TARGET_SUPPORTS_NO_FLOAT).
39         * config/mips/sdemtk.h (TARGET_OS_CPP_BUILTINS): Don't set
40         __mips_no_float here.
41         (SUBTARGET_OVERRIDE_OPTIONS): Delete.
42         (TARGET_SUPPORTS_NO_FLOAT): Define.
43         * config/mips/sdemtk.opt: Delete.
44
45 2010-05-20  Segher Boessenkool  <segher@kernel.crashing.org>
46
47         * ipa-prop.c (compute_complex_ancestor_jump_func): Bail
48         out if !cond.
49
50 2010-05-20  Uros Bizjak  <ubizjak@gmail.com>
51
52         PR target/43733
53         * configure.ac (gcc_cv_as_ix86_sahf): Switch to 64bit mode.
54         * configure: Regenerate.
55         * config.in: Regenerate.
56         * config/i386/i386.md (x86_sahf_1): Conditionally output 0x9e
57         instead of sahf only for 64bit targets.
58
59 2010-05-20  Jakub Jelinek  <jakub@redhat.com>
60
61         PR debug/44178
62         * haifa-sched.c (initiate_bb_reg_pressure_info): Do not call
63         setup_ref_regs for DEBUG_INSNs.
64
65 2010-05-20  Jan Hubicka  <jh@suse.cz>
66
67         PR middle-end/44197
68         * varpool.c (varpool_remove_node): Handle in-varpool aliases.
69
70 2010-05-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
71
72         PR bootstrap/43870
73         * df-scan.c (df_ref_compare): Stabilize sort.
74
75 2010-05-20  Jakub Jelinek  <jakub@redhat.com>
76
77         * dwarf2out.c (new_loc_descr_op_bit_piece): Add offset
78         argument.  Don't use DW_OP_piece if offset is non-zero,
79         put offset into second DW_OP_bit_piece argument.
80         (dw_sra_loc_expr): Adjust callers.  For memory expressions
81         compute offset.
82
83 2010-05-20  Hans-Peter Nilsson  <hp@axis.com>
84
85         PR target/44202
86         * config/cris/cris.md ("*addsi3_v32"): Correct "cc"
87         settings for 16-bit-constant "addo" alternative.
88
89 2010-05-19  James E. Wilson  <wilson@codesourcery.com>
90
91         * config/mips/mips-dsp.md (add<DSPV:mode>3,
92         mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>): Add ISA_HAS_DSP condition.
93
94         PR target/43764
95         * mips.c (mips_call_expr_from_insn): New arg second_call.  Set it.
96         (mips_annotate_pic_calls): Pass new arg to mips_call_expr_from_insn.
97         Use it.
98
99 2010-05-19  Joseph Myers  <joseph@codesourcery.com>
100
101         * diagnostic.c (FLOAT, FFS): Don't undefine.
102         * passes.c, pretty-print.c, rtl-error.c, toplev.c: Likewise.
103         * cse.c, regmove.c: Remove comments about stdio.h and rtl.h
104         include ordering.
105
106 2010-05-19  Richard Sandiford  <rdsandiford@googlemail.com>
107
108         * combine.c (propagate_for_debug): Call make_compound_operation
109         on the source value.
110         (try_combine): When implementing a split chosen by find_split_point,
111         either copy i2src or set it to null.  Assert that i2src is not null
112         before substituting into CALL_INSN_FUNCTION_USAGE.
113
114 2010-05-19  Anatoly Sokolov  <aesok@post.ru>
115
116         * double-int.h (double_int_ior): New function.
117         * tree.h (build_int_cst_wide_type): Remove.
118         * tree.c (build_int_cst_wide_type): Remove.
119         * fold-const.c (native_interpret_int): Use double_int_to_tree instead
120         of build_int_cst_wide_type.
121         * stor-layout.c (set_sizetype): (Ditto.).
122         * dojump.c (do_jump): Use build_int_cstu instead of
123         build_int_cst_wide_type.
124
125 2010-05-19  Eric Botcazou  <ebotcazou@adacore.com>
126
127         * langhooks.h (struct lang_hooks): Add new field deep_unsharing.
128         * langhooks-def.h (LANG_HOOKS_DEEP_UNSHARING): New macro.
129         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_DEEP_UNSHARING.
130         * gimplify.c: (mostly_copy_tree_r): Copy trees under SAVE_EXPR and
131         TARGET_EXPR nodes, but only once, if instructed to do so.  Do not
132         propagate the 'data' argument to copy_tree_r.
133         (copy_if_shared_r): Remove bogus ATTRIBUTE_UNUSED marker.
134         Propagate 'data' argument to walk_tree.
135         (copy_if_shared): New function.
136         (unmark_visited_r): Remove bogus ATTRIBUTE_UNUSED marker.
137         (unmark_visited): New function.
138         (unshare_body): Call copy_if_shared instead of doing it manually.
139         (unvisit_body): Call unmark_visited instead of doing it manually.
140
141 2010-05-19  Nathan Froyd  <froydnj@codesourcery.com>
142
143         * hooks.h (hook_tree_tree_tree_bool_null): Rename to...
144         (hook_tree_tree_int_treep_bool_null): ...this.  Update signature.
145         * hooks.c: Likewise.
146         * target-def.h (TARGET_FOLD_BUILTIN): Define to
147         hook_tree_tree_int_treep_bool_null.
148         * target.h: (struct gcc_target): Update signature of fold_builtin
149         field.
150         * doc/tm.texi (TARGET_FOLD_BUILTIN): Update description and signature.
151         * builtins.c (fold_call_expr): Pass call_expr_nargs and CALL_EXPR_ARGP
152         instead of the call expression.
153         (fold_builtin_call_array): Pass n and argarray directly.
154         (fold_call_stmt): Pass nargs and gimple_call_arg_ptr instead of
155         consing a list.
156         * config/alpha/alpha.c (alpha_fold_builtin): Update signature.  Lift
157         MAX_ARGS check out of the loop.  Delete declaration of `arity', declare
158         `i' and use it in place of `arity'.
159         * config/sparc/sparc.c (sparc_fold_builtin): Update signature.
160         Dereference `args' directly.
161         * config/xtensa/xtensa (xtensa_fold_builtin): Likewise.
162
163 2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
164
165         * doc/sourcebuild.texi (Effective-Target Keywords): Document
166         3dnow, sse3, sse2.
167         (Directives): Document optional dg-require-effective-target
168         selector.
169
170 2010-05-19  Richard Guenther  <rguenther@suse.de>
171
172         PR lto/44196
173         * tree.c (find_decls_types_r): Walk BLOCKs and its vars.
174
175 2010-05-19  Richard Guenther  <rguenther@suse.de>
176
177         * doc/invoke.texi (-fwhopr): Document new optional jobs argument.
178         * common.opt (fwhopr=): New.
179         * opts.c (common_handle_option): Handle OPT_fwhopr.
180         * gcc.c (LINK_COMMAND_SPEC): Pass fwhopr*.
181         * collect2.c (main): Match -fwhopr*.
182         * lto-wrapper.c (run_gcc): Handle jobs argument of -fwhopr.
183         Execute ltrans stage in parallel when jobs is bigger than 1.
184
185 2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
186
187         * config.gcc (i[34567]86-*-solaris2*): Default with_arch_32 to
188         pentiumpro on Solaris 8/x86 with Sun as.
189         * configure.ac (gcc_cv_as_hidden): Check for Solaris 9/x86 as
190         hidden alias bug.
191         (gcc_cv_as_ix86_quad): Check for .quad directive.
192         * configure: Regenerate.
193         * config.in: Regenerate.
194         * config/i386/sol2.h (ASM_QUAD): Change guard to !HAVE_AS_IX86_QUAD.
195
196 2010-05-19  Martin Jambor  <mjambor@suse.cz>
197
198         * ipa-prop.c (ipa_print_node_jump_functions): Print jump functions
199         also for indirect edges.  Actual printing moved...
200         (ipa_print_node_jump_functions_for_edge): ...here.
201         (ipa_compute_jump_functions): Renamed to
202         ipa_compute_jump_functions_for_edge and made static.
203         (ipa_compute_jump_functions): New function.
204         (make_edge_direct_to_target): Check if the number of arguments on
205         the newly direct edge is the same as the number of parametrs of
206         the callee.
207         * ipa-cp.c (ipcp_init_stage): Most functionality moved to new
208         ipa_compute_jump_functions.  Call ipa_analyze_params_uses.
209         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
210         analysis functions unconditionally, call the new
211         ipa_analyze_params_uses on the node instead of every edge.
212
213 2010-05-19  Christian Borntraeger  <borntraeger@de.ibm.com>
214
215         * tree-ssa-loop-prefetch.c (mem_ref_group, ar_data): Change step
216         to tree.
217         (dump_mem_ref): Adopt debug code to handle a tree as step.  This
218         also checks for a constant int vs.  non-constant but
219         loop-invariant steps.
220         (find_or_create_group): Change the sort algorithm to only consider
221         steps that are constant ints.
222         (idx_analyze_ref): Adopt code to handle a tree instead of a
223         HOST_WIDE_INT for step.
224         (gather_memory_references_ref): Handle tree instead of int and be
225         prepared to see a NULL_TREE.
226         (prune_ref_by_self_reuse, prune_ref_by_group_reuse): Do not prune
227         prefetches if the step cannot be calculated at compile time.
228         (issue_prefetch_ref): Issue prefetches for non-constant but
229         loop-invariant steps.
230
231 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
232
233         Revert:
234         2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
235
236         * tree.h (build_call_list): Remove.
237         * tree.c (build_call_list): Remove.
238
239 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
240
241         * tree.h (build_call_list): Remove.
242         * tree.c (build_call_list): Remove.
243
244 2010-05-18  Jan Hubicka  <jh@suse.cz>
245
246         * ipa-reference.c (propagate): Walk all nodes in the cleanup stage.
247
248 2010-05-18  Vladimir Makarov  <vmakarov@redhat.com>
249
250         PR rtl-optimization/43332
251         * haifa-sched.c (setup_insn_max_reg_pressure): Check barrier.
252
253 2010-05-18  Anatoly Sokolov  <aesok@post.ru>
254
255         * tree.h (build_int_cstu): Implement as static inline.
256         * tree.c (build_int_cstu): Remove function.
257         (double_int_to_tree, double_int_fits_to_tree_p): Handle size types as
258         sign extended.
259
260 2010-05-18  Richard Guenther  <rguenther@suse.de>
261
262         PR lto/44143
263         * lto-wrapper.c (verbose): New variable.  Initialize from -v.
264         (debug): Initialize from -save-temps.
265         (collect_execute): Print command-line when verbose.
266         (run_gcc): Always use COLLECT_GCC_OPTIONS.  Use fork_execute
267         for ltrans invocation.  Produce -dumpbase flag again.
268         (process_args): Remove.
269         (main): Simplify.
270         * collect2.c (maybe_run_lto_and_relink): Only pass object
271         files to lto-wrapper.
272         * gcc.c (LINK_COMMAND_SPEC): Likewise.
273
274 2010-05-18  Jan Hubicka  <jh@suse.cz>
275
276         * opts.c (decode_options): Do not disable whopr at ipa_cp.
277         * ipa-prop.c (ipa_detect_param_modifications): Walk PHI nodes too.
278
279 2010-05-18  Steven Bosscher  <steven@gcc.gnu.org>
280
281         PR lto/44184
282         * lto-streamer-out.c (output_gimple_stmt): Output number of labels
283         in a GIMPLE_ASM.
284         * lto-streamer-in.c (input_gimple_stmt): Read number of labels
285         in a GIMPLE_ASM.
286
287 2010-05-18  Jakub Jelinek  <jakub@redhat.com>
288
289         PR debug/41371
290         * var-tracking.c (find_loc_in_1pdv): Add a few checks from
291         rtx_equal_p inline.
292
293 2010-05-18  Steven Bosscher  <steven@gcc.gnu.org>
294
295         * config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Add
296         lto-macho as lto_binary_reader.
297
298         * darwin.c (darwin_asm_named_section): Do not add assembler comment
299         after .section directive; just print it before the directive instead.
300
301 2010-05-17  Jan Hubicka  <jh@suse.cz>
302
303         * cgraph.c (cgraph_create_virtual_clone): Only check
304         versionable_function_p when not in wpa and checking is enabled.
305         * cgraphunit.c (cgraph_materialize_all_clones): Stabilize after
306         there are no more functions to materialize.
307
308 2010-05-17  Jan Hubicka  <jh@suse.cz>
309
310         * cgraph.h (struct ipa_replace_map): Add parm_num parameter.
311         * lto-cgraph.c (output_cgraph_opt_summary, input_cgraph_opt_summary):
312         New functions.
313         (output_cgraph): Call output_cgraph_opt_summary.
314         (input_cgrpah): Call input_cgraph_opt_summary.
315         (output_cgraph_opt_summary_p, output_node_opt_summary,
316         input_node_opt_summary, input_cgraph_opt_section): New functions.
317         * lto-section-in.c (lto_section_name): Add cgraphopt.
318         * tree-inline.c (tree_function_versioning): Handle parm_num.
319         * lto-streamer.c (lto_get_section_name): Handle cgraphopt.
320         * lto-streamer.h (lto_section_type): Add LTO_section_cgraph_opt_sum.
321
322 2010-05-17  Changpeng Fang  <changpeng.fang@amd.com>
323
324         * doc/invoke.texi: Update documentation for min-insn-to-prefetch-ratio.
325         * tree-ssa-loop-prefetch.c (is_loop_prefetching_profitable): Also apply
326         the insn to prefetch ratio heuristic to loops with known trip count.
327
328 2010-05-17  Changpeng Fang  <changpeng.fang@amd.com>
329
330         * tree-ssa-loop-prefetch.c (PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO): New.
331         (schedule_prefetches): Do not generate a prefetch if the unroll factor
332         is far from what is required by the prefetch.
333
334 2010-05-17  Jan Hubicka  <jh@suse.cz>
335
336         * ipa-cp.c (ipcp_update_callgraph): Use ipa_is_param_used.
337         (ipcp_estimate_growth): Likewise.
338         (ipcp_const_param_count): Likewise.
339         (ipcp_insert_stage): Likewise.
340         * ipa-prop.c (visit_load_for_mod_analysis): New function.
341         (visit_store_addr_for_mod_analysis): Set used flag.
342         (ipa_detect_param_modifications): Set used flag for SSE params;
343         update use of walk_stmt_load_store_addr_ops.
344         (ipa_print_node_params): Print used flag.
345         (ipa_write_node_info): Stream used flag.
346         (ipa_read_node_info): Likewise.
347         * ipa-prop.h (struct ipa_param_descriptor): Add used field.
348         (ipa_is_param_used): New function.
349         (lto_ipa_fixup_call_notes): Remove unused declaration.
350
351 2010-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
352
353         PR target/44074
354         * configure.ac (HAVE_AS_IX86_REP_LOCK_PREFIX): New test.
355         * configure: Regenerate.
356         * config.in: Regenerate.
357         * config/i386/i386.c (print_operand) <case ;>: Also print ";" if
358         !HAVE_AS_IX86_REP_LOCK_PREFIX.
359         Don't emit whitespace.
360         * config/i386/i386.md (*rep_movdi_rex64): Use {%;} after rep.
361         (*rep_movsi): Likewise.
362         (*rep_movsi_rex64): Likewise.
363         (*rep_movqi): Likewise.
364         (*rep_movqi_rex64): Likewise.
365         (*rep_stosdi_rex64): Likewise.
366         (*rep_stossi): Likewise.
367         (*rep_stossi_rex64): Likewise.
368         (*rep_stosqi): Likewise.
369         (*rep_stosqi_rex64): Likewise.
370         (*cmpstrnqi_nz_1): Use {%;} after repz.
371         (*cmpstrnqi_nz_rex_1): Likewise.
372         (*cmpstrnqi_1): Likewise.
373         (*cmpstrnqi_rex_1): Likewise.
374         (*strlenqi_1): Use {%;} after repnz.
375         (*strlenqi_rex_1): Likewise.
376         * config/i386/sync.md (memory_barrier_nosse): Replace {%;| } by {%;} .
377         (*sync_compare_and_swap<mode>): Likewise.
378         (sync_double_compare_and_swap<mode>): Likewise.
379         (*sync_double_compare_and_swapdi_pic): Likewise.
380         (sync_old_add<mode>): Likewise.
381         (sync_add<mode>): Likewise.
382         (sync_sub<mode>): Likewise.
383         (sync_<code><mode>): Likewise.
384
385 2010-05-17  Martin Jambor  <mjambor@suse.cz>
386
387         * cgraph.h (cgraph_indirect_call_info): New fields anc_offset,
388         otr_token and polymorphic.
389         * cgraph.c (cgraph_create_indirect_edge): Inilialize the above fields.
390         (cgraph_clone_edge): Copy the above fields.
391         * tree.c (get_binfo_at_offset): New function.
392         * tree.h (get_binfo_at_offset): Declare.
393         * ipa-prop.h (enum jump_func_type): Added known_type jump function
394         type, reordered items, updated comments.
395         (union jump_func_value): Added base_type field, reordered fields.
396         (enum ipa_lattice_type): Moved down in the file.
397         (struct ipa_param_descriptor): New field polymorphic.
398         (ipa_is_param_polymorphic): New function.
399         * ipa-prop.c: Include gimple.h and gimple-fold.h.
400         (ipa_print_node_jump_functions): Print known type jump functions.
401         (compute_complex_pass_through): Renamed to...
402         (compute_complex_assign_jump_func): this.
403         (compute_complex_ancestor_jump_func): New function.
404         (compute_known_type_jump_func): Likewise.
405         (compute_scalar_jump_functions): Create known type and complex ancestor
406         jump functions.
407         (ipa_note_param_call): New parameter polymorphic, set the corresponding
408         flag in the call note accordingly.
409         (ipa_analyze_call_uses): Renamed to...
410         (ipa_analyze_indirect_call_uses): this.  New parameter target, define
411         variable var only in the block where it is used.
412         (ipa_analyze_virtual_call_uses): New function.
413         (ipa_analyze_call_uses): Likewise.
414         (combine_known_type_and_ancestor_jfs): Likewise.
415         (update_jump_functions_after_inlining): Implemented handling of a
416         number of new jump function types combination.
417         (print_edge_addition_message): Removed.
418         (make_edge_direct_to_target): New function.
419         (try_make_edge_direct_simple_call): Likewise.
420         (try_make_edge_direct_virtual_call): Likewise.
421         (update_call_notes_after_inlining): Renamed to...
422         (update_indirect_edges_after_inlining): this.  Moved edge creation for
423         indirect calls to try_make_edge_direct_simple_call, also calls
424         try_make_edge_direct_virtual_call for virtual calls.
425         (ipa_print_node_params): Changed the header message.
426         (ipa_write_jump_function): Stream also known type jump functions.
427         (ipa_read_jump_function): Likewise.
428         (ipa_write_indirect_edge_info): Stream new fields in
429         cgraph_indirect_call_info.
430         (ipa_read_indirect_edge_info): Likewise.
431         * Makefile.in (ipa-prop.o): Add dependency to GIMPLE_H and
432         GIMPLE_FOLD_H.
433
434 2010-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
435
436         * config/i386/sol2.h (TARGET_SUN_TLS): Remove duplicate definition.
437
438 2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
439
440         * tree.h (CALL_EXPR_ARGS): Delete.
441         (call_expr_arglist): Delete.
442         * tree.c (call_expr_arglist): Delete.
443         * builtins.c (fold_call_expr): Pass the whole CALL_EXPR to
444         targetm.fold_builtin.
445         * config/alpha/alpha.c (alpha_fold_builtin): Rename arglist parameter.
446         Rewrite iteration to work on call_expr_nargs rather than TREE_CHAIN.
447         * config/picochip/picochip.c (picochip_expand_builtin_2op): Rename
448         arglist parameter.  Use CALL_EXPR_ARG.
449         (picochip_expand_builtin_3op): Likewise.
450         (picochip_expand_builtin_2opvoid): Likewise.
451         (picochip_expand_array_get): Likewise.
452         (picochip_expand_array_put): Likewise.
453         (picochip_expand_array_testport): Likewise.
454         (picochip_expand_builtin): Don't call CALL_EXPR_ARGS.  Pass exp
455         rather than arglist.
456         * config/rx/rx.c (rx_expand_builtin): Call call_expr_nargs instead of
457         CALL_EXPR_ARGS.
458         * config/sparc/sparc.c (sparc_fold_builtin): Use CALL_EXPR_ARG rather
459         than TREE_VALUE and TREE_CHAIN.
460         * config/xtensa/xtensa.c (xtensa_fold_builtin): Likewise.
461         * doc/tm.texi (TARGET_FOLD_BUILTIN): Pass CALL_EXPR tree instead of
462         the arglist.
463
464 2010-05-17  Jakub Jelinek  <jakub@redhat.com>
465
466         PR bootstrap/42347
467         * cfglayout.c (fixup_reorder_chain): Allow returnjump_p
468         to have no fallthru edge.
469
470         PR middle-end/44102
471         * cfgcleanup.c (try_optimize_cfg): When removing trivially empty
472         bb with no successors, move footer whenever in IR_RTL_CFGLAYOUT
473         mode, not just when CLEANUP_CFGLAYOUT, and when in IR_RTL_CFGRTL
474         add BARRIER after previous bb if needed.
475
476 2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
477
478         * tree.c (build_function_type_list_1): Remove bogus assert condition.
479
480 2010-05-17  Alan Modra  <amodra@gmail.com>
481
482         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Delete
483         unnecessary prototype.  Replace copy_r12 and copy_r11 flag params
484         with copy_reg rtx param.
485         (rs6000_emit_prologue): Update rs6000_emit_allocate_stack calls.
486         Correct cases where code for ABI_V4 did not initialise the reg
487         used to access frame.  Also leave frame_reg_rtx as sp for large
488         frames that save no regs.
489
490 2010-05-17  Martin Jambor  <mjambor@suse.cz>
491
492         PR middle-end/44133
493         * tree-sra.c (create_access_replacement): New parameter rename, mark
494         the replaement for renaming only when it is true.
495         (get_access_replacement): Pass true in the rename parameter of
496         create_access_replacement.
497         (get_unrenamed_access_replacement): New function.
498         (replace_uses_with_default_def_ssa_name): New parameter racc, get the
499         replacement declaration from it.
500
501 2010-05-17  Bernd Schmidt  <bernds@codesourcery.com>
502
503         * function.c (try_fit_stack_local, add_frame_space): New static
504         functions.
505         (assign_stack_local_1): Use them.  Look for opportunities to use
506         space previously wasted on alignment.
507         * function.h (struct frame_space): New.
508         (struct rtl_data): Add FRAME_SPACE_LIST member.
509         * reload1.c (something_was_spilled): New static variable.
510         (alter_reg): Set it.
511         (reload): Test it in addition to testing if the frame size changed.
512
513 2010-05-17  Christian Borntraeger  <borntraeger@de.ibm.com>
514
515         * config/s390/s390.c: Define sane prefetch settings and activate
516         flag_prefetch_loop_arrays on -O3.
517         * config/s390/s390.h: Declare that read can use write prefetch.
518
519 2010-05-17  Jakub Jelinek  <jakub@redhat.com>
520
521         * lto-streamer-out.c (lto_output): Fix --enable-checking=release
522         build.
523
524 2010-05-16  Jan Hubicka  <jh@suse.cz>
525
526         * ipa-cp.c (ipcp_versionable_function_p): Walk cgraph edges instead of
527         function body; do not check stdarg field of struct function.
528
529 2010-05-16  Jan Hubicka  <jh@suse.cz>
530
531         * cgraph.c (dump_cgraph_node): Dump versionable flag.
532         * cgraph.h (cgraph_local_info): Add versionable flag.
533         * ipa-cp.c (ipcp_analyze_node): Set versionable flag.
534         (ipcp_versionable_function_p): Use it.
535         * lto-cgraph.c (lto_output_node, input_overwrite_node): Stream
536         versionable flag.
537
538 2010-05-16  Jan Hubicka  <jh@suse.cz>
539
540         * cgraph.c (cgraph_clone_node): Take decl argument and insert
541         clone into hash when it is different from orig.
542         (cgraph_create_virtual_clone): Update use of cgraph_clone_node.
543         * cgraph.h (cgraph_clone_node): Update prototype.
544         * lto-cgrpah.c (lto_cgraph_encoder_new): Create body map.
545         (lto_cgraph_encoder_delete): Delete body map.
546         (lto_cgraph_encoder_size): Move to header.
547         (lto_cgraph_encoder_encode_body_p,
548         lto_set_cgraph_encoder_encode_body): New.
549         (lto_output_node): Do not take written_decls argument; output clone_of
550         pointer.
551         (add_node_to): Add include_body_argument; call
552         lto_set_cgraph_encoder_encode_body on master of the clone.
553         (add_references): Update use of add_node_to.
554         (compute_ltrans_boundary): Likewise.
555         (output_cgraph): Do not create written_decls bitmap.
556         (input_node): Take nodes argument; stream in clone_of correctly.
557         (input_cgraph_1): Update use of input_node.
558         * lto-streamer-out.c (lto_output): Use encoder info to decide
559         what bodies to output.
560         * ipa-inline.c (cgraph_clone_inlined_nodes,
561         cgraph_decide_recursive_inlining): Update call of cgraph_clone_node.
562         * lto-streamer.h (lto_cgraph_encoder_d): Add body.
563         (lto_cgraph_encoder_size): Define here.
564         (lto_cgraph_encoder_encode_body_p, lto_varpool_encoder_encode_body_p):
565         Declare.
566
567 2010-05-16  Richard Guenther  <rguenther@suse.de>
568
569         * doc/invoke.texi (-fipa-struct-reorg): Do not mention
570         -fipa-type-escape.
571         * ipa-type-escape.c (gate_type_escape_vars): Run when
572         -fipa-struct-reorg runs.
573         * opts.c (decode_options): Do not unset flag_ipa_type_escape.
574         * common.opt (fipa-type-escape): Remove.
575
576 2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>
577
578         * opts.c (handle_option): Call into LTO streamer only if ENABLE_LTO.
579         (decode_options): Likewise.
580         * Makefile.in (opts.o): Add dependency on LTO_STREAMER_H.
581
582 2010-05-16  Jan Hubicka  <jh@suse.cz>
583
584         * ipa.c (function_and_variable_visibility): Also bring local all
585         aliases.
586
587 2010-05-16  Richard Guenther  <rguenther@suse.de>
588
589         * alias.c (nonoverlapping_memrefs_p): Remove use of
590         IPA type-escape information.
591
592 2010-05-16  Joseph Myers  <joseph@codesourcery.com>
593
594         * c-common.c (c_common_reswords): Add _Static_assert for C.
595         * c-parser.c (c_token_starts_declaration,
596         c_parser_next_token_starts_declaration,
597         c_parser_static_assert_declaration_no_semi,
598         c_parser_static_assert_declaration): New.
599         (c_parser_declaration_or_fndef): Add parameter static_assert_ok.
600         Handle static assertions if static_assert_ok.
601         (c_parser_external_declaration, c_parser_declaration_or_fndef,
602         c_parser_compound_statement_nostart, c_parser_label,
603         c_parser_for_statement, c_parser_objc_methodprotolist,
604         c_parser_omp_for_loop): All callers of
605         c_parser_declaration_or_fndef changed.
606         (c_parser_struct_declaration): Handle static assertions.
607         (c_parser_compound_statement_nostart): Use
608         c_parser_next_token_starts_declaration and
609         c_token_starts_declaration to detect start of declarations.
610         (c_parser_label, c_parser_for_statement, c_parser_omp_for_loop):
611         Likewise.
612
613 2010-05-16  Anatoly Sokolov  <aesok@post.ru>
614
615         * config/mmix/mmix.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
616         LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Remove macros.
617         * config/mmix/mmix.c (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
618         TARGET_FUNCTION_VALUE_REGNO_P): Define.
619         (mmix_function_outgoing_value): Rename to...
620         (mmix_function_value): ...this. Make static. Add 'outgoing' argument.
621         (mmix_function_value_regno_p): Make static.
622         (mmix_libcall_value): New function.
623         * config/mmix/mmix-protos.h (mmix_function_outgoing_value,
624         mmix_function_value_regno_p): Remove declaration.
625
626 2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>
627
628         * tree.c (build_common_builtin_nodes): Always clear TREE_NOTHROW on
629         BUILT_IN_ALLOCA if stack checking is enabled.
630
631 2010-05-16  Richard Guenther  <rguenther@suse.de>
632
633         * var-tracking.c (vars_copy_1): Inline ...
634         (vars_copy): ... here.  Use FOR_EACH_HTAB_ELEMENT.
635         (variable_union): Use FOR_EACH_HTAB_ELEMENT.  Merge asserts.
636         (variable_merge_over_cur): Adjust.  Merge asserts.
637         (variable_merge_over_src): Likewise.
638         (dataflow_set_merge): Use FOR_EACH_HTAB_ELEMENT.
639         (variable_post_merge_new_vals): Merge asserts.
640         (variable_post_merge_perm_vals): Likewise.
641         (find_mem_expr_in_1pdv): Likewise.
642         (dataflow_set_different_value): Remove.
643         (onepart_variable_different_p): Merge asserts.
644         (variable_different_p): Likewise.
645         (dataflow_set_different_1): Inline ...
646         (dataflow_set_different): ... here.  Use FOR_EACH_HTAB_ELEMENT.
647         (emit_notes_for_differences_1): Merge asserts.
648
649 2010-05-16  Richard Guenther  <rguenther@suse.de>
650
651         * lto-symtab.c (lto_symtab_entry_hash): Use IDENTIFIER_HASH_VALUE.
652         * optabs.c (libfunc_decl_hash): Likewise.
653         * varasm.c (emutls_decl): Likewise.
654
655 2010-05-16  Steven Bosscher  <steven@gcc.gnu.org>
656
657         * c-decl.c: Don't include gimple.h.
658         (merge_decls): Do not copy gimple_body.
659
660 2010-05-15  Jason Merrill  <jason@redhat.com>
661
662         * c.opt: Add -fnothrow-opt.
663
664 2010-05-15  Jan Hubicka  <jh@suse.cz>
665
666         * ipa-prop.c (ipa_prop_read_section): Add sanity check that node is
667         analyzed.
668         * passes.c (ipa_write_summaries): Write all analyzed nodes.
669
670 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
671
672         * vecir.h: New file with VEC primitives for tree, gimple, and rtl.
673         * Makefile.in: Add it.
674         Fix all other Makefile dependencies for changes below.
675         * tree.h: Include it instead of defining VEC primitives here.
676         * gimple.h: Likewise.
677         * rtl.h: Likewise.
678         * tree-inline.h: Inlclude vecir.h instead of gimple.h.
679         * except.h: Include vecir.h, break dependence on tree.h.
680
681         * gimplify.c (append_to_statement_list_1, append_to_statement_list):
682         Move from here...
683         * tree-iterator.c: ...to here.
684         * tree-iterator.h: Fix file introduction comment.  Add extern markers.
685
686         * c-lex.c: Include fixed-value.h instead of rtl.h.  Do not include
687         tm_p.h.
688         * c-cppbuiltin.c: Explain why debug.h and tm_p.h are included.
689         * c-objc-common.h: Do not include tm.h, rtl.h, insn-config.h,
690         integrate.h, function.h, toplev.h, tree-inline.h, ggc.h,
691         tree-mudflap.h, and target.h.
692         * c-semantics.c: Do not include except.h, ggc.h, rtl.h, timevar.h,
693         predict.h, tree-inline.h, gimple.h, and langhooks.h.
694         * c-decl.c: Do not include expr.h, ggc.h, libfuncs.h, except.h.
695         Add FIXME for why gimple.h is still included (should be unnecessary
696         since GCC 4.5 gimplification unit-at-a-time).
697         * c-typeck.c: Do not include rtl.h, tm_p.h, ggc.h, and gimple.h.
698         * c-pragma.c: Add FIXME for why function.h needs to be included just
699         for cfun, at front-end level.
700         Add note that REGISTER_TARGET_PRAGMAS should probably be a target hook.
701         Do not include ggc.h, but include vecprim.h for VEC(char).
702         * c-opts.c: Do not include tm.h, tree-inline.h, and tm_p.h.
703         Explain why target.h is included.
704         * c-omp.h: Do not include tm.h, function.h, and bitmap.h.
705         Explain why gimple.h is included.
706         * c-ppoutput.c: Do not include tm.h.
707         * c-common.c: Do not include gimple.h.  Explain why expr.h is included.
708         * c-parses.c: Explain why rtl.h is included, and that this (and only
709         this) is also why tm.h must be included.
710         Do not include except.h.
711         * c-lang.c: Do not include ggc.h.
712
713 2010-05-15  Uros Bizjak  <ubizjak@gmail.com>
714
715         * targhooks.c (GO_IF_MODE_DEPENDENT_ADDRESS): Use CONST_CAST_RTX.
716
717 2010-05-15  Joseph Myers  <joseph@codesourcery.com>
718
719         * c-decl.c (grokfield): Allow typedefs for anonymous structs and
720         unions by default if those structs and unions have no tags.  Do
721         not condition anonymous struct and unions handling on flag_iso.
722         Allow anonymous structs and unions for C1X.
723         (finish_struct): Do not diagnose lack of named fields when
724         anonymous structs and unions present for C1X.  Accept flexible
725         array members in structure with anonymous structs or unions but no
726         directly named fields.
727         * doc/extend.texi (Unnamed Fields): Update.
728
729 2010-05-15  Eric Botcazou  <ebotcazou@adacore.com>
730
731         * gimple.h (compare_field_offset): Rename into...
732         (gimple_compare_field_offset): ...this.
733         * gimple.c (compare_field_offset): Rename into...
734         (gimple_compare_field_offset): ...this.  Compare the full access if
735         the offset is self-referential.
736         (gimple_types_compatible_p): Adjust for above renaming.
737         * lto-streamer-in.c (input_gimple_stmt): Likewise.  Also compare the
738         DECL_NONADDRESSABLE_P flag of fields before merging them.
739
740 2010-05-15  Nathan Froyd  <froydnj@codesourcery.com>
741
742         * tree.h (ctor_to_list): Delete.
743         * tree.c (ctor_to_list): Delete.
744
745 2010-05-15  Jan Hubicka  <jh@suse.cz>
746
747         * ipa-reference.c: Include toplev.h
748         (is_proper_for_analysis): Only add to all_module_statics
749         if it is allocated.
750         (write_node_summary_p, stream_out_bitmap,
751         ipa_reference_write_optimization_summary,
752         ipa_reference_read_optimization_summary): New.
753         (struct ipa_opt_pass_d pass_ipa_reference): Add
754         optimization summary streaming.
755         * lto-cgraph.c (referenced_from_this_partition_p,
756         reachable_from_this_partition_p): New functions.
757         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
758         call_may_clobber_ref_p_1): Ask ipa-reference even for public vars.
759         * opts.c (decode_options): Enable ipa_reference.
760         * Makefile.in (ipa-reference.o): Add toplev.h dependency.
761         * lto-streamer.h (referenced_from_this_partition_p,
762         reachable_from_this_partition_p): Declare.
763
764 2010-05-15  Richard Guenther  <rguenther@suse.de>
765
766         PR tree-optimization/44038
767         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Avoid
768         taking the address of a V_C_E of a constant.
769
770 2010-05-14  Jan Hubicka  <jh@suse.cz>
771
772         * tree.h (memory_identifier_string): Remove.
773         * ipa-reference.c: Update comment; do not include gt-ipa-reference.h
774         (ipa_reference_global_vars_info_d): Remove statics_not_read and
775         statics_not_written.
776         (ipa_reference_optimization_summary_d): New structure.
777         (ipa_reference_optimization_summary_t): New type and vector.
778         (ipa_reference_vars_info_d): Embedd structures instead of using
779         pointers.
780         (reference_vars_to_consider): Remove out of GGC space.
781         (module_statics_escape): Remove.
782         (global_info_obstack): Rename to ...
783         (optimization_summary_obstack): ... this one.
784         (initialization_status_t): Remove.
785         (memory_identifier_string): Remove.
786         (get_reference_vars_info): Fix indenting.
787         (set_reference_vars_info): Likewise.
788         (get_reference_optimization_summary): New.
789         (set_reference_optimization_summary): New.
790         (get_global_reference_vars_info): Remove.
791         (ipa_reference_get_read_global): Remove.
792         (ipa_reference_get_written_global): Remove.
793         (ipa_reference_get_not_read_global): Update.
794         (ipa_reference_get_not_written_global): Update.
795         (is_proper_for_analysis): Outlaw addressable.
796         (propagate_bits): Update for new datastructures.
797         (analyze_variable): Remove.
798         (init_function_info): Update for new datastructures.
799         (clean_function_local_data): Remove.
800         (clean_function): Remove.
801         (copy_global_bitmap): Use optimizations_summary_obstack.
802         (duplicate_node_data): Duplicate optimization summary only.
803         (remove_node_data): Remove optimization summary only.
804         (generate_summary): Do not analyze variables; do not compute
805         module_statics_escape; do not prune solutions by it.
806         (read_write_all_from_decl): Fix typos in comments.
807         (propagate): Doscover readonly and nonaddressable first;
808         update for new datastructures; share global bitmaps.
809         * ipa-reference.h (ipa_reference_get_read_global,
810         ipa_reference_get_written_global): Remove.
811         * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string.
812         * Makefile.in: Remove ipa-refereference from GT files.
813
814 2010-05-14  Jakub Jelinek  <jakub@redhat.com>
815
816         PR debug/44112
817         * dwarf2out.c (resolve_one_addr): Check TREE_ASM_WRITTEN
818         for all SYMBOL_REF_DECLs.
819
820 2010-05-14  Jan Hubicka  <jh@suse.cz>
821
822         * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Declare.
823         (varpool_all_refs_explicit_p): New inline function.
824         * ipa-reference.c: Update comment.
825         (module_statics_written): Remove.
826         (get_static_decl): Remove.
827         (ipa_init): Do not initialize module_statics_written.
828         (analyze_function): Likewise.
829         (generate_summary): Likewise; do not compute module_statics_readonly
830         and do not update variable flags.
831         (propagate): Call ipa_discover_readonly_nonaddressable_vars.
832         * ipa.c: Inlucde flags.h
833         (cgraph_local_node_p): New.
834         (cgraph_remove_unreachable_nodes): Return early when not optimizing;
835         promote functions to local.
836         (ipa_discover_readonly_nonaddressable_vars): New function.
837         (function_and_variable_visibility): Use cgraph_local_node_p.
838         * varpool.c (varpool_finalize_decl): Set force_output for
839         DECL_PRESERVE_P vars.
840
841 2010-05-14  Jan Hubicka  <jh@suse.cz>
842
843         * ipa.c (cgraph_remove_unreachable_nodes): Revert accidental commit.
844
845 2010-05-14  Richard Guenther  <rguenther@suse.de>
846
847         PR tree-optimization/44119
848         * tree-ssa-pre.c (eliminate): Properly mark replacement of
849         a PHI node necessary.
850
851 2010-05-14  Eric Botcazou  <ebotcazou@adacore.com>
852
853         * tree.h (TREE_ADDRESSABLE): Remove bogus usage for FIELD_DECL.
854
855 2010-05-14  Jason Merrill  <jason@redhat.com>
856
857         PR c++/44127
858         * gimple.h (enum gf_mask): Add GF_CALL_NOTHROW.
859         (gimple_call_set_nothrow): New.
860         * gimple.c (gimple_build_call_from_tree): Call it.
861         (gimple_call_flags): Set ECF_NOTHROW from GF_CALL_NOTHROW.
862
863         PR c++/44127
864         * gimplify.c (gimplify_seq_add_stmt): No longer static.
865         * gimple.h: Declare it.
866         * gimple.c (gimple_build_eh_filter): No ops.
867
868 2010-05-14  Jan Hubicka  <jh@suse.cz>
869
870         * ipa.c (enqueue_cgraph_node): Update comment; do not re-enqueue
871         nodes already in queue.
872         (cgraph_remove_unreachable_nodes): Cleanup; fix problem with
873         re-enqueueing node.
874
875 2010-05-14  Jakub Jelinek  <jakub@redhat.com>
876
877         PR debug/44136
878         * cfgexpand.c (expand_debug_expr): If non-memory op0
879         has BLKmode, return NULL.
880
881 2010-05-14  Harsha Jagasia  <harsha.jagasia@amd.com>
882
883         * config.gcc: Add support for --with-cpu option for bdver1.
884         * config/i386/i386.h (TARGET_BDVER1): New macro.
885         (ix86_tune_indices): Change SSE_UNALIGNED_MOVE_OPTIMAL
886         to SSE_UNALIGNED_LOAD_OPTIMAL. Add SSE_UNALIGNED_STORE_OPTIMAL.
887         (ix86_tune_features) :Change SSE_UNALIGNED_MOVE_OPTIMAL
888         to SSE_UNALIGNED_LOAD_OPTIMAL. Add SSE_UNALIGNED_STORE_OPTIMAL.
889         Add SSE_PACKED_SINGLE_INSN_OPTIMAL.
890         (TARGET_CPU_DEFAULT_NAMES): Add bdver1.
891         (processor_type): Add PROCESSOR_BDVER1.
892         * config/i386/i386.md: Add bdver1 as a new cpu attribute to match
893         processor_type in config/i386/i386.h.
894         Add check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit
895         movaps <reg, reg> instead of movapd <reg, reg> when replacing
896         movsd <reg, reg> or movss <reg, reg> for SSE and AVX.
897         Add check for  TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL
898         to emit packed xor instead of packed double/packed integer
899         xor for SSE and AVX when moving a zero value.
900         * config/i386/sse.md: Add check for
901         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit movaps instead of
902         movapd/movdqa for SSE and AVX.
903         Add check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit packed
904         single logical operations i.e and, or and xor instead of packed double
905         logical operations for SSE and AVX.
906         * config/i386/i386-c.c (ix86_target_macros_internal):
907         Add PROCESSOR_BDVER1.
908         * config/i386/driver-i386.c: Turn on -mtune=native for BDVER1.
909         (has_fma4, has_xop): New.
910         * config/i386/i386.c (bdver1_cost): New variable.
911         (m_BDVER1): New macro.
912         (m_AMD_MULTIPLE): Add m_BDVER1.
913         (x86_tune_use_leave, x86_tune_push_memory, x86_tune_unroll_strlen,
914         x86_tune_deep_branch_prediction, x86_tune_use_sahf, x86_tune_movx,
915         x86_tune_use_simode_fiop, x86_tune_promote_qimode,
916         x86_tune_add_esp_8, x86_tune_tune_sub_esp_4, x86_tune_sub_esp_8,
917         x86_tune_integer_dfmode_moves, x86_tune_partial_reg_dependency,
918         x86_tune_sse_partial_reg_dependency,
919         x86_tune_sse_unaligned_load_optimal,
920         x86_tune_sse_unaligned_store_optimal, x86_tune_sse_typeless_stores,
921         x86_tune_memory_mismatch_stall, x86_tune_use_ffreep,
922         x86_tune_inter_unit_moves, x86_tune_inter_unit_conversions,
923         x86_tune_use_bt, x86_tune_pad_returns, x86_tune_slow_imul_imm32_mem,
924         x86_tune_slow_imul_imm8, x86_tune_fuse_cmp_and_branch):
925         Enable/disable for bdver1.
926         (processor_target_table): Add bdver1_cost.
927         (cpu_names): Add bdver1.
928         (override_options): Set up PROCESSOR_BDVER1 for bdver1 entry in
929          processor_alias_table.
930         (ix86_expand_vector_move_misalign): Change.
931         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL to TARGET_SSE_UNALIGNED_LOAD_OPTIMAL.
932         Check for TARGET_SSE_UNALIGNED_STORE_OPTIMAL.
933         Check for TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit movups instead
934         of movupd/movdqu for SSE and AVX.
935         (ix86_tune_issue_rate): Add PROCESSOR_BDVER1.
936         (ix86_tune_adjust_cost): Add code for bdver1.
937         (standard_sse_constant_opcode): Add check for
938         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL to emit packed single xor instead
939         of packed double xor for SSE and AVX.
940
941 2010-05-14  Pat Haugen  <pthaugen@us.ibm.com>
942
943         * tree-ssa-loop.prefetch.c (prune_ref_by_group_reuse): Cast abs()
944         result to unsigned.
945
946 2010-05-14  Tristan Gingold  <gingold@adacore.com>
947
948         * toplev.c (default_debug_hooks): Remove this variable.
949         (process_options): Remove assignments to default_debug_hooks.
950
951 2010-05-14  Martin Jambor  <mjambor@suse.cz>
952
953         * langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove.
954         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_FOLD_OBJ_TYPE_REF.
955         * langhooks.h (struct lang_hooks_for_decls): Removed field
956         fold_obj_type_ref.
957         * tree.c (free_lang_data): Remove assignment to
958         lang_hooks.fold_obj_type_ref.
959         * tree.def (OBJ_TYPE_REF): Update comment.
960
961 2010-05-14  Richard Guenther  <rguenther@suse.de>
962
963         PR tree-optimization/44124
964         * tree-ssa-sccvn.c (vn_nary_may_trap): Fix invalid memory access.
965
966 2010-05-14  Alan Modra  <amodra@gmail.com>
967
968         PR target/44075
969         * config/rs6000/rs6000.c (struct machine_function): Reorder
970         fields for better packing.  Add lr_save_state.
971         (rs6000_ra_ever_killed): Return lr_save_state if set.
972         (rs6000_emit_eh_reg_restore): Set lr_save_state.
973
974 2010-05-13  Jan Hubicka  <jh@suse.cz>
975
976         * varpool.c (decide_is_variable_needed): Drop code checking
977         TREE_SYMBOL_REFERENCED.
978
979 2010-05-13  Jan Hubicka  <jh@suse.cz>
980
981         * final.c (output_addr_const): Do not call mark_decl_referenced.
982         * cgraphunit.c (process_function_and_variable_attributes): Use
983         mark_needed_node dirrectly.
984         (assemble_thunk): Do not call mark_decl_referenced.
985
986 2010-05-13  Anatoly Sokolov  <aesok@post.ru>
987
988         * targhooks.c (default_mode_dependent_address_p): Cast 'addr' to rtx.
989
990 2010-05-13  Jeff Law  <law@redhat.com>
991
992         * ira-conflicts.c (print_allocno_conflicts): New function broken out
993         from...
994         (print_conflicts): Call print_allocno_conflicts.
995
996 2010-05-13  Jakub Jelinek  <jakub@redhat.com>
997
998         PR debug/44104
999         * dwarf2out.c (modified_type_die): Don't dereference mod_type_die
1000         if it is NULL.
1001
1002 2010-05-13  Kai Tietz  <kai.tietz@onevision.com>
1003
1004         * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Choose
1005         t-mingw-w64 or t-mingw-w32 for multilib configuration.
1006         * config/i386/t-mingw-w32: New.
1007         * config/i386/t-mingw-w64 (MULTILIB_OSDIRNAMES): Change lib64 to lib.
1008
1009 2010-05-13  Martin Jambor  <mjambor@suse.cz>
1010
1011         * gimple.c (gimple_fold_obj_type_ref): Removed (a replacement moved to
1012         gimple-fold.c).
1013         * gimple-fold.c (get_base_binfo_for_type): New function.
1014         (gimple_get_relevant_ref_binfo): Likewise.
1015         (gimple_fold_obj_type_ref_known_binfo): Likewise.
1016         (gimple_fold_obj_type_ref): Likewise.
1017         (fold_gimple_call): Simplify condition for folding virtual calls
1018         and call gimple_fold_obj_type_ref.
1019         * gimple.h (gimple_get_relevant_ref_binfo): Declare.
1020         (gimple_fold_obj_type_ref_known_binfo): Likewise.
1021
1022 2010-05-13  Andreas Schwab  <schwab@linux-m68k.org>
1023
1024         * config/rs6000/rs6000-protos.h
1025         (rs6000_mode_dependent_address_ptr): Change argument to const_rtx.
1026         * config/rs6000/rs6000.c (rs6000_mode_dependent_address)
1027         (rs6000_debug_mode_dependent_address)
1028         (rs6000_mode_dependent_address_ptr): Likewise.
1029
1030 2010-05-13  Jakub Jelinek  <jakub@redhat.com>
1031
1032         PR debug/43983
1033         * var-tracking.c (track_expr_p): Allow tracking of variables optimized
1034         by SRA.
1035         * Makefile.in (dwarf2out.o): Depend on $(TREE_FLOW_H).
1036         * tree-sra.c (create_access_replacement): Call unshare_expr before
1037         passing expr to SET_DECL_DEBUG_EXPR, and remove any SSA_NAMEs from it.
1038         * dwarf2out.c: Include tree-flow.h.
1039         (struct var_loc_node): Rename var_loc_note field to loc, add comment.
1040         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
1041         Handle DW_OP_bit_piece.
1042         (decl_piece_bitsize, decl_piece_varloc_ptr, decl_piece_node,
1043         construct_piece_list, adjust_piece_list): New functions.
1044         (add_var_loc_to_decl): Handle SRA optimized variables.
1045         Adjust for var_loc_note to loc field renaming.
1046         (dw_loc_list_1): For WANT_ADDRESS == 2 prefer DECL_MODE of decl
1047         in VAR_LOCATION note.
1048         (new_loc_descr_op_bit_piece): New function.
1049         (dw_sra_loc_expr): New function.
1050         (dw_loc_list): Use it.  Don't handle the last range after the
1051         loop, handle it inside of the loop.  Adjust for var_loc_note
1052         to loc field renaming.
1053         (add_location_or_const_value_attribute): Only special case
1054         single entry loc lists if loc is NOTE_P.  Adjust for
1055         var_loc_note to loc field renaming.
1056         (dwarf2out_var_location): Don't set newloc->var_loc_note
1057         and newloc->next here.
1058
1059 2010-05-12  Jan Hubicka  <jh@suse.cz>
1060
1061         * cgraph.c (cgraph_mark_address_taken_node): No longer imply needed
1062         flag.
1063         * cgraph.h (cgraph_only_called_directly_p,
1064         cgraph_can_remove_if_no_direct_calls_p): test address_taken flag.
1065         (cgraph_can_remove_if_no_direct_calls_and_refs_p): New function.
1066         * cgraphunit.c (cgraph_mark_functions_to_output): Test address_taken.
1067         (assemble
1068         * ipa.c (cgraph_remove_unreachable_nodes): Use
1069         cgraph_can_remove_if_no_direct_calls_and_refs_p; clear address_taken
1070         flags.
1071         * tree-inline.c (copy_bb): Check address_taken flag.
1072         * tree-profile.c (tree_gen_ic_func_profiler): Check address_taken and
1073         externally_visible flag.
1074
1075 2010-05-12  Jason Merrill  <jason@redhat.com>
1076
1077         PR bootstrap/44048
1078         PR target/44099
1079         * dbxout.c (dbxout_type): Remove NULLPTR_TYPE handling.
1080         * sdbout.c (plain_type_1): Likewise.
1081         * dwarf2out.c (is_base_type): Likewise.
1082         (gen_type_die_with_usage): Likewise.  Generate
1083         DW_TAG_unspecified_type for any LANG_TYPE.
1084
1085 2010-05-12  Jan Hubicka  <jh@suse.cz>
1086
1087         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Build
1088         indrect edges too.
1089         * cgraph.c (cgraph_create_indirect_edge): Take ecf_flags argument.
1090         (cgraph_clone_edge): Update.
1091         (cgraph_node_remove_callees): Remove indirect calls too.
1092         * cgraph.h (cgraph_indirect_call_info): Add ecf_flags.
1093         (cgraph_create_indirect_edge): Update prototype.
1094         * ipa-reference.c (has_proper_scope_for_analysis): Rename to
1095         is_proper_for_analysis.
1096         (add_new_function, visited_nodes, function_insertion_hook_holder,
1097         get_local_reference_vars_info, mark_address_taken, mark_address,
1098         mark_load, mark_store, check_asm_memory_clobber, check_call,
1099         scan_stmt_for_static_refs, scan_initializer_for_static_refs): Remove.
1100         (ipa_init): Do not initialize visited_nodes;
1101         function_insertion_hook_holder.
1102         (analyze_variable): Rewrite.
1103         (analyze_function): Rewrite.
1104         (copy_local_bitmap): Remove.
1105         (duplicate_node_dat): Do not duplicate local info.
1106         (generate_summary): Simplify to only walk cgraph.
1107         (write_node_summary_p, ipa_reference_write_summary,
1108         ipa_reference_read_summary): Remove.
1109         (propagate): Do not remove function insertion;
1110         generate summary.
1111         (pass_ipa_reference): NULLify summary handling fields.
1112         * lto-cgraph.c (lto_output_edge): Output ecf_flags.
1113         (input_edge): Input ecf_flags.
1114         * ipa-prop.c (ipa_note_parm_call): Expect edge to be around.
1115         (update_indirect_edges_after_inlining): Ignore edges with unknown
1116         param.
1117
1118 2010-05-12  Sriraman Tallam  <tmsriram@google.com>
1119
1120         * implicit-zee.c: New file.
1121         * tree-pass.h (pass_implicit_zee): Declare.
1122         * passes.c (init_optimization_passes): Add zee pass.
1123         * common.opt (fzee): New flag.
1124         * timevar.def (TV_ZEE): Define.
1125         * config/i386/i386.c (optimization_options): Turn on ZEE for level 2
1126         and beyond.
1127         * Makefile.in (implicit-zee.o): Add new build file.
1128
1129 2010-05-12  Kazu Hirata  <kazu@codesourcery.com>
1130             Nathan Froyd  <froydnj@codesourcery.com>
1131
1132         * c-common.c (sync_resolve_params): Remove write-only variable.
1133
1134 2010-05-12  Anatoly Sokolov  <aesok@post.ru>
1135
1136         * target.h (struct gcc_target): Add mode_dependent_address_p field.
1137         * target-def.h (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
1138         (TARGET_INITIALIZER): Use TARGET_MODE_DEPENDENT_ADDRESS_P.
1139         * targhooks.c (default_mode_dependent_address_p): New function.
1140         * targhooks.h (default_mode_dependent_address_p): Declare function.
1141         * doc/tm.texi (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
1142         (GO_IF_MODE_DEPENDENT_ADDRESS): Update.
1143         * recog.c: (mode_dependent_address_p): Call mode_dependent_address_p
1144         target hook. Change return type to bool.
1145         * recog.h: (mode_dependent_address_p): Change return type to bool.
1146
1147 2010-05-12  Kazu Hirata  <kazu@codesourcery.com>
1148             Nathan Froyd  <froydnj@codesourcery.com>
1149
1150         * tree-mudflap.c (build_function_type_0, build_function_type_1,
1151         build_function_type_2, build_function_type_3): Remove.
1152         (mudflap_init): Use build_function_type_list.
1153
1154 2010-05-12  Kazu Hirata  <kazu@codesourcery.com>
1155             Nathan Froyd  <froydnj@codesourcery.com>
1156
1157         * coverage.c (build_fn_info_value): Call build_constructor instead of
1158         build_constructor_from_list.
1159         (build_ctr_info_value): Likewise.
1160         (build_gcov_info): Likewise.
1161
1162 2010-05-12  Nathan Froyd  <froydnj@codesourcery.com>
1163
1164         * tree.c (build_constructor): Compute TREE_CONSTANT for the
1165         resultant constructor.
1166         (build_constructor_single): Don't set TREE_CONSTANT.
1167         (build_constructor_from_list): Don't compute TREE_CONSTANT.
1168
1169 2010-05-12  Jan Hubicka  <jh@suse.cz>
1170
1171         * cgraph.h (struct varpool_node): Add aux.
1172         * varasm.c (find_decl_and_mark_needed): Force output of varpool nodes.
1173         * varpool.c (varpool_remove_node): Do not remove initializer.
1174         (varpool_reset_queue): Export.
1175         (varpool_finalize_decl): Volatile vars are forced to be output.
1176         * lto-symtab.c (lto_varpool_replace_node): Clear out initializer of
1177         replaced decl.
1178         * ipa.c (enqueue_cgraph_node, enqueue_varpool_node,
1179         process_references, varpool_can_remove_if_no_refs): New functions.
1180         (cgraph_remove_unreachable_nodes): Handle variables too.
1181
1182 2010-05-12  H.J. Lu  <hongjiu.lu@intel.com>
1183
1184         PR target/44088
1185         * config/i386/sse.md (*avx_vmmaskcmp<mode>3): New.
1186
1187 2010-05-12  Jakub Jelinek  <jakub@redhat.com>
1188
1189         PR middle-end/44085
1190         * gimplify.c (enum omp_region_type): Add ORT_UNTIED_TASK,
1191         change value of ORT_TASK.
1192         (new_omp_context): Handle ORT_UNTIED_TASK like ORT_TASK.
1193         (omp_notice_threadprivate_variable): New function.
1194         (omp_notice_variable): Call it for threadprivate variables.
1195         If enclosing ctx is a task, print enclosing task rather than
1196         enclosing parallel.  Handle ORT_UNTIED_TASK like ORT_TASK.
1197         (gimplify_omp_task): Pass ORT_UNTIED_TASK instead of ORT_TASK
1198         if task has untied clause.
1199
1200         PR debug/42278
1201         * dwarf2out.c (base_type_die): Don't add name attribute here.
1202         (modified_type_die): Instead of sizetype use
1203         its underlying original type.  If a DW_TAG_base_type doesn't
1204         have name added, add __unknown__.
1205         (dwarf2out_imported_module_or_decl_1): Don't call base_type_die,
1206         always call force_type_die instead.
1207
1208 2010-05-12  Maxim Kuvyrkov  <maxim@codesourcery.com>
1209
1210         * targhooks.c (default_stack_protect_guard): Avoid sharing RTL
1211         for __stack_chk_guard.
1212
1213 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
1214
1215         * c-opts.c (c_common_parse_file): If start_end_main_source_file,
1216         don't call start_source_file debug hook here...
1217         (finish_options): ... but here, after outputting predefined and
1218         command line defines and undefs.
1219
1220         PR middle-end/44071
1221         * cfglayout.c (fixup_reorder_chain): Allow asm goto to have
1222         no fallthru edge.
1223         * cfgcleanup.c (try_optimize_cfg): When in cfglayout mode
1224         optimizing away empty bb with no successors, move over its
1225         footer chain to fallthru predecessor.
1226         * cfgrtl.c (patch_jump_insn): Update also REG_LABEL_OPERAND.
1227         (rtl_split_edge): For asm goto call patch_jump_insn even if
1228         splitting fallthru edge.
1229
1230         PR c++/44059
1231         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use qnu_unique_object
1232         even for DECL_ONE_ONLY DECL_ARTIFICIAL !TREE_READONLY decls.
1233         * config/alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Likewise.
1234         * dwarf2asm.c (dw2_output_indirect_constant_1): Set TREE_READONLY
1235         on DW.ref.* decls.
1236
1237         PR c++/44062
1238         * c-parser.c (c_parser_expression): Mark LHS of a comma
1239         expression as read if it is a decl, handled component or
1240         COMPOUND_EXPR with that on the RHS.
1241         * c-typeck.c (c_process_expr_stmt): Mark RHS of COMPOUND_EXPR
1242         if it is a decl or handled component.
1243
1244 2010-05-11  Jan Hubicka  <jh@suse.cz>
1245
1246         * lto-symtab.c (lto_symtab_free): New function.
1247         * lto-streamer.h (lto_symtab_free): Declare.
1248
1249 2010-05-11  Jan Hubicka  <jh@suse.cz>
1250
1251         * lto-cgraph.c (reachable_from_other_partition_p): Export; do not assume
1252         that if function is needed it is reachable.
1253         (lto_output_node): See if it the function is reachable or referenced.
1254         (output_cgraph): Update call of lto_output_node.
1255         * lto-streamer.h (reachable_from_other_partition_p): Declare.
1256
1257 2010-05-11  Jan Hubicka  <jh@suse.cz>
1258
1259         * crtstuff.c (__JCR_LIST__, __DTOR_END__, __JCR_END__, __FRAME_END__):
1260         Mark as used.
1261
1262 2010-05-11  Jan Hubicka  <jh@suse.cz>
1263
1264         PR tree-optimize/44063
1265         * ipa-inline.c (cgraph_edge_badness): Move always inlines to top of
1266         queue.
1267         (cgraph_decide_inlining_of_small_function): Skip check when disrgarding
1268         limits.
1269         (estimate_function_body_sizes): Compute sizes even when disregarding.
1270
1271 2010-05-11  Kai Tietz  <kai.tietz@onevision.com>
1272
1273         * collect2.c (maybe_lto_object_file): Add x64-coff magic and check.
1274
1275 2010-05-11  Jan Hubicka  <jh@suse.cz>
1276
1277         * lto-cgraph.c (output_cgraph): Remove loop adding all varpool nodes
1278         into every boundary.
1279
1280 2010-05-11  Jan Hubicka  <jh@suse.cz>
1281
1282         * matrix-reorg.c (matrix_reorg): Rebuild edges.
1283
1284 2010-05-11  Jan Hubicka  <jh@suse.cz>
1285
1286         * lto-streamer.c (lto_streamer_cache_add_to_node_array,
1287         lto_streamer_cache_delete): Put nodes into heap.
1288         * lto-streamer.h (struct lto_streamer_cache_d): Nodes vector is in
1289         heap.
1290
1291 2010-05-11  Jan Hubicka  <jh@suse.cz>
1292
1293         * cgraphbuild.c (cgraph_rebuild_references): New.
1294         * cgraph.c (cgraph_mark_reachable_node): Accept references to optimized
1295         out extern inlines.
1296         * cgraph.h (cgraph_rebuild_references): Declare.
1297         * tree-inline.c (tree_function_versioning): Use it.
1298         * ipa-struct-reorg.c (do_reorg_for_func): Likewise.
1299
1300 2010-05-11  Jan Hubicka  <jh@suse.cz>
1301
1302         * cgraph.c: Include ipa-utils.h
1303         (cgraph_create_virtual_clone): Update references.
1304         * Makefile.in (cgraph.o): Add dependency at ipa-utils.h
1305
1306 2010-05-11  Christian Borntraeger  <borntraeger@de.ibm.com>
1307
1308         * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset
1309         prefetch_before to PREFETCH_ALL if to accesses "meet" beyond
1310         cache size.
1311
1312 2010-05-11  Christian Borntraeger  <borntraeger@de.ibm.com>
1313
1314         * tree-ssa-loop-prefetch.c: Add debug for dropped prefetches.
1315
1316 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
1317
1318         * gcc.c (execute): For -### don't quote arguments that
1319         contain just alphanumerics and _/-. characters.
1320         * doc/invoke.texi: Document that change for -###.
1321
1322         PR debug/44023
1323         * df-problems.c (struct dead_debug): Add to_rescan field.
1324         (dead_debug_init): Clear to_rescan field.
1325         (dead_debug_finish): Rescan all debug insns in to_rescan
1326         bitmap and free the bitmap.
1327         (dead_debug_insert_before): Instead of rescanning debug insns
1328         immediately queue their rescanning until dead_debug_finish.
1329         (df_note_bb_compute): After dead_debug_add do continue instead
1330         of break.
1331
1332 2010-05-10  Jakub Jelinek  <jakub@redhat.com>
1333
1334         PR debug/44028
1335         * haifa-sched.c (schedule_insn): When clearing INSN_VAR_LOCATION_LOC,
1336         clear also INSN_REG_USE_LIST.
1337
1338 2010-05-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1339
1340         * config/mips/mips.c (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P): Undef.
1341
1342 2010-05-10  Jan Hubicka  <jh@suse.cz>
1343
1344         * lto-stramer-out.c (produce_asm_for_decls): Correct accidentally
1345         commited change.
1346
1347 2010-05-10  Jan Hubicka  <jh@suse.cz>
1348
1349         * passes.c (ipa_write_summaries_1, ipa_write_optimization_summaries):
1350         Allocate encoders.
1351         * lto-section-out.c (lto_new_out_decl_state): Do not allocate it here.
1352         * lto-streamer.c (lto_streamer_cache_insert_1): Use alloc pool.
1353         (lto_streamer_cache_create): Init alloc pool.
1354         (lto_streamer_cache_delete): Free alloc pool.
1355         * lto-streamer.h: Include alloc pool.
1356         (lto_streamer_cache_d): Use alloc pool.
1357         * lto-stramer-out.c (produce_asm_for_decls): Delete fn_out_states.
1358
1359 2010-05-10  Jan Hubicka  <jh@suse.cz>
1360
1361         * Makefile.in (cgraphbuild.o): Add dependency on except.h.
1362         * cgraphbuild.c: Include except.h
1363         (record_type_list, record_eh_tables): New function.
1364         (build_cgraph_edges, rebuild_cgraph_edges): Use it.
1365
1366 2010-05-10  Jan Hubicka  <jh@suse.cz>
1367
1368         * crtstuff.c (force_to_data, __do_global_dtors_aux_fini_array_entry,
1369         __frame_dummy_init_array_entry, force_to_data): Attribute as used
1370         rather than unused.
1371
1372 2010-05-10  Michael Matz  <matz@suse.de>
1373
1374         * tree-ssa-reassoc.c (undistribute_ops_list): Use create_tmp_reg.
1375         (can_reassociate_p): Use FLOAT_TYPE_P.
1376         * tree-vectorizer.h (vect_is_simple_reduction): Rename to ...
1377         (vect_force_simple_reduction): ... this.
1378         * tree-parloops.c (gather_scalar_reductions): Use
1379         vect_force_simple_reduction.
1380         * tree-vect-loop.c (vect_is_simple_reduction_1): Rename from
1381         vect_is_simple_reduction, add modify argument, if true rewrite
1382         "a-b" into "a+(-b)".
1383         (vect_is_simple_reduction, vect_force_simple_reduction): New
1384         functions.
1385         (vect_analyze_scalar_cycles_1): Use vect_force_simple_reduction.
1386
1387 2010-05-10  H.J. Lu  <hongjiu.lu@intel.com>
1388             Vladimir Makarov  <vmakarov@redhat.com>
1389
1390         PR rtl-optimization/44012
1391         * ira-build.c (remove_unnecessary_allocnos): Nullify
1392         regno_allocno_map of the removed allocno.
1393
1394 2010-05-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1395
1396         * configure.ac (gcc_cv_ld_eh_gc_sections): Redirect objdump errors
1397         to /dev/null.
1398         * configure: Regenerate.
1399
1400 2010-05-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1401
1402         * config/sol2.c (solaris_assemble_visibility): Declare decl, vis
1403         unused.
1404         Define visibility_types, name, type inside HAVE_GAS_HIDDEN.
1405         * configure.ac (gcc_cv_ld_hidden): Explain stages of visibility
1406         support in Sun ld.
1407         * configure: Regenerate.
1408
1409 2010-05-10  Richard Guenther  <rguenther@suse.de>
1410
1411         * lto-symtab.c (lto_symtab_entry_marked_p): Make entry
1412         marked if the entry identifier is marked.
1413
1414 2010-05-10  Richard Guenther  <rguenther@suse.de>
1415
1416         * c-common.c (struct c_common_attributes): Add fnspec attribute.
1417         (handle_fnspec_attribute): New function.
1418         * gimple.h (gimple_call_return_flags): Declare.
1419         (gimple_call_arg_flags): Likewise.
1420         * gimple.c (gimple_call_arg_flags): New function.
1421         (gimple_call_return_flags): Likewise.
1422         * tree.h (EAF_DIRECT, EAF_NOCLOBBER, EAF_NOESCAPE, EAF_UNUSED):
1423         New argument flags.
1424         (ERF_RETURN_ARG_MASK, ERF_RETURNS_ARG, ERF_NOALIAS): New function
1425         return value flags.
1426         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Skip unused args.
1427         * tree-ssa-structalias.c (make_constraint_from_heapvar): Split
1428         main work to ...
1429         (make_heapvar_for): ... this new function.
1430         (handle_rhs_call): Handle fnspec attribute argument specifiers.
1431         (handle_lhs_call): Likewise.
1432         (find_func_aliases): Adjust.
1433
1434 2010-05-10  Richard Guenther  <rguenther@suse.de>
1435
1436         PR tree-optimization/44050
1437         * tree-inline.c (tree_function_versioning): Clone the ipa-pta flag.
1438
1439 2010-05-10  Wei Guozhi  <carrot@google.com>
1440
1441         PR target/42879
1442         * config/arm/thumb2.md (thumb2_tlobits_cbranch): New insn pattern.
1443
1444 2010-05-09  Joseph Myers  <joseph@codesourcery.com>
1445
1446         PR c/10676
1447         * c-typeck.c (lookup_field): Take a type directly.  Update
1448         recursive calls.
1449         (build_component_ref): Update call to lookup_field.
1450         (set_init_label): Use lookup_field to find initialized field.
1451         Handle returned list of fields like a sequence of designators.
1452
1453 2010-05-09  Richard Guenther  <rguenther@suse.de>
1454
1455         PR middle-end/44024
1456         * fold-const.c (tree_single_nonzero_warnv_p): Properly
1457         handle &FUNCTION_DECL.
1458
1459 2010-05-09  Joseph Myers  <joseph@codesourcery.com>
1460
1461         PR c/4784
1462         * c-decl.c (detect_field_duplicates_hash): New.  Handle anonymous
1463         structures and unions recursively.
1464         (detect_field_duplicates): Move duplicate detection with a hash to
1465         detect_field_duplicates_hash.  Always use a hash if anonymous
1466         structures or unions are present.
1467         * doc/extend.texi (Unnamed Fields): Document that duplicate fields
1468         give errors.
1469
1470 2010-05-09  H.J. Lu  <hongjiu.lu@intel.com>
1471
1472         PR target/44046
1473         * config/i386/driver-i386.c (host_detect_local_cpu): Properly
1474         detect Atom, Core 2 and Core i7.
1475
1476 2010-05-09  Richard Guenther  <rguenther@suse.de>
1477
1478         * gcc.c (store_arg): Handle temporary file deletion for
1479         joined arguments.
1480
1481 2010-05-09  Richard Guenther  <rguenther@suse.de>
1482
1483         PR middle-end/44043
1484         * ipa-inline.c (estimate_function_body_sizes): Return after
1485         disregarding inline limits.
1486
1487 2010-05-09  Richard Guenther  <rguenther@suse.de>
1488
1489         * gcc.c (store_arg): Revert last change.
1490
1491 2010-05-08  Sandra Loosemore  <sandra@codesourcery.com>
1492
1493         PR middle-end/28685
1494         * tree-ssa-reassoc.c (eliminate_redundant_comparison): New function.
1495         (optimize_ops_list): Call it.
1496
1497 2010-05-08  Richard Guenther  <rguenther@suse.de>
1498
1499         PR tree-optimization/44030
1500         * tree-ssa-pre.c (eliminate): Copy NECESSARY flag.  Set
1501         NECESSARY flag if we propagate from a inserted expression.
1502
1503 2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>
1504
1505         * gimple.c (gimple_types_compatible_p) <ARRAY_TYPE>: Treat bounds of
1506         domain types as equal if they are both PLACEHOLDER_EXPRs.
1507
1508 2010-05-08  Richard Guenther  <rguenther@suse.de>
1509
1510         * lto-wrapper.c (run_gcc): Remove linker output from
1511         command line for LTRANS invocation.
1512
1513 2010-05-07  Steven Bosscher  <steven@gcc.gnu.org>
1514
1515         * config.gcc (i[34567]86-*-darwin*, x86_64-*-darwin*): Add
1516         lto-macho as lto_binary_reader.
1517         * target.h (struct gcc_target): New hooks lto_start and lto_end.
1518         * target-def.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END): Define.
1519         * cgraphunit.c (ipa_passes): Wrap LTO assembler output generation
1520         in lto_start and lto_end calls.
1521         (is_elf_or_coff): Rename to maybe_lto_object_file.  Add Mach-O
1522         magic numbers.
1523         (scan_prog_file): Update is_elf_or_coff call.
1524         * doc/tm.text (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END): Document.
1525
1526         * collect2.c (main): Fix enum comparison.
1527
1528         * config/darwin-protos.h (darwin_asm_lto_start, darwin_asm_lto_end):
1529         Add prototypes.
1530         * darwin9.h (LINK_COMMAND_SPEC): Pass -flto and -fwhopr to the linker.
1531         * darwin.h (LINK_COMMAND_SPEC): Likewise.  Define TARGET_ASM_LTO_START
1532         and TARGET_ASM_LTO_END.
1533         * darwin.c: Include obstack.h and lto-streamer.h.
1534         (lto_section_names_offset, lto_section_names_obstack,
1535         lto_asm_out_file, lto_asm_out_name, saved_asm_out_file): New static
1536         global variables.
1537         (LTO_SEGMENT_NAME, LTO_NAMES_SECTION): New defines.
1538         (darwin_asm_lto_start): New function.  Redirect output to asm_out_file
1539         to a temporary file.
1540         (darwin_asm_lto_end): New function.  Restore asm_out_file.
1541         (darwin_asm_named_section): For LTO sections, replace the name with
1542         the offset of the section name in a string table, and build this
1543         table.
1544         (darwin_file_start): Initialize global vars for LTO support.
1545         (darwin_file_end): If output to asm_out_file was redirected, append it
1546         to the proper asm_out_file here.  Add the section names section.
1547
1548 2010-05-07  Steven Bosscher  <steven@gcc.gnu.org>
1549
1550         * c-pragma.c (pending_weak_d, pending_weak): New.
1551         (pending_weaks): Change the type to VEC((pending_weak,gc) *.
1552         (maybe_apply_pragma_weak, maybe_apply_pending_pragma_weaks,
1553         handle_pragma_weak): Update the uses of pending_weaks.
1554
1555 2010-05-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1556
1557         PR documentation/44016
1558         * doc/standards.texi (Standards): Link to unversioned
1559         cxx0x_status.html page.
1560
1561 2010-05-07  Iain Sandoe <iains@gcc.gnu.org>
1562
1563         PR target/43708
1564         * config/darwin-c.c (darwin_pragma_unused): Set DECL_READ_P
1565         in addition to TREE_USED, to avoid "set but unused" warnings.
1566
1567 2010-05-07  Changpeng Fang  <changpeng.fang@amd.com>
1568
1569         * tree-ssa-loop-prefetch.c (TRIP_COUNT_TO_AHEAD_RATIO): New.
1570         (is_loop_prefetching_profitable): Do not insert prefetches
1571         when the trip count is not at least TRIP_COUNT_TO_AHEAD_RATIO
1572         times the prefetch ahead distance.
1573
1574 2010-05-07  Changpeng Fang  <changpeng.fang@amd.com>
1575
1576         * tree-ssa-loop-prefetch.c (is_loop_prefetching_profitable):
1577         Account for loop unrolling in the insn-to-prefetch ratio heuristic.
1578         (loop_prefetch_arrays): Pass to is_loop_prefetching_profitable
1579         the unroll_factor.
1580
1581 2010-05-07  Changpeng Fang  <changpeng.fang@amd.com>
1582
1583         * tree-ssa-loop-prefetch.c (is_loop_prefetching_profitable): Dump
1584         a diagnostic info when the insn-to-mem ratio is too small.
1585
1586 2010-05-07  Richard Guenther <rguenther@suse.de>
1587
1588         * gcc.c (LINK_COMMAND_SPEC): Provide a resolution file to
1589         the linker plugin.
1590         (store_arg): Queue temp_filename for deletion instead of
1591         the whole argument.
1592
1593 2010-05-07  Richard Guenther  <rguenther@suse.de>
1594
1595         * lto-wrapper.c (DUMPBASE_SUFFIX): Define.
1596         (run_gcc): Handle LTRANS phase invocation.
1597         * collect2.c (maybe_run_lto_and_relink): Do not set WPA_SAVE_LTRANS.
1598
1599 2010-05-07  Jakub Jelinek  <jakub@redhat.com>
1600
1601         * tree.h (TREE_ADDRESSABLE): Adjust comment to say that
1602         this is also meaningful on PARM_DECLs and RESULT_DECLs.
1603
1604 2010-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1605
1606         * config/mips/iris6.h (LINK_SPEC): Don't pass -init, -fini with -r.
1607
1608 2010-05-07  Richard Guenther  <rguenther@suse.de>
1609
1610         PR tree-optimization/44020
1611         * tree-ssa-pre.c (execute_pre): Do not remove dead inserted
1612         code when PRE is not yet initialized.
1613
1614 2010-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1615
1616         * config/mips/dbxmdebug.h: Remove.
1617         * config.gcc (mips-sgi-irix6.5*): Remove mips/dbxmdebug.h.
1618
1619 2010-05-07  Shujing Zhao  <pearly.zhao@oracle.com>
1620
1621         * c-typeck.c (build_binary_op): Warn ordered comparison of pointer
1622         with null pointer and also warn about ordered comparison of zero with
1623         pointer if -Wextra.
1624
1625 2010-05-05  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
1626
1627         * graphite-blocking.c
1628         (pbb_strip_mine_profitable_p): Replace Value with mpz_t.
1629         * graphite-clast-to-gimple.c
1630         (clast_to_gcc_expression): Same.
1631         (precision_for_value): Same.
1632         (precision_for_interval): Same.
1633         (gcc_type_for_interval): Same.
1634         (graphite_create_new_guard): Same.
1635         (compute_bounds_for_level): Same.
1636         (graphite_create_new_loop_guard): Same.
1637         * graphite-interchange.c
1638         (build_linearized_memory_access): Same.
1639         (pdr_stride_in_loop): Same.
1640         (memory_strides_in_loop_1): Same.
1641         (memory_strides_in_loop): Same.
1642         (extend_scattering): Same.
1643         (psct_scattering_dim_for_loop_depth): Same.
1644         (pbb_number_of_iterations): Same.
1645         * graphite-poly.h
1646         (debug_iteration_domains): Same.
1647         * graphite-ppl.c
1648         (new_Cloog_Domain_from_ppl_Pointset_Powerset): Same.
1649         (ppl_set_inhomogeneous_gmp): Same.
1650         (ppl_strip_loop): Same.
1651         (ppl_lexico_compare_linear_expressions): Same.
1652         (ppl_read_polyhedron_matrix): Same.
1653         (ppl_max_for_le_pointset): Same.
1654         * graphite-ppl.h
1655         (ppl_read_polyhedron_matrix): Same.
1656         (tree_int_to_gmp): Same.
1657         (gmp_cst_to_tree): Same.
1658         (ppl_set_inhomogeneous): Same.
1659         (ppl_set_inhomogeneous_tree): Same.
1660         (ppl_set_coef): Same.
1661         (ppl_set_coef_tree): Same.
1662         * graphite-sese-to-poly.c
1663         (build_pbb_scattering_polyhedrons): Same.
1664         (build_scop_scattering): Same.
1665         (scan_tree_for_params_right_scev): Same.
1666         (scan_tree_for_params): Same.
1667         (find_params_in_bb): Same.
1668         (find_scop_parameters): Same.
1669         (add_upper_bounds_from_estimated_nit): Same.
1670         (build_loop_iteration_domains): Same.
1671         (add_condition_to_domain): Same.
1672         (pdr_add_memory_accesses): Same.
1673
1674 2010-05-05  Andreas Simbuerger  <simbuerg@fim.uni-passau.de>
1675
1676         * graphite-blocking.c (pbb_strip_mine_profitable_p): Resolve
1677         CLooG's value_* macros to their respective mpz_* counterparts.
1678         * graphite-clast-to-gimple.c (clast_to_gcc_expression): Same.
1679         (graphite_create_new_loop_guard): Same.
1680         * graphite-interchange.c (build_linearized_memory_access): Same.
1681         (pdr_stride_in_loop): Same.
1682         (memory_strides_in_loop_1): Same.
1683         (1st_interchange_profitable_p): Same.
1684         * graphite-poly.c (extend_scattering): Same.
1685         (psct_scattering_dim_for_loop_depth): Same.
1686         (pbb_number_of_iterations): Same.
1687         (pbb_number_of_iterations_at_time): Same.
1688         * graphite-poly.h (new_1st_loop): Same.
1689         * graphite-ppl.c (cloog_matrix_to_ppl_constraint): Same.
1690         (oppose_constraint): Same.
1691         (insert_constraint_into_matrix): Same.
1692         (ppl_set_inhomogeneous_gmp): Same.
1693         (ppl_set_coef_gmp): Same.
1694         (ppl_strip_loop): Same.
1695         (ppl_lexico_compare_linear_expressions): Same.
1696         (ppl_max_for_le_pointset): Same.
1697         (ppl_min_for_le_pointset): Same.
1698         (ppl_build_realtion): Same.
1699         * graphite-ppl.h (gmp_cst_to_tree): Same.
1700         (ppl_set_inhomogeneous): Same.
1701         (ppl_set_inhomogeneous_tree): Same.
1702         (ppl_set_coef): Same.
1703         (ppl_set_coef_tree): Same.
1704         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Same.
1705         (build_scop_scattering): Same.
1706         (add_value_to_dim): Same.
1707         (scan_tree_for_params_right_scev): Same.
1708         (scan_tree_for_params_int): Same.
1709         (scan_tree_for_params): Same.
1710         (find_params_in_bb): Same.
1711         (find_scop_parameters): Same.
1712         (add_upper_bounds_from_estimated_nit): Same.
1713         (build_loop_iteration_domains): Same.
1714         (create_linear_expr_from_tree): Same.
1715         (add_condition_to_domain): Same.
1716         (pdr_add_memory_accesses): Same.
1717
1718 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
1719             Jason Merrill  <jason@redhat.com>
1720
1721         * c-common.c (c_common_reswords): Add nullptr.
1722         * c-common.h: Add RID_NULLPTR.  Reorganize C++0x rids.
1723         * dwarf2out.c (is_base_type): Handle NULLPTR_TYPE.
1724         (gen_type_die_with_usage): Likewise.
1725         * dbxout.c (dbxout_type): Likewise.
1726         * sdbout.c (plain_type_1): Likewise.
1727
1728 2010-05-06  Jason Merrill  <jason@redhat.com>
1729
1730         * gimplify.c (gimplify_expr): Set GS_ALL_DONE when appropriate.
1731         Don't change GS_OK to GS_ALL_DONE.  Make sure that all cases set
1732         ret appropriately.
1733         (gimplify_compound_lval): Return GS_ALL_DONE as appropriate.
1734
1735         * gimplify.c (gimplify_modify_expr_rhs): Don't return GS_OK for
1736         stripping WITH_SIZE_EXPR.
1737         (gimplify_expr) [MODIFY_EXPR]: Trust GS_OK even if the rhs didn't
1738         change.
1739
1740 2010-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1741
1742         * config.gcc: Removed mips-sgi-irix5*, mips-sgi-irix6.[0-4]* from
1743         list of obsolete configurations.
1744         Disabled check for obsolete configurations.
1745         (mips-sgi-irix[56]*): Restrict to mips-sgi-irix6.5*.
1746         Removed support for previous versions.
1747         * config/mips/iris.h: Removed.
1748         * config/mips/iris5.h: Removed.
1749         * config/mips/iris6.h: Merged old iris.h contents.
1750         (TARGET_IRIX): Removed.
1751         (DRIVER_SELF_SPECS): Removed mabi=32.
1752         (IDENT_ASM_OP): Removed undef.
1753         (STARTFILE_SPEC): Removed mabi=32.
1754         (ENDFILE_SPEC): Likewise.
1755         (IRIX_SUBTARGET_LINK_SPEC): Likewise.
1756         (MACHINE_TYPE): Update for IRIX 6.5.
1757         * config/mips/mips.c (mips_build_builtin_va_list): Replaced
1758         TARGET_IRIX by TARGET_IRIX6.
1759         (mips_file_start): Likewise.
1760         (mips_output_external): Remove IRIX 5/6 O32 support.
1761         (mips_output_function_prologue): Likewise.
1762         * config/mips/mips.h (TARGET_GPWORD): Replaced TARGET_IRIX by
1763         TARGET_IRIX6.
1764         (TARGET_CPU_CPP_BUILTINS): Likewise.
1765         (TARGET_IRIX): Removed.
1766         * config/mips/t-iris6 (MULTILIB_OPTIONS): Removed mabi=32.
1767         (MULTILIB_DIRNAMES): Removed 32.
1768         (MULTILIB_OSDIRNAMES): Removed ../lib.
1769         * doc/install.texi (Prerequisites): Don't reference IRIX before 6.5.
1770         (Specific, mips-sgi-irix5): Document removal.
1771         (Specific, mips-sgi-irix6): Document IRIX 6.[0-4] and O32 ABI removal.
1772         Remove references to older IRIX 6 releases and the O32 ABI.
1773
1774 2010-05-06  Jakub Jelinek  <jakub@redhat.com>
1775
1776         PR bootstrap/43994
1777         * df-problems.c (dead_debug_insert_before): Use *DF_REF_REAL_LOC
1778         instead of DF_REF_REAL_REG.
1779
1780 2010-05-06  Dave Korn  <dave.korn.cygwin@gmail.com>
1781
1782         PR target/43888
1783         * config/i386/winnt.c (i386_pe_binds_local_p): Tweak weak symbol
1784         handling to still return true for x64 targets.
1785
1786 2010-05-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1787
1788         * config/m68k/uclinux.h (LIB_SPEC): Bring in sync with config/linux.h.
1789
1790 2010-05-06  Jan Hubicka  <jh@suse.cz>
1791
1792         PR tree-optimization/43791
1793         * ipa-inline.c (update_caller_keys): Remove bogus
1794         disregard_inline_limits check.
1795
1796 2010-05-06  Michael Matz  <matz@suse.de>
1797
1798         PR tree-optimization/43984
1799         * tree-ssa-pre.c (inserted_phi_names): Remove.
1800         (inserted_exprs): Change to bitmap.
1801         (create_expression_by_pieces): Set bits, don't append to vector.
1802         (insert_into_preds_of_block): Don't handle inserted_phi_names.
1803         (eliminate): Don't look at inserted_phi_names, remove deleted
1804         insns from inserted_exprs.
1805         (remove_dead_inserted_code): Adjust to use bitmaps instead of vectors.
1806         (init_pre, fini_pre): Allocate and free bitmaps.
1807         (execute_pre): Insert insns on edges before elimination.
1808
1809 2010-05-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1810
1811         * tree.c (initializer_zerop): Handle STRING_CST.
1812
1813 2010-05-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1814
1815         PR 40989
1816         * doc/invoke.texi (Wimplicit): Document as C only.
1817         * opts.c (common_handle_option): Add argument kind.
1818         (handle_option): Rename as read_cmdline_option. Factor out code to...
1819         (handle_option): ... here. New.
1820         (handle_options): Rename as read_cmdline_options.
1821         (decode_options): Update call.
1822         (set_option): Use option index instead of option pointer. Classify
1823         diagnostics correctly.
1824         (enable_warning_as_error): Call handle_option.
1825         * opts.h (set_option): Update declaration.
1826         (handle_option): Declare.
1827         * langhooks.h (struct lang_hooks): Add argument kind to handle_option.
1828         * c.opt (Wimplicit,Wimplicit-int): Initialize to -1.
1829         * c-opts.c (set_Wimplicit): Delete.
1830         (c_family_lang_mask): New static constant.
1831         (c_common_handle_option): Add argument kind. Use handle_option
1832         instead of set_Wimplicit.
1833         (c_common_post_options): warn_implicit and warn_implicit_int
1834         are disabled by default.
1835         * c-common.c (warn_implicit): Do not define here.
1836         * c-common.h (warn_implicit): Do not declare here.
1837         (c_common_handle_option): Update declaration.
1838         * lto-opts.c (lto_reissue_options): Update call to set_option.
1839
1840 2010-05-06  Richard Guenther  <rguenther@suse.de>
1841
1842         PR tree-optimization/43571
1843         * domwalk.c (walk_dominator_tree): Walk the dominator
1844         sons in more optimal order.
1845
1846 2010-05-06  Richard Guenther  <rguenther@suse.de>
1847
1848         PR tree-optimization/43934
1849         * tree-ssa-loop-im.c (movement_possibility): Handle PHI nodes.
1850         (stmt_cost): Likewise.
1851         (extract_true_false_args_from_phi): New helper.
1852         (determine_max_movement): For PHI nodes verify we can hoist them
1853         and compute their cost.
1854         (determine_invariantness_stmt): Handle PHI nodes.
1855         (move_computations_stmt): Likewise.  Hoist PHI nodes in
1856         if-converted form using COND_EXPRs.
1857         (move_computations): Return TODO_cleanup_cfg if we hoisted PHI nodes.
1858         (tree_ssa_lim): Likewise.
1859         * tree-flow.h (tree_ssa_lim): Adjust prototype.
1860         * tree-ssa-loop.c (tree_ssa_loop_im): Return todo.
1861
1862 2010-05-06  Richard Guenther  <rguenther@suse.de>
1863
1864         PR tree-optimization/43987
1865         * tree-ssa-structalias.c (could_have_pointers): For possibly
1866         address-taken variables force pointers to be recorded.
1867         (create_variable_info_for_1): Likewise.
1868         (push_fields_onto_fieldstack): Pass in wheter all fields
1869         must have pointers.
1870         (find_func_aliases): Query types instead of vars whether
1871         they contain pointers where appropriate.
1872
1873 2010-05-06  Jan Hubicka  <jh@suse.cz>
1874
1875         * cgraphbuild.c (record_reference_ctx): Add varpool_node.
1876         (record_reference, mark_address, mark_load, mark_store): Record
1877         references.
1878         (record_references_in_initializer): Update call of record_references.
1879         (rebuild_cgraph_edges): Remove all references before rebuiding.
1880         * cgraph.c (cgraph_create_node): Clear ref list.
1881         (cgraph_remove_node): Remove references.
1882         (dump_cgraph_node): Dump references.
1883         (cgraph_clone_node): Clone references.
1884         * cgraph.h: Include ipa-ref.h and ipa-ref-inline.h
1885         (struct cgraph_node, varpool_node): Add ref_lst.
1886         * ipa-ref.c: New file.
1887         * ipa-ref.h: New file.
1888         * ipa-ref-inline.h: New file.
1889         * lto-cgraph.c (output_varpool): Take cgrag node set argument.
1890         (referenced_from_other_partition_p): New function.
1891         (lto_output_varpool_node): Take set arugment; call
1892         referenced_from_other_partition.
1893         (lto_output_ref): New.
1894         (add_references): New.
1895         (output_refs): New.
1896         (output_cgraph): Compute boundary based on references; output refs.
1897         (output_varpool): Accept cgraph_node_set argument.
1898         (input_ref): New.
1899         (input_refs): New.
1900         (input_cgraph): Call input_refs.
1901         * lto-section-in.c (lto_section_name): Add refs.
1902         * Makefile.in: (cgraph.h): Include ipa-ref.h and ipa-ref-inline.h
1903         (ipa-ref.o): New file.
1904         * varpool.c (varpool_node): Clear ipa ref list.
1905         (varpool_remove_node): Remove references.
1906         (dump_varpool_node): Dump references.
1907         (varpool_assemble_decl): Only compile finalized ones.
1908         (varpool_extra_name_alias): Initialize ref list.
1909         * lto-streamer.c (lto-get_section_name): Add .refs section.
1910         * lto-streamer.h (lto_section_type): Add LTO_section_refs.
1911         (referenced_from_other_partition_p): Declared.
1912
1913 2010-05-06  Ira Rosen  <irar@il.ibm.com>
1914
1915         PR tree-optimization/43901
1916         * tree-vect-stmts.c (vectorizable_call): Assert that vector
1917         type is not NULL if it's transformation phase, and return
1918         FALSE if it's analysis.
1919         (vectorizable_conversion, vectorizable_operation,
1920         vectorizable_type_demotion, vectorizable_type_promotion): Likewise.
1921
1922 2010-05-05  Andrew Pinski  <andrew.pinski@caviumnetworks.com>
1923
1924         * config/mips/mips.h (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P):
1925         Delete.
1926         * config/mips/mips.c (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P):
1927         New define.
1928         * config/mips/mips-protos.h
1929         (mips_small_register_classes_for_mode_p): Delete prototype.
1930
1931 2010-05-06  Bernd Schmidt  <bernds@codesourcery.com>
1932
1933         * config/arm/arm.h (MAX_LDM_STM_OPS): New macro.
1934         * config/arm/arm.c (multiple_operation_profitable_p,
1935         compute_offset_order): New static functions.
1936         (load_multiple_sequence, store_multiple_sequence): Use them.
1937         Replace constant 4 with MAX_LDM_STM_OPS.  Compute order[0] from
1938         memory offsets, not register numbers.
1939         (emit_ldm_seq, emit_stm_seq): Replace constant 4 with MAX_LDM_STM_OPS.
1940
1941 2010-05-05  Steven Bosscher  <steven@gcc.gnu.org>
1942
1943         * stor-layout.c (pending_sizes): Change the type to VEC(tree,gc) *.
1944         (get_pending_sizes, put_pending_size, put_pending_sizes):
1945         Update the uses of pending_sizes.
1946         * c-decl.c (store_parm_decls): Likewise.
1947         * c-tree.h (struct c_arg_info): Likewise.
1948         * tree.h: Update the prototype for get_pending_sizes and
1949         put_pending_sizes.
1950
1951 2010-05-05  Jason Merrill  <jason@redhat.com>
1952
1953         PR debug/43370
1954         * c-common.c (handle_aligned_attribute): Respect
1955         ATTR_FLAG_TYPE_IN_PLACE.
1956
1957         PR testsuite/43758
1958         * target.h (struct gcc_target): Add attribute_takes_identifier_p.
1959         * target_def.h (TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Define.
1960         (TARGET_INITIALIZER): Use it.
1961         * c-common.c (attribute_takes_identifier_p): Call it.
1962         * c-common.h: Update prototype.
1963         * config/rs6000/rs6000.c (rs6000_attribute_takes_identifier_p): New.
1964         (TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Define.
1965
1966 2010-05-05  Jakub Jelinek  <jakub@redhat.com>
1967
1968         PR debug/43950
1969         * dwarf2out.c (gen_compile_unit_die): Add DW_AT_identifier_case
1970         DW_ID_down_case for Fortran compilation units.
1971
1972 2010-05-05  Jan Hubicka  <jh@suse.cz>
1973
1974         * lto-cgraph.c (lto_output_varpool_node, input_varpool_node): Correctly
1975         handle aliases.
1976
1977 2010-05-05  Eric Botcazou  <ebotcazou@adacore.com>
1978
1979         * gimplify.c (gimplify_return_expr): Gimplify the size expressions of
1980         a variable-sized RESULT_DECL.
1981
1982 2010-05-05  Maxim Kuvyrkov  <maxim@codesourcery.com>
1983
1984         * doc/invoke.texi (-mfix-cortex-m3-ldrd): Move from ARC section to ARM.
1985
1986 2010-05-05  Jason Merrill  <jason@redhat.com>
1987
1988         PR c++/43787
1989         * gimplify.c (gimplify_expr): Keep working if gimplify_modify_expr
1990         returns GS_OK.
1991         (gimplify_modify_expr_rhs): Return GS_OK if anything changed.
1992
1993 2010-05-05  Alexandre Oliva  <aoliva@redhat.com>
1994             Jakub Jelinek  <jakub@redhat.com>
1995
1996         PR debug/43478
1997         * df-problems.c (struct dead_debug_use, struct dead_debug): New.
1998         (dead_debug_init, dead_debug_finish): New functions.
1999         (dead_debug_add, dead_debug_insert_before): Likewise.
2000         (df_note_bb_compute): Initialize a dead_debug object, add dead
2001         debug uses to it, insert debug bind insns before death insns,
2002         reset debug insns that refer to pending uses at the end.
2003         * rtl.h (make_debug_expr_from_rtl): New prototype.
2004         * varasm.c (make_debug_expr_from_rtl): New function.
2005
2006 2010-05-05  Jan Hubicka  <jh@suse.cz>
2007
2008         * lto-cgraph.c (output_varpool): Forward declare; work on encoder.
2009         (lto_varpool_encoder_new, lto_varpool_encoder_delete,
2010         lto_varpool_encoder_encode, lto_varpool_encoder_lookup,
2011         lto_varpool_encoder_deref, lto_varpool_encoder_size,
2012         lto_varpool_encoder_encode_initializer_p,
2013         lto_set_varpool_encoder_encode_initializer): New functions.
2014         (lto_output_cgraph): Take vset parameter too; compute varpool encoder;
2015         call output_varpool.
2016         (input_varpool_node): Do not always set analyzed.
2017         (input_cgraph_1): Return vector of cgraph nodes.
2018         (input_varpool_1): Return vector of varpools.
2019         (input_cgraph): Free the vectors.
2020         * lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers):
2021         output only initializers needed.
2022         (lto_output): Only call output_cgraph.
2023         (produce_asm_for_decls): Call lto_varpool_encoder_delete.
2024         * lto-section-out.c (lto_new_out_decl_state): Initialize
2025         state->varpool_node_encoder.
2026         * lto-streamer.h (lto_varpool_encoder_d): New.
2027         (lto_out_decl_state, lto_file_decl_data): Add varpool_node_encoder.
2028         (lto_cgraph_encoder_delete, output_cgraph): Update prototype.
2029         (lto_varpool_encoder_deref, lto_varpool_encoder_lookup,
2030         lto_varpool_encoder_encode, lto_varpool_encoder_delete,
2031         lto_varpool_encoder_encode_initializer_p, lto_varpool_encoder_new):
2032         Declare.
2033         (output_varpool, input_varpool): Remove declarations.
2034
2035 2010-05-05  Jan Hubicka  <jh@suse.cz>
2036
2037         * lto-symtab.c (lto_symtab_resolve_can_prevail_p): Alias of variable
2038         with body can prevail.
2039
2040 2010-05-05  Jan Hubicka  <jh@suse.cz>
2041
2042         * lto-symtab.c (lto_symtab_merge_decls_1): Prefer declarations with
2043         size.
2044
2045 2010-05-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2046
2047         * Makefile.in (build/gengtype.o): Add $(HASHTAB_H) to dependencies.
2048
2049         * gengtype.h (erro_at_line): Constify pos argument.
2050
2051         * gengtype.c: Include hashtab.h.
2052         (enum gc_used): Document GC_MAYBE_POINTED_TO.
2053         (error_at_line): Constify pos argument.
2054         (do_typedef): Initialize p->opt field.
2055         (get_file_gtfilename): Fix comment typo.
2056         (struct walk_type_data): Constify line field.
2057         (get_output_file_for_structure): New function.
2058         (write_local_func_for_structure): Constify orig_s argument.
2059         Use get_output_file_for_structure.
2060         (write_func_for_structure): Use get_output_file_for_structure.
2061         (INDENT): New define.
2062         (dump_pair, dump_type, dump_type_list, dump_typekind)
2063         (dump_gc_used, dump_options, dump_fileloc, dump_type_u_s)
2064         (dump_type_u_a, dump_type_u_param_struct, dump_everything): New
2065         functions.
2066         (seen_types): New variable.
2067         (main): New variable do_dump.  Process "-d" command line option.
2068         Call dump_everything if dump requested.
2069
2070 2010-05-05  Jakub Jelinek  <jakub@redhat.com>
2071
2072         * var-tracking.c (var_debug_decl): Save DECL_DEBUG_EXPR value
2073         in a temporary instead of invoking the macro multiple times.
2074         (track_expr_p): Likewise.
2075
2076 2010-05-04  Neil Vachharajani <nvachhar@google.com>
2077
2078         * doc/invoke.texi (-Wcoverage-mismatch): Updated documentation as
2079         per new semantics.
2080         * opts.c (decode_options): Enable -Werror=coverage-mismatch.
2081         * coverage.c (get_coverage_counts): Always emit a warning.  Adjust
2082         conditions for printing notes.
2083         * common.opt (-Wcoverage-mismatch): Allow negative, default to
2084         true, update documentation.
2085         * Makefile.in (coverage.o): Add dependence on DIAGNOSTIC_H and intl.h.
2086
2087 2010-05-04  Jakub Jelinek  <jakub@redhat.com>
2088
2089         PR c/43981
2090         * c-parser.c (c_parser_direct_declarator_inner): Call mark_exp_read
2091         on dimen.
2092
2093 2010-05-04  H.J. Lu  <hongjiu.lu@intel.com>
2094
2095         PR target/43799
2096         * config/i386/i386.md (sse_prologue_save): Clobber CC register.
2097         (*sse_prologue_save_insn1): Likewise.
2098         (SSE prologue save splitter): Likewise.
2099
2100 2010-05-04  Eric Botcazou  <ebotcazou@adacore.com>
2101
2102         * tree.c (free_lang_data_in_one_sizepos): New inline function.
2103         (free_lang_data_in_type): Call it on TYPE_{MIN|MAX}_VALUE of numerical
2104         types.  Call it on TYPE_SIZE and TYPE_SIZE_UNIT of all types.
2105         (free_lang_data_in_decl): Call it on DECL_SIZE and DECL_SIZE_UNIT of
2106         all decls.  Call it on DECL_FIELD_OFFSET of fields.
2107         (find_decls_types_r): Follow DECL_VALUE_EXPR.
2108         (iterative_hash_expr) <PLACEHOLDER_EXPR>: New case.
2109
2110 2010-05-04  Martin Jambor  <mjambor@suse.cz>
2111
2112         * tree-sra.c (build_access_from_expr_1): The first parameter type
2113         changed to simple tree.
2114         (build_access_from_expr): Likewise, gsi parameter was eliminated.
2115         (scan_assign_result): Renamed to assignment_mod_result, enum elements
2116         renamed as well.
2117         (build_accesses_from_assign): Removed all parameters except for a
2118         simple gimple statement.  Now returns a simple bool.
2119         (scan_function): All non-analysis parts moved to separate functions
2120         sra_modify_function_body and ipa_sra_modify_function_body.  Removed all
2121         parameters and updated both callers.
2122         (sra_modify_expr): Removed parameter data.
2123         (sra_modify_function_body): New function.
2124         (perform_intra_sra): Call sra_modify_function_body to modify the
2125         function body.
2126         (replace_removed_params_ssa_names): Parameter data changed into
2127         adjustments vector.
2128         (sra_ipa_modify_expr): Likewise.  Also removed unused parameter gsi and
2129         changed the parameter dont_convert to convert with the opposite
2130         meaning.
2131         (sra_ipa_modify_assign): Parameter data changed into adjustments
2132         vector, return value changed to bool.
2133         (ipa_sra_modify_function_body): New function.
2134         (sra_ipa_reset_debug_stmts): Updated a comment.
2135         (modify_function): Use ipa_sra_modify_function_body to modify function
2136         body.
2137
2138 2010-05-04  H.J. Lu  <hongjiu.lu@intel.com>
2139
2140         PR middle-end/43671
2141         * alias.c (true_dependence): Handle the same VALUE in x and mem.
2142         (canon_true_dependence): Likewise.
2143         (write_dependence_p): Likewise.
2144
2145 2010-05-04  Jan Hubicka  <jh@suse.cz>
2146
2147         * Makefile.in (cgraphbuild.o): Add dependency on ipa-utils.h
2148         * cgraphbuild.c: Include ipa-utils.h
2149         (record_reference_ctx): New struct.
2150         (record_reference): Simplify to work on initializers; not statements.
2151         (mark_address, mark_load, mark_store): New.
2152         (build_cgraph_edges): Simplify using walk_stmt_load_store_addr_ops;
2153         walk PHI nodes too.
2154         (record_references_in_initializer): Update use of record_reference.
2155         (rebuild_cgraph_edges): Simplify using walk_stmt_load_store_addr_ops;
2156         walk PHI nodes too.
2157
2158 2010-05-04  Jan Hubicka  <jh@suse.cz>
2159
2160         * lto-symtab.c (lto_cgraph_replace_node): Do not remove edges;
2161         node will be removed anyway.
2162         (lto_varpool_replace_node): Allow also unanalyzed nodes;
2163         relink aliases of node into prevailing node.
2164         * varpool.c (varpool_remove_node): Remove aliases properly;
2165         when removing node, remove all its aliases too; remove DECL_INITIAL
2166         of removed node; ggc_free the varpool node.
2167
2168 2010-05-04  Richard Guenther  <rguenther@suse.de>
2169
2170         PR tree-optimization/43879
2171         * tree-ssa-structalias.c (alias_get_name): Use
2172         DECL_ASSEMBLER_NAME if available.
2173         (create_function_info_for): Return the varinfo node.
2174         (ipa_pta_execute): Associate same-body aliases and extra names
2175         with their origin nodes varinfo.  Dump DECL_ASSEMBLER_NAME.
2176
2177 2010-05-04  Kaz Kojima  <kkojima@gcc.gnu.org>
2178
2179         * config/sh/sh.c (sh_small_register_classes_for_mode_p): Remove static.
2180
2181 2010-05-04  Mikael Pettersson  <mikpe@it.uu.se>
2182
2183         PR bootstrap/43964
2184         * ira-color.c (assign_hard_reg): Declare rclass and add_cost
2185         only if HONOR_REG_ALLOC_ORDER is not defined.
2186
2187 2010-05-04  Richard Guenther  <rguenther@suse.de>
2188
2189         PR tree-optimization/43949
2190         * tree-vrp.c (extract_range_from_binary_expr): Only handle
2191         TRUNC_MOD_EXPR.
2192
2193 2010-04-26  Jason Merrill  <jason@redhat.com>
2194
2195         * c.opt (-fstrict-enums): New.
2196         * doc/invoke.texi (C++ Dialect Options): Document -fstrict-enums.
2197
2198 2010-05-03  David Ung <davidu@mips.com>
2199             James E. Wilson  <wilson@codesourcery.com>
2200
2201         * config/mips/mips.c (mips_output_division): If GENERATE_DIVIDE_TRAPS,
2202         emit the trap instruction before the divide for TUNE_74K.
2203
2204 2010-05-03  Steven Bosscher  <steven@gcc.gnu.org>
2205
2206         * doc/tm.texi (defmac SMALL_REGISTER_CLASSES): Remove.
2207         (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P): Add documentation,
2208         based on the above, for new target hook.
2209
2210         * hooks.c (hook_bool_mode_true): New generic hook.
2211         * hooks.h (hook_bool_mode_true): Add prototype.
2212
2213         * target.h (struct gcc_target): Add small_register_classes_for_mode_p
2214         target hook.
2215         * target-def.h (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P): New default
2216         target hook, set to hook_bool_mode_false.
2217         * regs.h: Remove default definition of SMALL_REGISTER_CLASSES.
2218         * reload.c (push_secondary_reload): Replace SMALL_REGISTER_CLASSES
2219         with targetm.small_register_classes_for_mode_p.
2220         (find_reusable_reload): Likewise.
2221         (combine_reloads): Likewise.
2222         * reload1.c (reload_as_needed): Likewise.
2223         * cse.c (approx_reg_cost_1, hash_rtx_cb): Likewise.
2224         * ifcvt.c (noce_process_if_block, check_cond_move_block,
2225         dead_or_predicable): Likewise.
2226         * regmove.c (optimize_reg_copy_1): Likewise.
2227         * calls.c (prepare_call_address): Likewise.
2228         (precompute_register_parameters): Likewise.
2229
2230         * config/sh/sh.h: Replace SMALL_REGISTER_CLASSES with new target
2231         hook definition.
2232         * config/sh/sh.c (sh_small_register_classes_for_mode_p): Add
2233         implementation of the hook that considers all register classes
2234         small except for SH64.
2235         (sh_override_options): Use the new hook.
2236         * config/sh/sh-protos.h (sh_small_register_classes_for_mode_p):
2237         Add prototype.
2238
2239         * config/arm/arm.h: Replace SMALL_REGISTER_CLASSES with new target
2240         hook definition.
2241         * config/arm/arm.c (arm_small_register_classes_for_mode_p): Add
2242         implementation of the hook that considers all register classes
2243         small for THUMB1.
2244         * config/arm/arm-protos.h (arm_small_register_classes_for_mode_p):
2245         Add prototype.
2246
2247         * config/mips/mips.h: Replace SMALL_REGISTER_CLASSES with new target
2248         hook definition.
2249         * config/mips/mips.c (mips_small_register_classes_for_mode_p): Add
2250         implementation of the hook that considers all register classes
2251         small for MIPS16.
2252         * config/mips/mips-protos.h (mips_small_register_classes_for_mode_p):
2253         Add prototype.
2254
2255         * config/i386/i386.h: Replace SMALL_REGISTER_CLASSES with new target
2256         hook definition.
2257         * config/m32c/m32c.h: Likewise.
2258         * config/pdp11/pdp11.h: Likewise.
2259         * config/avr/avr.h: Likewise.
2260         * config/xtensa/xtensa.h: Likewise.
2261         * config/m68hc11/m68hc11.h: Likewise.
2262         * config/mn10300/mn10300.h: Likewise.
2263         * config/mcore/mcore.h: Likewise.
2264         * config/h8300/h8300.h: Likewise.
2265         * config/bfin/bfin.h: Likewise.
2266
2267         * config/iq2000/iq2000.h: Remove SMALL_REGISTER_CLASSES definition.
2268         * config/rx/rx.h: Remove SMALL_REGISTER_CLASSES definition.
2269
2270 2010-05-03  Anatoly Sokolov  <aesok@post.ru>
2271
2272         * double-int.h (tree_to_double_int): Remove macro.
2273         (double_int_to_tree, double_int_fits_to_tree_p): Move prototypes ...
2274         * tree.h (double_int_to_tree, double_int_fits_to_tree_p): ... here.
2275         (tree_to_double_int): New function.
2276         * double-int.c (double_int_to_tree, double_int_fits_to_tree_p):
2277         Move ...
2278         * tree.c (double_int_to_tree, double_int_fits_to_tree_p): ... here.
2279
2280 2010-05-03  Richard Guenther  <rguenther@suse.de>
2281
2282         PR tree-optimization/43971
2283         * tree-ssa-structalias.c (get_constraint_for_1): Fix
2284         constraints in the !flag_delete_null_pointer_checks case.
2285
2286 2010-05-03  Jakub Jelinek  <jakub@redhat.com>
2287
2288         PR debug/43972
2289         * config/i386/i386.c (ix86_delegitimize_address): Make sure the
2290         result mode matches original rtl mode.
2291
2292 2010-05-03  Dave Korn  <dave.korn.cygwin@gmail.com>
2293
2294         PR target/43888
2295         * config/i386/winnt.c (i386_pe_binds_local_p): Handle weak decls.
2296
2297 2010-05-02  Uros Bizjak  <ubizjak@gmail.com>
2298
2299         * config/i386/i386.c (ix86_target_string): Output 'flags', not 'isa',
2300         when processing flag options.
2301
2302 2010-05-02  Uros Bizjak  <ubizjak@gmail.com>
2303
2304         * gcov-iov.c (main): Change format string placeholder
2305         from %#08x to 0x%08x.
2306         * genchecksum.c (dosum): Change format string placeholder
2307         from %#02x to 0x%02x.
2308
2309 2010-05-02  Richard Guenther  <rguenther@suse.de>
2310
2311         PR tree-optimization/43879
2312         * tree-tailcall.c (find_tail_calls): Clobbers also prevent tail calls.
2313
2314 2010-05-02  Bruno Haible  <bruno@clisp.org>
2315
2316         * doc/extend.texi (Function Attributes): Fix a typo.
2317
2318 2010-05-02  Uros Bizjak  <ubizjak@gmail.com>
2319
2320         Revert:
2321         * hwint.h (HOST_WIDE_INT_PRINT_DOUBLE_HEX): Change format string
2322         placeholder from 0x%x to %#x.
2323         (HOST_WIDEST_INT_PRINT_DOUBLE_HEX): Ditto.
2324         * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Ditto.
2325         * config/i386/i386-interix.h (ASM_OUTPUT_ASCII): Ditto.
2326         * config/i386/att.h (ASM_OUTPUT_ASCII): Ditto.
2327         * config/i386/sysv4.h (ASM_OUTPUT_ASCII): Ditto.
2328         * config/i386/i386.c (ix86_target_string): Ditto.
2329         * config/i386/i386.c (output_pic_addr_const): Ditto.
2330         (print_operand): Ditto.
2331
2332 2010-05-02  Uros Bizjak  <ubizjak@gmail.com>
2333
2334         * vmsdbgout.c (ASM_OUTPUT_DEBUG_DATA1): Change format string
2335         placeholder from 0x%x to %#x.
2336         (ASM_OUTPUT_DEBUG_DATA1): Ditto.
2337         (ASM_OUTPUT_DEBUG_DATA4): Ditto.
2338         (ASM_OUTPUT_DEBUG_DATA): Ditto.
2339         (ASM_OUTPUT_DEBUG_ADDR_DATA): Ditto.
2340         (ASM_OUTPUT_DEBUG_DATA8): Ditto.
2341         * optc-gen.awk: Ditto.
2342         * hwint.h (HOST_WIDE_INT_PRINT_DOUBLE_HEX): Ditto.
2343         (HOST_WIDE_INT_PRINT_HEX): Ditto.
2344         (HOST_WIDEST_INT_PRINT_HEX): Ditto.
2345         (HOST_WIDEST_INT_PRINT_DOUBLE_HEX): Ditto.
2346
2347 2010-05-01  Anatoly Sokolov  <aesok@post.ru>
2348
2349         * target.h (struct calls): Add function_value_regno_p field.
2350         * target-def.h (TARGET_FUNCTION_VALUE_REGNO_P): Define.
2351         (TARGET_INITIALIZER): Use TARGET_FUNCTION_VALUE_REGNO_P.
2352         * targhooks.c (default_function_value_regno_p): New function.
2353         * targhooks.h (default_function_value_regno_p): Declare function.
2354         * rtlanal.c (keep_with_call_p): Use function_value_regno_p hook.
2355         * builtins.c. (apply_result_size): (Ditto.).
2356         * combine.c. (likely_spilled_retval_p): (Ditto.).
2357         * mode-switching.c. Include 'target.h'.
2358         (create_pre_exit): Use function_value_regno_p hook.
2359         * Makefile.in (mode-switching.o): Add dependency on TARGET_H.
2360         * doc/tm.texi (FUNCTION_VALUE_REGNO_P,
2361         TARGET_FUNCTION_VALUE_REGNO_P): Revise documentation.
2362
2363         * config/i386/i386.h (TARGET_FUNCTION_VALUE_REGNO_P): Remove macro.
2364         * config/i386/i386.c (TARGET_FUNCTION_VALUE_REGNO_P): Define macro.
2365         (ix86_function_value_regno_p): Declare as static, change argument
2366         type to const unsigned int.
2367         * config/i386/i386-protos.h (ix86_function_value_regno_p): Remove.
2368
2369 2010-05-01  Richard Guenther  <rguenther@suse.de>
2370
2371         PR tree-optimization/43949
2372         * tree-vrp.c (ssa_name_nonnegative_p): Return true for unsigned
2373         types.
2374         (extract_range_from_binary_expr): Handle *_MOD_EXPR.
2375
2376 2010-05-01  Anatoly Sokolov  <aesok@post.ru>
2377
2378         * rtl.h (CONST_DOUBLE_P): Define.
2379         (rtx_to_double_int): Declare.
2380         * emit-rtl.c (rtx_to_double_int): New function.
2381         * dwarf2out.c (insert_double): New function.
2382         (loc_descriptor, add_const_value_attribute): Clean up, use
2383         rtx_to_double_int and insert_double functions.
2384
2385 2010-05-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
2386
2387         * doc/extend.texi (Inline): Add missing return keyword to examples.
2388         (Function Attributes, Variable Attributes, Pragmas): Hyphenate
2389         "command-line".
2390
2391 2010-04-30  Eric Botcazou  <ebotcazou@adacore.com>
2392
2393         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check the alignment of
2394         the variable part of the offset as well.  Use highest_pow2_factor for
2395         all alignment checks.
2396
2397 2010-04-30  Richard Guenther  <rguenther@suse.de>
2398
2399         PR tree-optimization/43879
2400         * tree-ssa-structalias.c (type_could_have_pointers): Functions
2401         can have pointers.
2402
2403 2010-04-30  Jan Hubicka  <jh@suse.cz>
2404
2405         * lto-symtab.c (lto_symtab_resolve_can_prevail_p): Chose var with
2406         varpool.
2407         (lto_symtab_merge_decls_1): Remove logic looking for an initializer.
2408
2409 2010-04-30  Jan Hubicka  <jh@suse.cz>
2410
2411         * cgraph.h (cgraph_node_set_nonempty_p, varpool_node_set_nonempty_p):
2412         New.
2413         * lto-cgraph.c (input_cgraph): Remove call to lto_mark_file_for_ltrans.
2414         * lto-streamer.h (lto_file_decl_data): Remove needs_ltrans_p.
2415         (lto_file_needs_ltrans_p, lto_mark_file_for_ltrans,
2416         cgraph_node_set_needs_ltrans_p): Remove.
2417
2418 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
2419
2420         * sdbout.c: Include vec.h, do not include varray.h.
2421         (deferred_global_decls, sdbout_global_decl,
2422         sdbout_finish, sdbout_init): Use VEC instead of VARRAY.
2423         * toplev.c: Do not include varray.h.
2424         (dump_memory_report): Do not dump VARRAY statistics.
2425         * gengtype.c (open_base_file): Ignore varray.h.
2426         * Makefile.in: Update for abovementioned changes.
2427         Remove all traces of varray.c and varray.h.
2428         * varray.c: Remove file.
2429         * varray.h: Remove file.
2430
2431 2010-04-30  Jan Hubicka  <jh@suse.cz>
2432
2433         * lto-cgraph.c (lto_output_varpool_node): Always output constant pool
2434         references.
2435
2436 2010-04-30  Jan Hubicka  <jh@suse.cz>
2437
2438         * tree-profile.c (tree_init_ic_make_global_vars): Mark new decls as
2439         needed.
2440
2441 2010-04-30  Richard Guenther  <rguenther@suse.de>
2442
2443         * tree-ssa-structalias.c (get_constraint_for_1): Generate
2444         constraints for CONSTRUCTOR.
2445
2446 2010-04-30  Richard Guenther  <rguenther@suse.de>
2447
2448         PR lto/43946
2449         * passes.c (init_optimization_passes): Move pass_ipa_free_lang_data
2450         first after all lowering passes.
2451
2452 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
2453
2454         * toplev.c: Include varray.h for statistics dumping.
2455         * tree.h: Do not declare varray_head_tag.
2456         * tree-into-ssa.c, tree-ssa-uninit.c, tree-phinodes.c, omega.c,
2457         regs.h, lto-cgraph.c, tree-ssa-loop-ivopts.c, tree-nomudflap.c,
2458         c-objc-common.c, lto-streamer-out.c, tree-ssa-propagate.c,
2459         gimple-low.c, c-semantics.c, dwarf2out.c, lto-streamer-in.c,
2460         lto-section-in.c, alias.c, tree-if-conv.c, gimplify.c, ggc-zone.c,
2461         tree-ssa.c, tree-ssa-loop-prefetch.c, integrate.h, c-gimplify.c,
2462         c-common.c, c-common.h, reg-stack.c, basic-block.h,
2463         tree-ssa-structalias.c, lto-section-out.c, tree-ssanames.c: Do not
2464         include varray.h.
2465         * Makefile.in: Update for abovementioned changes.
2466
2467 2010-04-30  Jakub Jelinek  <jakub@redhat.com>
2468
2469         PR debug/43942
2470         * tree.c (auto_var_in_fn_p): Return false for DECL_EXTERNAL vars.
2471
2472 2010-04-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
2473
2474         * config/picochip/picochip.c (picochip_legitimize_address): Define.
2475         Use this function to do machine-specific conversion.
2476         (picochip_legitimize_reload_address): Likewise.
2477         (picochip_legitimate_address_p): Check valid base register only if
2478         strict.
2479         (picochip_check_conditional_copy): Check for modw only if opnd is
2480         register.
2481         * config/picochip/picochip.h (LEGITIMIZE_RELOAD_ADDRESS): Use this
2482         to call the function in c.
2483         * config/picochip/picochip-protos.h
2484         (picochip_legitimize_reload_address): Define.
2485         * config/picochip/picochip.md (supported_compare1): Define.
2486
2487 2010-04-30  Jan Hubicka  <jh@suse.cz>
2488
2489         * cgraph.h (cgraph_local_info): Remove for_functions_valid.
2490         (cgraph_global_info): Remove inlined.
2491         (LTO_cgraph_tag_names): Remove.
2492         (LTO_cgraph_tags, LCC_NOT_FOUND): Move to ...
2493         * lto-cgraph.c (LTO_cgraph_tags, LCC_NOT_FOUND): ... here;
2494         simplify cgraph tags and document.
2495         (lto_output_node): Use only LTO_cgraph_unavail_node and
2496         LTO_cgraph_analyzed_node; Do not save analzed, reachable,
2497         for_functions_valid, global info, process and output flags.
2498         (input_overwrite_node): Initialize estimated stack size and
2499         estimated growth.  Do not read flags we no longer store.
2500         (input_node): Likewise do not read info no longer stored.
2501         * ipa-inline.c (cgraph_mark_inline_edge): Do not set global.inlined
2502         flag.
2503
2504 2010-04-30  Richard Guenther  <rguenther@suse.de>
2505
2506         PR tree-optimization/43879
2507         * tree-ssa-structalias.c (get_constraint_for_1): Properly
2508         handle non-zero initializers.
2509
2510 2010-04-30  Richard Guenther  <rguenther@suse.de>
2511
2512         * builtins.c (fold_builtin_1): Delete free (0).
2513
2514 2010-04-29  Jan Hubicka  <jh@suse.cz>
2515
2516         * gengtype.c (open_base_files): Add lto-streamer.h
2517         * cgraph.h (cgraph_local_info): lto_file_data is now in GGC.
2518         (pass_ipa_cp): GGC collect.
2519         * toplev. (compile_file): Do not output symbols.
2520         * ipa-inline.c (pass_ipa_inline): Add ggc collect.
2521         * timevar.def (TV_VARPOOL, TV_IPA_LTO_DECL_INIT_IO,
2522         TV_IPA_LTO_DECL_MERGE, TV_IPA_LTO_CGRAPH_MERGE, TV_VAROUT): New.
2523         * lto-section-in.c: Include ggc.h
2524         (lto_new_in_decl_state): Alloc in GGC.
2525         (lto_delete_in_decl_state): Likewise.
2526         * ipa.c (pass_ipa_function_visibility, pass_ipa_whole_program):
2527         Collect.
2528
2529 2010-04-29  Bernd Schmidt  <bernds@codesourcery.com>
2530
2531         PR target/42895
2532         * doc/tm.texi (ADJUST_REG_ALLOC_ORDER): Renamed from
2533         ORDER_REGS_FOR_LOCAL_ALLOC.  All instances of this macro changed.
2534         (HONOR_REG_ALLOC_ORDER): Describe new macro.
2535         * ira.c (setup_alloc_regs): Use ADJUST_REG_ALLOC_ORDER if defined.
2536         * ira-color.c (assign_hard_reg): Take prologue/epilogue costs into
2537         account only if HONOR_REG_ALLOC_ORDER is not defined.
2538         * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Define.
2539         * system.h (ORDER_REGS_FOR_LOCAL_ALLOC): Poison.
2540
2541 2010-04-29  Jon Grant  <04@jguk.org>
2542
2543         * collect2.c (vflag): Change type from int to bool.
2544         (debug): Likewise.
2545         (helpflag): New global bool.
2546         (main): Set vflag and debug with boolean, not integer truth values.
2547         Accept new "--help" option and output usage text if found.
2548         * collect2.h (vflag): Update prototype.
2549         (debug): Likewise.
2550
2551 2010-04-29  H.J. Lu  <hongjiu.lu@intel.com>
2552
2553         PR bootstrap/43936
2554         * plugin.h (flag_plugin_added): Moved out of invoke_plugin_callbacks.
2555
2556 2010-04-29  Richard Guenther  <rguenther@suse.de>
2557
2558         PR bootstrap/43935
2559         * plugin.h (invoke_plugin_callbacks): Annotate arguments
2560         with ATTRIBUTE_UNUSED.
2561
2562 2010-04-29  H.J. Lu  <hongjiu.lu@intel.com>
2563
2564         PR target/43921
2565         * config/i386/i386.c (get_some_local_dynamic_name): Replace
2566         INSN_P with NONDEBUG_INSN_P.
2567         (distance_non_agu_define): Likewise.
2568         (distance_agu_use): Likewise.
2569
2570 2010-04-29  Bernd Schmidt  <bernds@codesourcery.com>
2571
2572         From Dominique d'Humieres <dominiq@lps.ens.fr>
2573         PR bootstrap/43858
2574         * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs to compute
2575         test_set.
2576
2577 2010-04-29  Brian Hackett  <bhackett1024@gmail.com>
2578
2579         * plugin.h (invoke_plugin_callbacks): New inline function.
2580         * plugin.c (flag_plugin_added): New global flag.
2581         (add_new_plugin): Initialize above flag.
2582         (invoke_plugin_callbacks): Rename to ...
2583         (invoke_plugin_callbacks_full): ... this.
2584
2585 2010-04-28  Jan Hubicka  <jh@suse.cz>
2586
2587         * lto-symtab.c (lto_symtab_entry_def) Add vnode.
2588         (lto_varpool_replace_node): New.
2589         (lto_symtab_resolve_symbols): Resolve varpool nodes.
2590         (lto_symtab_merge_decls_1): Prefer decls with varpool node.
2591         (lto_symtab_merge_cgraph_nodes_1): Merge varpools.
2592         * cgraph.h (varpool_node_ptr): New type.
2593         (varpool_node_ptr): New vector.
2594         (varpool_node_set_def): New structure.
2595         (varpool_node_set): New type.
2596         (varpool_node_set): New vector.
2597         (varpool_node_set_element_def): New structure.
2598         (varpool_node_set_element, const_varpool_node_set_element): New types.
2599         (varpool_node_set_iterator): New type.
2600         (varpool_node): Add prev pointers, add used_from_other_partition,
2601         in_other_partition.
2602         (varpool_node_set_new, varpool_node_set_find, varpool_node_set_add,
2603         varpool_node_set_remove, dump_varpool_node_set, debug_varpool_node_set,
2604         varpool_get_node, varpool_remove_node): Declare.
2605         (vsi_end_p, vsi_next, vsi_node, vsi_start, varpool_node_in_set_p,
2606         varpool_node_set_size): New inlines.
2607         * cgraph.c (dump_cgraph_node): Dump asm names of aliases.
2608         * tree-pass.h (varpool_node_set_def): Forward declare.
2609         (ipa_opt_pass_d): Summary writting takes vnode sets too.
2610         (ipa_write_optimization_summaries): Update prototype.
2611         * ipa-cp.c (ipcp_write_summary): Update.
2612         * ipa-reference.c (ipa_reference_write_summary): Update.
2613         * lto-cgraph.c (lto_output_varpool_node): New static function.
2614         (output_varpool): New function.
2615         (input_varpool_node): New static function.
2616         (input_varpool_1): New function.
2617         (input_cgraph): Input varpool.
2618         * ipa-pure-const.c (pure_const_write_summary): Update.
2619         * lto-streamer-out.c (lto_output): Update, output varpool too.
2620         (write_global_stream): Kill WPA hack.
2621         (produce_asm_for_decls): Update.
2622         (output_alias_pair_p): Handle variables.
2623         (output_unreferenced_globals): Output only needed partition of varpool.
2624         * ipa-inline.c (inline_write_summary): Update.
2625         * lto-streamer-in.c (lto_input_tree_ref, lto_input_tree): Do not build
2626         cgraph.
2627         * lto-section-in.c (lto_section_name): Add varpool and jump funcs.
2628         * ipa.c (hash_varpool_node_set_element, eq_varpool_node_set_element,
2629         varpool_node_set_new, varpool_node_set_add,
2630         varpool_node_set_remove, varpool_node_set_find, dump_varpool_node_set,
2631         debug_varpool_node_set): New functions.
2632         * passes.c (rest_of_decl_compilation): when in LTO do not finalize.
2633         (execute_one_pass): Process new decls too.
2634         (ipa_write_summaries_2): Pass around vsets.
2635         (ipa_write_summaries_1): Likewise.
2636         (ipa_write_summaries): Build vset; be more selective about cgraph nodes
2637         to add.
2638         (ipa_write_optimization_summaries_1): Pass around vsets.
2639         (ipa_write_optimization_summaries): Likewise.
2640         * varpool.c (varpool_get_node): New.
2641         (varpool_node): Update doubly linked lists.
2642         (varpool_remove_node): New.
2643         (dump_varpool_node): More dumping.
2644         (varpool_enqueue_needed_node): Update doubly linked lists.
2645         (decide_is_variable_needed): Kill ltrans hack.
2646         (varpool_finalize_decl): Kill lto hack.
2647         (varpool_assemble_decl): Skip decls in other partitions.
2648         (varpool_assemble_pending_decls): Update doubly linkes lists.
2649         (varpool_empty_needed_queue): Likewise.
2650         (varpool_extra_name_alias): Likewise.
2651         * lto-streamer.c (lto_get_section_name): Add vars section.
2652         * lto-streamer.h (lto_section_type): Update.
2653         (output_varpool, input_varpool): Declare.
2654
2655 2010-04-28  Mike Stump  <mikestump@comcast.net>
2656
2657         * config/i386/darwin.h (CC1_SPEC): Ignore -mdynamic-no-pic for now.
2658
2659 2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
2660
2661         * lto-streamer-in.c (unpack_ts_type_value_fields): Replace test for
2662         record or union type with RECORD_OR_UNION_TYPE_P predicate.
2663         (lto_input_ts_type_tree_pointers): Likewise.
2664         * lto-streamer-out.c (pack_ts_type_value_fields): Likewise.
2665         (lto_output_ts_type_tree_pointers): Likewise.
2666
2667 2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
2668
2669         Uniquization of constants at the Tree level
2670         * tree.h (DECL_IN_CONSTANT_POOL): New macro.
2671         (tree_decl_with_vis): Add in_constant_pool bit, move shadowed_for_var_p
2672         bit to the end.
2673         (tree_output_constant_def): Declare.
2674         * gimplify.c (gimplify_init_constructor): When using block copy, first
2675         uniquize the constant constructor on the RHS.
2676         * lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Deal with
2677         DECL_IN_CONSTANT_POOL flag.
2678         * lto-streamer-out.c (pack_ts_decl_with_vis_value_fields): Likewise.
2679         * varasm.c (make_decl_rtl): Deal with variables belonging to the global
2680         constant pool.
2681         (assemble_variable): Deal with symbols belonging to the tree constant
2682         pool.
2683         (get_constant_section): Add ALIGN parameter and simplify.
2684         (build_constant_desc): Build a VAR_DECL and attach it to the symbol.
2685         (assemble_constant_contents): Use the expression of the VAR_DECL.
2686         (output_constant_def_contents): Use the alignment of the VAR_DECL.
2687         (tree_output_constant_def): New global function.
2688         (mark_constant): Use the expression of the VAR_DECL.
2689         (place_block_symbol): Use the alignment of the VAR_DECL and the size of
2690         its expression.
2691         (output_object_block): Likewise and assemble the expression.
2692
2693 2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
2694
2695         * lto-streamer.c [LTO_STREAMER_DEBUG] (tree_htab, tree_hash_entry,
2696         hash_tree, eq_tree): New tree hash table.
2697         (lto_streamer_init) [LTO_STREAMER_DEBUG]: Initialize it.
2698         [LTO_STREAMER_DEBUG] (lto_orig_address_map, lto_orig_address_get,
2699         lto_orig_address_remove): Reimplement.
2700
2701 2010-04-28  Xinliang David Li  <davidxl@google.com>
2702
2703         PR c/42643
2704         * tree-ssa-uninit.c (can_skip_redundant_opnd): New function.
2705         (compute_uninit_opnds_pos): New function.
2706         (is_non_loop_exit_postdominating): New function.
2707         (compute_control_dep_chain): New function.
2708         (find_pdom): New function.
2709         (convert_control_dep_chain_into_preds): New function.
2710         (find_predicates): New function.
2711         (find_control_equiv_block): New function.
2712         (collect_phi_def_edges): New function.
2713         (find_def_preds): New function.
2714         (find_dom): New function.
2715         (dump_predicates): New function.
2716         (get_cmp_code): New function.
2717         (is_value_included_in): New function.
2718         (find_matching_predicate_in_rest_chains): New function.
2719         (use_pred_not_overlap_with_undef_path_pred): New function.
2720         (is_use_properly_guarded): New function.
2721         (normalize_cond_1): New function.
2722         (is_and_or_or): New function.
2723         (normalize_cond): New function.
2724         (is_gcond_subset_of): New function.
2725         (is_subset_of_any): New function.
2726         (is_or_set_subset_of): New function.
2727         (is_and_set_subset_of): New function.
2728         (is_norm_cond_subset_of): New function.
2729         (is_pred_expr_subset_of): New function.
2730         (is_pred_chain_subset_of): New function.
2731         (is_included_in): New function.
2732         (is_superset_of): New function.
2733         (find_uninit_use): New function.
2734         (warn_uninitialized_phi): New function.
2735         (compute_possibly_undefined_names): New function.
2736         (ssa_undefined_value_p): New function.
2737         (execute_late_warn_uninitialized): New function.
2738         * tree-ssa.c (ssa_undefined_value_p): Removed.
2739         (warn_uninit): Changed to extern.
2740         (warn_uninitialized_phi): Removed.
2741         (warn_uninitialized_vars): Changed to extern.
2742         (execute_late_warn_uninitialized): Removed
2743         * tree-flow.h: Add new prototypes.
2744         * timevar.def: Add new time variable.
2745         * Makefile.in: Add new build file.
2746
2747 2010-04-28  Uros Bizjak  <ubizjak@gmail.com>
2748
2749         * config/alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
2750         type if available.
2751
2752 2010-04-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2753
2754         PR target/22224
2755         * config/alpha/osf5.h (ASM_OUTPUT_LOCAL): Redefine.
2756
2757 2010-04-28  Martin Jambor  <mjambor@suse.cz>
2758
2759         * cgraph.h (struct cgraph_node): New field indirect_calls.
2760         (struct cgraph_indirect_call_info): New type.
2761         (struct cgraph_edge): Removed field indirect_call. New fields
2762         indirect_info, indirect_inlining_edge and indirect_unknown_callee.
2763         (cgraph_create_indirect_edge): Declare.
2764         (cgraph_make_edge_direct): Likewise.
2765         (enum LTO_cgraph_tags): New item LTO_cgraph_indirect_edge.
2766         * ipa-prop.h (struct ipa_param_call_note): Removed.
2767         (struct ipa_node_params): Removed field param_calls.
2768         (ipa_create_all_structures_for_iinln): Declare.
2769         * cgraph.c: Described indirect edges and uids in initial comment.
2770         (cgraph_add_edge_to_call_site_hash): New function.
2771         (cgraph_edge): Search also among the indirect edges, use
2772         cgraph_add_edge_to_call_site_hash to add edges to the call site hash.
2773         (cgraph_set_call_stmt): Possibly turn an indirect edge into a direct
2774         one, use cgraph_add_edge_to_call_site_hash to add edges to the call
2775         site hash.
2776         (initialize_inline_failed): Assign a reason to indirect edges.
2777         (cgraph_create_edge_1): New function.
2778         (cgraph_create_edge): Moved some functionality to
2779         cgraph_create_edge_1.
2780         (cgraph_create_indirect_edge): New function.
2781         (cgraph_edge_remove_callee): Add an assert checking for
2782         non-indirectness.
2783         (cgraph_edge_remove_caller): Special-case indirect edges.
2784         (cgraph_remove_edge): Likewise.
2785         (cgraph_set_edge_callee): New function.
2786         (cgraph_redirect_edge_callee): Use cgraph_set_edge_callee.
2787         (cgraph_make_edge_direct): New function.
2788         (cgraph_update_edges_for_call_stmt_node): Do nothing only when also
2789         the declaration of the call statement matches.
2790         (cgraph_node_remove_callees): Special-case indirect edges.
2791         (cgraph_clone_edge): Likewise.
2792         (cgraph_clone_node): Clone also the indirect edges.
2793         (dump_cgraph_node): Dump indirect_inlining_edge flag instead of
2794         indirect_call, dump count of indirect_calls edges.
2795         * ipa-prop.c (iinlining_processed_edges): New variable.
2796         (ipa_note_param_call): Create indirect edges instead of
2797         creating notes.  New parameter node.
2798         (ipa_analyze_call_uses): New parameter node, pass it on to
2799         ipa_note_param_call.
2800         (ipa_analyze_stmt_uses): Likewise.
2801         (ipa_analyze_params_uses): Pass node to ipa_analyze_stmt_uses.
2802         (print_edge_addition_message): Work on edges rather than on notes.
2803         (update_call_notes_after_inlining): Likewise, renamed to
2804         update_indirect_edges_after_inlining.
2805         (ipa_create_all_structures_for_iinln): New function.
2806         (ipa_free_node_params_substructures): Do not free notes.
2807         (ipa_edge_duplication_hook): Propagate bits within
2808         iinlining_processed_edges bitmap.
2809         (ipa_node_duplication_hook): Do not duplicate notes.
2810         (free_all_ipa_structures_after_ipa_cp): Renamed to
2811         ipa_free_all_structures_after_ipa_cp.
2812         (free_all_ipa_structures_after_iinln): Renamed to
2813         ipa_free_all_structures_after_iinln.
2814         (ipa_write_param_call_note): Removed.
2815         (ipa_read_param_call_note): Removed.
2816         (ipa_write_indirect_edge_info): New function.
2817         (ipa_read_indirect_edge_info): Likewise.
2818         (ipa_write_node_info): Do not stream notes, do stream information
2819         in indirect edges.
2820         (ipa_read_node_info): Likewise.
2821         (lto_ipa_fixup_call_notes): Removed.
2822         * ipa-cp.c (pass_ipa_cp): Set stmt_fixup to NULL.
2823         * ipa-inline.c (pass_ipa_inline): Likewise.
2824         * cgraphunit.c (verify_cgraph_node): Check also indirect edges.
2825         * cif-code.def (INDIRECT_UNKNOWN_CALL): New reason.
2826         * tree-inline.c (copy_bb): Removed an unnecessary double check for
2827         is_gimple_call.
2828         * tree-inline.c (get_indirect_callee_fndecl): Do not consider indirect
2829         edges.
2830         * lto-cgraph.c (output_outgoing_cgraph_edges): New function.
2831         (output_cgraph): Stream also indirect edges.
2832         (lto_output_edge): Added capability to stream indirect edges.
2833         (input_edge): Likewise.
2834         (input_cgraph_1): Likewise.
2835         * lto-streamer-in.c (fixup_call_stmt_edges_1): Fixup also statements
2836         of indirect edges.
2837
2838 2010-04-28  Richard Guenther  <rguenther@suse.de>
2839
2840         PR tree-optimization/43879
2841         PR tree-optimization/43909
2842         * tree-ssa-structalias.c (struct variable_info): Add
2843         only_restrict_pointers flag.
2844         (new_var_info): Initialize it.  Increment stats.total_vars here.
2845         (create_function_info_for): Do not increment stats.total_vars here.
2846         (get_function_part_constraint): Fix build with C++.
2847         (insert_into_field_list): Remove.
2848         (push_fields_onto_fieldstack): Properly merge fields.
2849         (create_variable_info_for): Split and simplify.
2850         (create_variable_info_for_1): New piece.
2851         (intra_create_variable_infos): Properly make restrict constraints
2852         from parameters.
2853
2854 2010-04-28  Richard Guenther  <rguenther@suse.de>
2855
2856         PR c++/43880
2857         * tree-inline.c (copy_bind_expr): Also copy bind expr vars value-exprs.
2858
2859 2010-04-27  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2860             Jan Hubicka <hubicka@ucw.cz>
2861
2862         * doc/invoke.texi (-Wsuggest-attribute=const,
2863         -Wsuggest-attribute=pure): Document.
2864         * ipa-pure-const.c: Include toplev.h, intl.h and opts.h.
2865         (function_always_visible_to_compiler_p,
2866         suggest_attribute, warn_function_pure, warn_function_const):
2867         New functions.
2868         (check_call): Improve debug info.
2869         (analyze_function): Do not check availability.
2870         (add_new_function): Check availability.
2871         (propagate): Output warnings.
2872         (skip_function_for_local_pure_const): New function.
2873         (local_pure_const): Use it; output warnings.
2874         * common.opt (Wsuggest-attribute=const,
2875         Wsuggest-attribute=pure): New.
2876
2877 2010-04-27  Jakub Jelinek  <jakub@redhat.com>
2878
2879         * dwarf2out.c (def_cfa_1): After DW_CFA_def_cfa_expression
2880         force using DW_CFA_def_cfa instead of DW_CFA_def_cfa_register
2881         or DW_CFA_def_cfa_offset{,_sf}.
2882
2883 2010-04-27  Eric Botcazou  <ebotcazou@adacore.com>
2884
2885         * tree.h: Fix truncated long macros.
2886
2887 2010-04-27  Kai Tietz  <kai.tietz@onevision.com>
2888
2889         * collect2.c (TARGET_64BIT): Redefine to target's default.
2890         * tlink.c: Likewise.
2891         * config/i386/cygming.h (USER_LABEL_PREFIX): Define
2892         dependent to TARGET_64BIT and USE_MINGW64_LEADING_UNDERSCORES.
2893         * config/i386/i386.h (CRT_CALL_STATIC_FUNCTION): Use
2894         for underscoring __USER_LABEL_PREFIX__.
2895         * config/i386/mingw-w64.h (SUB_LINK_ENTRY): New macro.
2896         (SUB_LINK_ENTRY32): New.
2897         (SUB_LINK_ENTRY64): New.
2898         (LINK_SPEC): Replace entry point spec by SUB_LINK_ENTRY.
2899         * config/i386/mingw32 (SUB_LINK_ENTRY32): New.
2900         (SUB_LINK_ENTRY64): New.
2901         (SUB_LINK_ENTRY): New.
2902         (LINK_SPEC): Use SUB_LINK_ENTRY instead of hard-coded entry-point.
2903         (DWARF2_UNWIND_INFO): Error out for use of dw2 unwind when
2904         x64 target is choosen.
2905         * config.in (USE_MINGW64_LEADING_UNDERSCORES): New.
2906         * configure: Regenerated.
2907         * configure.ac (leading-mingw64-underscores): Option added.
2908
2909 2010-04-27  Jan Hubicka  <jh@suse.cz>
2910
2911         * doc/invoke.texi (-fipa-profile): Document.
2912         * opts.c (decode_options): Enable ipa-profile at -O1.
2913         * timevar.def (TV_IPA_PROFILE): Define.
2914         * common.opt (fipa-profile): Add.
2915         * cgraph.c (cgraph_clone_node): Set local flag and clear vtable method
2916         flag for clones.
2917         (cgraph_propagate_frequency): Handle only local ones.
2918         * tree-pass.h (pass_ipa_profile): Declare.
2919         * ipa-profile.c (gate_profile): Use flag_ipa_profile.
2920         (pass_ipa_profile): Use TV_IPA_PROFILE.
2921         * ipa.c (ipa_profile): New function.
2922         (gate_ipa_profile): Likewise.
2923         (pass_ipa_profile): New global variable.
2924         * passes.c (pass_ipa_profile): New.
2925
2926 2010-04-27  Nathan Froyd  <froydnj@codesourcery.com>
2927
2928         * config/arm/arm.c (arm_expand_builtin): Remove redundant declaration.
2929
2930 2010-04-27  Martin Jambor  <mjambor@suse.cz>
2931
2932         PR middle-end/43812
2933         * ipa.c (dissolve_same_comdat_group_list): New function.
2934         (function_and_variable_visibility): Call
2935         dissolve_same_comdat_group_list when comdat group contains external or
2936         newly local nodes.
2937         * cgraphunit.c (verify_cgraph_node): Verify that same_comdat_group
2938         lists are circular and that they contain only DECL_ONE_ONLY nodes.
2939
2940 2010-04-27  Eric Botcazou  <ebotcazou@adacore.com>
2941
2942         * varasm.c (decode_addr_const): Handle special case of INDIRECT_REF.
2943         (const_hash_1) <VECTOR_CST>: New case.
2944         (compare_constant) <VECTOR_CST>: Likewise.
2945         <ADDR_EXPR>: Deal with LABEL_REFs.
2946         (copy_constant) <VECTOR_CST>: New case.
2947
2948 2010-04-27  Jan Hubicka  <jh@suse.cz>
2949
2950         * cgraph.c (cgraph_propagate_frequency): New function.
2951         * cgraph.h (cgraph_propagate_frequency): Declare.
2952         * ipa-inline.c (cgraph_clone_inlined_nodes): Call
2953         cgraph_propagate_frequency.
2954
2955 2010-04-27  Jakub Jelinek  <jakub@redhat.com>
2956
2957         * unwind-dw2.c (_Unwind_DebugHook): Add used and noclone attributes.
2958
2959 2010-04-27  Bernd Schmidt  <bernds@codesourcery.com>
2960
2961         PR target/40657
2962         * config/arm/arm.c (thumb1_extra_regs_pushed): New function.
2963         (thumb1_expand_prologue, thumb1_output_function_prologue): Call it
2964         here to determine which regs to push and how much stack to reserve.
2965
2966 2010-04-27  Jie Zhang  <jie@codesourcery.com>
2967
2968         * doc/gimple.texi (gimple_statement_with_ops): Remove
2969         addresses_taken field.
2970         (gimple_statement_with_memory_ops): Likewise.
2971
2972 2010-04-27  Jan Hubicka  <jh@suse.cz>
2973
2974         * tree-inline.c (eni_inlining_weights): Remove.
2975         (estimate_num_insns): Special case more builtins.
2976
2977 2010-04-27  Shujing Zhao  <pearly.zhao@oracle.com>
2978
2979         PR c/32207
2980         * c-typeck.c (build_binary_op): Move forward check for comparison
2981         pointer with null pointer constant and adjust the diagnostic message.
2982
2983 2010-04-27  Dave Korn  <dave.korn.cygwin@gmail.com>
2984
2985         PR lto/42776
2986         * configure.ac (gcc_cv_as_section_has_align): Set if installed
2987         binutils supports extended .section directive needed by LTO, or
2988         warn if older binutils found.
2989         (LTO_BINARY_READER): New AC_SUBST'd variable.
2990         (LTO_USE_LIBELF): Likewise.
2991         * gcc/config.gcc (lto_binary_reader): New target-specific configure
2992         variable.
2993         * gcc/Makefile.in (LTO_BINARY_READER): Import AC_SUBST'd autoconf var.
2994         (LTO_USE_LIBELF): Likewise.
2995         * configure: Regenerate.
2996
2997         * collect2.c (is_elf): Rename from this ...
2998         (is_elf_or_coff): ... to this, and recognize and allow i386 COFF
2999          object files in addition to ELF-formatted ones.
3000         (scan_prog_file): Caller updated.  Also allow for LTO info marker
3001         symbol to be prefixed or not by an extra underscore.
3002
3003         * config/i386/t-cygming (winnt.o): Also depend on LTO_STREAMER_H.
3004         * config/i386/winnt.c: Also #include lto-streamer.h
3005         (i386_pe_asm_named_section): Specify 1-byte section alignment for
3006         LTO named sections.
3007         (i386_pe_asm_output_aligned_decl_common): Add comment.
3008         (i386_pe_maybe_record_exported_symbol): Allow decl arg to be NULL.
3009
3010 2010-04-27  Hans-Peter Nilsson  <hp@bitrange.com>
3011
3012         PR target/43889
3013         * config/mmix/mmix.md ("*divdi3_nonknuth", "*moddi3_nonknuth"):
3014         Add missing earlyclobber for second alternative.
3015
3016 2010-04-26  Bernd Schmidt  <bernds@codesourcery.com>
3017
3018         * df-problems.c (df_simulate_initialize_forwards): Set, don't clear,
3019         bits for artificial defs at the top of the block.
3020         * fwprop.c (single_def_use_enter_block): Don't call it.
3021
3022 2010-04-26  Jack Howarth <howarth@bromo.med.uc.edu>
3023
3024         PR 43715
3025         * gcc/configure.ac: Use "$gcc_cv_nm -g" on darwin
3026         instead of "$gcc_cv_objdump -T".
3027         Use "-undefined dynamic_lookup" on darwin.
3028         * gcc/configure: Regenerate.
3029
3030 2010-04-26  Jakub Jelinek  <jakub@redhat.com>
3031
3032         PR c/43893
3033         * c-omp.c (c_finish_omp_for): Handle also EQ_EXPR.
3034
3035 2010-04-26  Nathan Froyd  <froydnj@codesourcery.com>
3036
3037         * c-parser.c (struct c_token): Move location field up.
3038         * c-tree.h (struct c_typespec): Move expr_const_operands field up.
3039         (struct c_declspecs): Convert typespec_word, storage_class, and
3040         default_int_p into bitfields.
3041         (struct c_declarator): Move loc field up.
3042
3043 2010-04-26  Nathan Froyd  <froydnj@codesourcery.com>
3044
3045         * cfgloop.h (struct loop): Move can_be_parallel field up.
3046         * ipa-prop.h (struct ip_node_params): Move bitfields up.
3047         * tree-ssa-loop-ivopts.c (struct version_info): Move inv_id field
3048         down.
3049         (struct iv_cand): Convert pos field into a bitfield.
3050         * tree-vectorizer.h (struct _loop_vec_info): Move loop_line_number
3051         field up.
3052         (struct _stmt_vec_info): Shuffle fields for better packing.
3053
3054 2010-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3055
3056         * varasm.c (IN_NAMED_SECTION): Remove guard.
3057         * config/arm/unknown-elf.h (IN_NAMED_SECTION): Rename to...
3058         (IN_NAMED_SECTION_P): ...this.
3059         (ASM_OUTPUT_ALIGNED_BSS): Adjust for above renaming.
3060         (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.
3061
3062 2010-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3063
3064         * gimplify.c (gimplify_cond_expr): Use THEN_ and ELSE_ local variables.
3065         Use VOID_TYPE_P for all void type tests.  Adjust TYPE variable instead
3066         of shadowing it.  Fix comments.
3067
3068 2010-04-26  Jan Hubicka  <jh@suse.cz>
3069
3070         * cgraph.c (cgraph_create_node): Set node frequency to normal.
3071         (cgraph_clone_node): Copy function frequency.
3072         * cgraph.h (node_frequency): New enum
3073         (struct cgraph_node): Add.
3074         * final.c (rest_of_clean_state): Update.
3075         * lto-cgraph.c (lto_output_node): Output node frequency.
3076         (input_overwrite_node): Input node frequency.
3077         * tre-ssa-loop-ivopts (computation_cost): Update.
3078         * lto-streamer-out.c (output_function): Do not output function
3079         frequency.
3080         * predict.c (maybe_hot_frequency_p): Update and handle functions
3081         executed once.
3082         (cgraph_maybe_hot_edge_p): Likewise; use cgraph frequency instead of
3083         attribute lookup.
3084         (probably_never_executed_bb_p, optimize_function_for_size_p): Update.
3085         (compute_function_frequency): Set noreturn functions to be executed
3086         once.
3087         (choose_function_section): Update.
3088         * lto-streamer-in.c (input_function): Do not input function frequency.
3089         * function.c (allocate_struct_function): Do not initialize function
3090         frequency.
3091         * function.h (function_frequency): Remove.
3092         (struct function): Remove function frequency.
3093         * ipa-profile.c (CGRAPH_NODE_FREQUENCY): Remove.
3094         (try_update): Update.
3095         * tree-inline.c (initialize_cfun): Do not update function frequency.
3096         * passes.c (pass_init_dump_file): Update.
3097         * i386.c (ix86_compute_frame_layout): Update.
3098         (ix86_pad_returns): Update.
3099
3100 2010-04-26  Jie Zhang  <jie@codesourcery.com>
3101
3102         PR tree-optimization/43833
3103         * tree-vrp.c (range_int_cst_p): New.
3104         (range_int_cst_singleton_p): New.
3105         (extract_range_from_binary_expr): Optimize BIT_AND_EXPR case
3106         when both operands are constants.  Use range_int_cst_p in
3107         BIT_IOR_EXPR case.
3108
3109 2010-04-26  Jan Hubicka  <jh@suse.cz>
3110
3111         * cgraphunit.c (cgraph_copy_node_for_versioning): Fix profile updating.
3112
3113 2010-04-26  Richard Guenther  <rguenther@suse.de>
3114
3115         PR lto/43080
3116         * gimple.c (gimple_decl_printable_name): Deal gracefully
3117         with a NULL DECL_NAME.
3118
3119 2010-04-26  Richard Guenther  <rguenther@suse.de>
3120
3121         PR lto/42425
3122         * tree.c (free_lang_data_in_type): Do not free TYPE_CONTEXT
3123         if emitting debug information and it is either a function
3124         or a namespace decl.
3125
3126 2010-04-26  Ira Rosen  <irar@il.ibm.com>
3127
3128         * tree-vectorizer.h (struct _stmt_vec_info): Add new field to
3129         determine if the statement is vectorizable, and a macro to access it.
3130         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
3131         Skip statements that can't be vectorized. If the analysis fails,
3132         mark the statement as unvectorizable if vectorizing basic block.
3133         (vect_compute_data_refs_alignment): Likewise.
3134         (vect_verify_datarefs_alignment): Skip statements marked as
3135         unvectorizable. Add print.
3136         (vect_analyze_group_access): Skip statements that can't be
3137         vectorized. If the analysis fails, mark the statement as
3138         unvectorizable if vectorizing basic block.
3139         (vect_analyze_data_ref_accesses, vect_analyze_data_refs): Likewise.
3140         * tree-vect-stmts.c (vectorizable_store): Fix the number of
3141         generated stmts for SLP.
3142         (new_stmt_vec_info): Initialize the new field.
3143         * tree-vect-slp.c (vect_build_slp_tree): Fail to vectorize
3144         statements marked as unvectorizable.
3145
3146 2010-04-25  Joseph Myers  <joseph@codesourcery.com>
3147
3148         * c-common.c (flag_isoc1x): New.
3149         (flag_isoc99): Update comment.
3150         * c-common.h (flag_isoc1x): New.
3151         (flag_isoc99): Update comment.
3152         * c-cppbuiltin.c (builtin_define_float_constants): Also define
3153         __<type>_DECIMAL_DIG__.
3154         * c-opts.c (set_std_c1x): New.
3155         (c_common_handle_option): Handle -std=c1x and -std=gnu1x.
3156         (set_std_c89, set_std_c99): Also set flag_isoc1x to 0.
3157         * c.opt (-std=c1x, -std=gnu1x): New options.
3158         * doc/cpp.texi: Mention -std=c1x.
3159         * doc/cppopts.texi (-std=c1x, -std=gnu1x): Document.
3160         * doc/extend.texi: Mention -std=c1x and -std=gnu1x.
3161         * doc/invoke.texi (-std=c1x, -std=gnu1x): Document.
3162         * doc/standards.texi: Mention C1X.
3163         * ginclude/float.h (FLT_DECIMAL_DIG, DBL_DECIMAL_DIG,
3164         LDBL_DECIMAL_DIG, FLT_HAS_SUBNORM, DBL_HAS_SUBNORM,
3165         LDBL_HAS_SUBNORM, FLT_TRUE_MIN, DBL_TRUE_MIN, LDBL_TRUE_MIN):
3166         Define for C1X.
3167
3168 2010-04-25  Uros Bizjak  <ubizjak@gmail.com>
3169
3170         * config/i386/gmon-sol2.c (_mcleanup): Change format string
3171         placeholder from 0x%x to %#x.
3172         * config/i386/i386elf.h (ASM_OUTPUT_ASCII): Ditto.
3173         * config/i386/i386-interix.h (ASM_OUTPUT_ASCII): Ditto.
3174         * config/i386/att.h (ASM_OUTPUT_ASCII): Ditto.
3175         * config/i386/sysv4.h (ASM_OUTPUT_ASCII): Ditto.
3176         * config/i386/i386.c (ix86_target_string): Ditto.
3177         (output_pic_addr_const): Ditto.
3178         (print_operand): Ditto.
3179
3180 2010-04-25  Paolo Bonzini  <bonzini@gnu.org>
3181
3182         * combine.c (find_split_point): Add third argument.  Use it
3183         to find nested multiply-accumulate instructions.  Adjust calls.
3184         (try_combine): Adjust call to find_split_point.
3185
3186 2010-04-24  Gerald Pfeifer  <gerald@pfeifer.com>
3187
3188         * doc/contrib.texi (Contributors): Add Dodji Seketeli.
3189
3190 2010-04-24  Bernd Schmidt  <bernds@codesourcery.com>
3191
3192         PR tree-optimization/41442
3193         * fold-const.c (merge_truthop_with_opposite_arm): New function.
3194         (fold_binary_loc): Call it.
3195
3196 2010-04-23  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3197
3198         * toplev.c (general_init): Set default for fdiagnostics-show-option.
3199         * opts.c (common_handle_option): Allow disabling it.
3200         * common.opt (fdiagnostics-show-option): Add Var. Enabled by default.
3201
3202 2010-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3203
3204         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: Only use conversion
3205         between modes if both types are integral.
3206
3207 2010-04-23  Richard Guenther  <rguenther@suse.de>
3208
3209         PR tree-optimization/43572
3210         * tree-tailcall.c (find_tail_calls): Allow PARM_DECL uses.
3211
3212 2010-04-23  Richard Guenther  <rguenther@suse.de>
3213
3214         PR lto/43455
3215         * tree-inline.c (tree_can_inline_p): Also check compatibility
3216         of return types.
3217
3218 2010-04-23  Martin Jambor  <mjambor@suse.cz>
3219
3220         PR tree-optimization/43846
3221         * tree-sra.c (struct access): New flag grp_assignment_read.
3222         (build_accesses_from_assign): Set grp_assignment_read.
3223         (sort_and_splice_var_accesses): Propagate grp_assignment_read.
3224         (enum mark_read_status): New type.
3225         (analyze_access_subtree): Propagate grp_assignment_read, create
3226         accesses also if both direct_read and root->grp_assignment_read.
3227
3228 2010-04-23  Martin Jambor  <mjambor@suse.cz>
3229
3230         PR middle-end/43835
3231         * tree-sra.c (ipa_sra_preliminary_function_checks): Check that the
3232         function does not have type attributes.
3233
3234 2010-04-23  Richard Guenther  <rguenther@suse.de>
3235
3236         PR lto/42653
3237         * tree.c (free_lang_data_in_decl): Do not reset DECL_CONTEXT
3238         of FUNCTION_DECLs.
3239
3240 2010-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3241
3242         * sese.h (create_if_region_on_edge): Remove.
3243
3244         * sese.c (create_if_region_on_edge): Make static.
3245
3246         * tree-inline.c: Do not include ggc.h.
3247
3248         * expr.c: Do not include ggc.h.
3249
3250         * Makefile.in (tree-inline.o, expr.o): Remove $(GGC_H) from
3251         dependencies.
3252
3253 2010-04-22  Kaz Kojima  <kkojima@gcc.gnu.org>
3254
3255         PR target/43744
3256         * config/sh/sh.c (find_barrier): Don't emit a constant pool
3257         in the middle of insns for casesi_worker_2.
3258
3259 2010-04-22  David Edelsohn  <edelsohn@gnu.org>
3260
3261         * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS.
3262
3263 2010-04-22  Ira Rosen  <irar@il.ibm.com>
3264
3265         PR tree-optimization/43842
3266         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
3267         loop unrolling in update of exit phis. Fix comment.
3268         * tree-vect-slp.c (vect_analyze_slp): Check that there are at
3269         least two reduction statements in the loop before starting SLP
3270         analysis.
3271
3272 2010-04-22  Nick Clifton  <nickc@redhat.com>
3273
3274         * config/stormy16/stormy16-lib2.c (__ucmpsi2): Fix thinko.
3275
3276 2010-04-22  Alexander Monakov  <amonakov@ispras.ru>
3277
3278         * tree-ssa-reassoc.c (eliminate_plus_minus_pair): Handle BIT_NOT_EXPR
3279         to simplify a + ~a.
3280
3281 2010-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3282
3283         * tree-parloops.c (loop_parallel_p): New argument
3284         parloop_obstack.  Pass it down.
3285         (parallelize_loops): New variable parloop_obstack.  Initialize it,
3286         pass it down, free it.
3287
3288         * tree-loop-linear.c (linear_transform_loops): Pass down
3289         lambda_obstack.
3290
3291         * tree-data-ref.h (lambda_compute_access_matrices): New argument
3292         of type struct obstack *.
3293
3294         * tree-data-ref.c (analyze_subscript_affine_affine): New variable
3295         scratch_obstack.  Initialize it, pass down, free it.
3296
3297         * lambda.h (lambda_loop_new): Remove.
3298         (lambda_matrix_new, lambda_matrix_inverse)
3299         (lambda_trans_matrix_new, lambda_trans_matrix_inverse): New
3300         argument of type struct obstack *.
3301
3302         * lambda-trans.c (lambda_trans_matrix_new): New argument
3303         lambda_obstack.  Pass it down, use obstack allocation for ret.
3304         (lambda_trans_matrix_inverse): New argument lambda_obstack.  Pass
3305         it down.
3306
3307         * lambda-mat.c (lambda_matrix_get_column)
3308         (lambda_matrix_project_to_null): Remove.
3309         (lambda_matrix_new): New argument lambda_obstack.  Use obstack
3310         allocation for mat.
3311         (lambda_matrix_inverse_hard, lambda_matrix_inverse): New argument
3312         lambda_obstack.
3313
3314         * lambda-code.c (lambda_loop_new): New function.
3315         (lambda_lattice_new, compute_nest_using_fourier_motzkin)
3316         (lambda_compute_auxillary_space, lambda_compute_target_space)
3317         (lambda_loopnest_transform, gcc_loop_to_lambda_loop)
3318         (lambda_loopnest_to_gcc_loopnest): Pass down lambda_obstack.
3319         (build_access_matrix): New argument lambda_obstack.  Use obstack
3320         allocation for am.
3321         (lambda_compute_step_signs, lambda_compute_access_matrices): New
3322         argument lambda_obstack.  Pass it down.
3323
3324 2010-04-22  Bernd Schmidt  <bernds@codesourcery.com>
3325
3326         * optabs.h (expand_widening_mult): Declare.
3327
3328 2010-04-22  Richard Guenther  <rguenther@suse.de>
3329
3330         PR tree-optimization/43845
3331         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Properly
3332         lookup the CALL_EXPR function and arguments.
3333
3334 2010-04-22  Nick Clifton  <nickc@redhat.com>
3335
3336         * config/stormy16/stormy16.c
3337         (xstormy16_asm_output_aligned_common): Handle a NULL decl parameter.
3338         * config/stormy16/stormy16.h: Tidy up formatting.
3339         (DONT_USE_BUILTIN_SETJMP): Remove definition.
3340         * config/stormy16/stormy16.c (cbranchsi4): Delete pattern.
3341         (ineqbranchsi): Delete pattern.
3342         * config/stormy16/stormy16-lib2-ucmpsi2.c: New file.
3343         * config/stormy16/stormy16-lib2.c (__ucmpsi2): New function.
3344         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Add
3345         stormy16-lib2-ucmpsi2.c.
3346
3347 2010-04-22  Bernd Schmidt  <bernds@codesourcery.com>
3348
3349         * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and
3350         df_simulate_find_noclobber_defs as appropriate.  Keep track of an
3351         extra set merge_set_noclobber, and use it to relax the final test
3352         slightly.
3353         * df.h (df_simulate_find_noclobber_defs): Declare.
3354         * df-problems.c (df_simulate_find_defs): Don't ignore partial or
3355         conditional defs.
3356         (df_simulate_find_noclobber_defs): New function.
3357
3358 2010-04-22  Uros Bizjak  <ubizjak@gmail.com>
3359
3360         * config/i386/i386.md: Use {} around multi-line preparation statements.
3361
3362 2010-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3363
3364         * c-tree.h (push_init_level, pop_init_level, set_init_index)
3365         (process_init_element): New argument of type struct obstack *.
3366
3367         * c-typeck.c (push_init_level, pop_init_level, set_designator)
3368         (set_init_index, set_init_label, set_nonincremental_init)
3369         (set_nonincremental_init_from_string, find_init_member)
3370         (output_init_element, output_pending_init_elements)
3371         (process_init_element): New argument braced_init_obstack.  Pass it
3372         down.
3373         (push_range_stack, add_pending_init): New argument
3374         braced_init_obstack.  Use obstack allocation.
3375
3376         * c-parser.c (c_parser_initelt, c_parser_initval): New argument
3377         braced_init_obstack.  Pass it down.
3378         (c_parser_braced_init): New variables ret, braced_init_obstack.
3379         Initialize obstack, pass it down and finally free it.
3380
3381 2010-04-22  Bernd Schmidt  <bernds@codesourcery.com>
3382
3383         PR middle-end/29274
3384         * tree-pass.h (pass_optimize_widening_mul): Declare.
3385         * tree-ssa-math-opts.c (execute_optimize_widening_mul,
3386         gate_optimize_widening_mul): New static functions.
3387         (pass_optimize_widening_mul): New.
3388         * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: New case.
3389         <case MULT_EXPR>: Remove support for widening multiplies.
3390         * tree.def (WIDEN_MULT_EXPR): Tweak comment.
3391         * cfgexpand.c (expand_debug_expr) <case WIDEN_MULT_EXPR>: Use
3392         simplify_gen_unary rather than directly building extensions.
3393         * tree-cfg.c (verify_gimple_assign_binary): Add tests for
3394         WIDEN_MULT_EXPR.
3395         * expmed.c (expand_widening_mult): New function.
3396         * passes.c (init_optimization_passes): Add pass_optimize_widening_mul.
3397
3398 2010-04-21  Jan Hubicka  <jh@suse.cz>
3399
3400         * timevar.def (TV_WHOPR_WPA_FIXUP): Remove.
3401         * lto-section-in.c (lto_section_name): Remove wpa_fixup.
3402         * lto-wpa-fixup.c: Remove.
3403         * Makefile.in (lto-wpa-fixup.o): Remove.
3404         * passes.c (init_optimization_passes): Remove pass_ipa_lto_wpa_fixup.
3405         (execute_all_ipa_transforms): Set cgraph_state to CGRAPH_STATE_IPA_SSA.
3406         * lto-streamer.c (lto_get_section_name): Remove wpa_fixup section.
3407
3408 2010-04-21  Jan Hubicka  <jh@suse.cz>
3409
3410         * tree-pass.h (ipa_opt_pass_d): Rename function_read_summary;
3411         add write_optimization_summary, read_optimization_summary.
3412         (ipa_write_summaries_of_cgraph_node_set): Remove.
3413         (ipa_write_optimization_summaries): Declare.
3414         (ipa_read_optimization_summaries): Declare.
3415         * ipa-cp.c (pass_ipa_cp): Update.
3416         * ipa-reference.c (pass_ipa_reference): Update.
3417         * ipa-pure-const.c (pass_ipa_pure_const): Update.
3418         * lto-streamer-out.c (pass_ipa_lto_gimple, pass_ipa_lto_finish):
3419         Update.
3420         * ipa-inline.c (pass_ipa_inline): Update.
3421         * ipa.c (pass_ipa_whole_program): Update.
3422         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Update.
3423         * passes.c (ipa_write_summaries_1): Do not test wpa.
3424         (ipa_write_optimization_summaries_1): New.