OSDN Git Service

e9bb8c07b47ec8f990466570c7789e7cdecfd664
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
2
3         * doc/arm-neon-intrinsics.texi: Regenerated.
4
5 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
6
7         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle
8         Alternatives.
9
10 2009-11-18  Paul Brook  <paul@codesourcery.com>
11         Daniel Jacobowitz  <dan@codesourcery.com>
12
13         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
14         (arm_arch7em): New variable.
15         (all_architectures): Add armv7e-m.
16         (arm_override_options): Set arm_arch7em.
17         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
18         Include arm_arch7em.
19         (arm_arch7em): Declare.
20
21 2009-11-18  Richard Guenther  <rguenther@suse.de>
22
23         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
24         a valid field decl if checking is enabled.
25
26 2009-11-18  Martin Jambor  <mjambor@suse.cz>
27
28         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
29         (lto_ipa_fixup_call_notes): Declare.
30         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
31         (update_call_notes_after_inlining): Copy call stmt uid to the new
32         edge.
33         (ipa_write_param_call_note): New function.
34         (ipa_read_param_call_note): New function
35         (ipa_write_node_info): Write also param call notes.  Removed a bogus
36         comment, reformatted to fit 80 columns.
37         (ipa_read_node_info): Read also param call notes. Removed a bogus
38         comment.  Remove ipa_edge_args_vector growth.
39         (lto_ipa_fixup_call_notes): New function.
40         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
41         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
42         inlining regardless of flag_wpa.
43         (cgraph_decide_inlining_of_small_functions): Likewise.
44         (cgraph_decide_inlining): Likewise.
45         (inline_read_summary): Likewise.
46
47 2009-11-18  Jan Hubicka  <jh@suse.cz>
48
49         * predict.c (compute_function_frequency): Export.
50         * predict.h (compute_function_frequency): Declare.
51         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
52
53 2009-11-18  Martin Jambor  <mjambor@suse.cz>
54
55         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
56         on all nodes we write summaries for.
57
58 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
59         
60         PR middle-end/22201
61         * params.def (PARAM_INLINE_UNIT_GROWTH)
62         PARAM_IPCP_UNIT_GROWTH)
63         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
64         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
65         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
66         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
67         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
68         PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
69         description string.
70
71 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
72
73         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
74         unnecessarily.
75         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
76
77         PR c++/3187
78         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
79         fields.
80         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
81         prototypes.
82         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
83         cgraph_materialize_all_clones): Handle same_body aliases.
84         * cgraph.c (cgraph_allocate_node): New function.
85         (cgraph_create_node): Use it.
86         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
87         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
88         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
89         functions.
90         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
91         (input_node): Stream in same_body aliases.
92         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
93         for same_body aliases.
94         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
95
96 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
97
98         PR other/39888
99         * config/darwin.h: Use the extension stub libraries to access
100         current libgcc_s features.
101
102 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
103
104         PR debug/41926
105         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
106         (vect_transform_loop): Call it.
107
108 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
109
110         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
111         released SSA names.
112
113 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
114
115         PR debug/41888
116         PR debug/41886
117         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
118         are ok.
119         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
120         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
121         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
122         (sese_bad_liveouts_use): New.
123         (sese_reset_debug_liveouts_bb): New.
124         (sese_build_liveouts): Use it.
125         (rename_variables_in_stmt): Reset debug stmts rather than creating
126         new vars for them.
127         (expand_scalar_variable_stmt): Likewise.
128
129 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
130
131         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
132         (df_ref_remove): Likewise.
133
134 2009-11-17  Jan Hubicka  <jh@suse.cz>
135
136         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
137         info.
138
139 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
140
141         * toplev.c (process_options): Remove dead code.
142         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
143
144 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
145
146         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
147         nodes.
148
149 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
150
151         PR tree-optimization/41857
152         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
153         TYPE's address space instead of pointer to TYPE.
154
155 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
156
157         * reload.c (find_reloads_address): Fix typo.
158
159 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
160
161         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
162         registers in leaf functions if possible.
163
164 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
165
166         * config/m68k/m68k-devices.def: Add MCF5441x family.
167
168 2009-11-17  Jan Hubicka  <jh@suse.cz>
169
170         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
171         removed node.
172         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
173
174 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
175
176         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
177         nest ior expressions.
178         (x86_64_szext_nonmemory_operand): Ditto.
179         (call_insn_operand): Ditto.
180
181 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
182
183         * stmt.c (expand_asm_stmt): Get locus from stmt.
184
185 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
186
187         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
188         Create the decl label for the new dest block on demand.  Require
189         a fallthrough edge if no asm labels were redirected.
190
191 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
192
193         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
194         operand 1 predicate.
195         (cstoresi4): Ditto for operand 2.
196         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
197         patterns using SDWIM mode iterator.
198         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
199         using SWIM mode iterator.
200         (cmpdi_1): Rename from cmpdi_1_rex64.
201         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
202         SWI48 mode iterator.
203         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
204         mode iterator.
205         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
206         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
207         (*cmpqi_ext_3_insn): Make private.
208         (*cmpqi_ext_3_insn_rex64): Make private.
209         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
210         * config/i386/predicates.md (cmpsi_operand): Remove.
211
212 2009-11-16  Paul Brook  <paul@codesourcery.com>
213
214         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
215         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
216
217 2009-11-14  Jan Hubicka  <jh@suse.cz>
218
219         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
220         ENTRY_BLOCK_PTR.
221         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
222         zero out all callees.
223         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
224         frequency and count match.
225         * ipa-inline.c (update_noncloned_frequencies): New function.
226         (cgraph_clone_inlined_nodes): Use it.
227         * tree-inline.c (copy_bb): Fix frequency scaling; output
228         diagnostic on frequency mismatches to dump file.
229         (initialize_cfun): Do not scale frequency; fix count scaling;
230         initialize entry and exit block frequencies; copy profile info.
231         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
232         (copy_body): Use frequency_scale as argument.
233         (expand_call_inline): Compute frequency scale and output diagnostic
234         to dump file.
235         (delete_unreachable_blocks_update_callgrah): Remove checking that
236         has to be done after edge redirection.
237         (tree_function_versioning): Update initialize_cfun and copy_body call.
238
239 2009-11-14  Jan Hubicka  <jh@suse.cz>
240
241         * cgraph.c (cgraph_release_function_body): Update use of
242         ipa_transforms_to_apply.
243         (cgraph_remove_node): Remove ipa_transforms_to_apply.
244         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
245         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
246         copied body.
247         (cgraph_materialize_clone): Remove original if dead.
248         * lto-streamer-in.c (lto_read_body): Remove FIXME and
249         ipa_transforms_to_apply hack.
250         * function.h (struct function): Add ipa_transforms_to_apply.
251         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
252         * tree-inline.c (copy_bb): Update sanity check.
253         (initialize_cfun): Do not copy ipa_transforms_to_apply.
254         (expand_call_inline): remove dead clone originals.
255         (tree_function_versioning): Merge transformation queues.
256         * passes.c (add_ipa_transform_pass): Remove.
257         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
258         tracking.
259         (execute_all_ipa_transforms): Update.
260         (execute_one_pass): Update.
261
262 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
263
264         PR target/21078, 21080
265         * config/avr/avr.c (avr_return_addr_rtx): New function for
266         builtin_return_address.
267         (expand_prologue): Calculate stack usage.
268         (avr_asm_function_end_prologue): Output stack size and offset label.
269         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
270         (machine_function): Add stack_usage.
271         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
272
273 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
274
275         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
276         new 'outgoing' argument.
277         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
278         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
279         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
280         iq2000_function_value_regno_p.
281         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
282         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
283         Declare.
284
285 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
286
287         PR target/42031
288         * arm.md (adddi_sesidi_di): Place tied contraint first.
289         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
290         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
291         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
292         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
293         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
294         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
295         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
296         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
297         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
298
299 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
300
301         * config/i386/predicates.md (call_register_no_elim_operand):
302         New predicate.  Reject stack register as valid call operand
303         for 32bit targets.
304         (call_insn_operand): Use call_register_no_elim_operand.
305
306 2009-11-13  Richard Henderson  <rth@redhat.com>
307
308         * function.c (stack_protect_prologue): Don't bypass expand_expr
309         for stack_protect_guard and guard_decl.
310         (stack_protect_epilogue): Likewise.
311
312 2009-11-13  Jan Hubicka  <jh@suse.cz>
313
314         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
315         when to PUBLIC is set.
316
317 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
318
319         PR middle-end/42029
320         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
321         tmp_load if needed.
322
323 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
324
325         PR target/41900
326         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
327         *call_value_1): Use "lsm" as operand 1 constraint.
328         * config/i386/predicates.md (call_insn_operand): Depend on
329         index_register_operand to avoid %esp register.
330
331 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
332
333         Revert:
334         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
335
336         PR target/41900
337         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
338         (TARGET_CALL_ESP): New define.
339         * config/i386/i386.c (initial_ix86_tune_features): Initialize
340         X86_ARCH_CALL_ESP.
341         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
342         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
343         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
344         TARGET_CALL_ESP.
345         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
346         New patterns, use "lsm" as operand 1 constraint.
347         * config/i386/predicates.md (call_insn_operand): Depend on
348         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
349
350 2009-11-13  Jason Merrill  <jason@redhat.com>
351
352         PR debug/26965
353         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
354         Don't emit a second declaration at any scope.
355
356 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
357
358         PR rtl-optimization/41697
359         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
360         a conditional jump has a single successor.
361
362 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
363
364         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
365         allocate reg_last when in case lazy_reg_last is true.
366         (init_deps_reg_last): New.
367         (free_deps): When max_reg is 0, this context is already freed.
368         * sched-int.h (init_deps_reg_last): Export.
369         (init_deps): Update prototype.
370         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
371         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
372         * ddg.c (build_intra_loop_deps): Likewise.
373         * sel-sched-ir.c (copy_deps_context, create_deps_context,
374         reset_deps_context, deps_init_id): Likewise.
375         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
376         (free_data_for_scheduled_insn): New, break down from ...
377         (free_first_time_insn_data): ... here.
378         (has_dependence_p): Allocate reg_last now, when it is needed.
379         (extend_insn_data): When maximal LUID is big enough, allocate
380         per-insn data in smaller chunks.
381         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
382         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
383         in scheduled insn.
384
385 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
386
387         * config/i386/i386.md (call_value): Fix comment.
388         (sibcall_value): Ditto.
389
390 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
391
392         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
393         (MD_FROB_UPDATE_CONTEXT): Define.
394
395 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
396             Laurent GUERBY  <laurent@guerby.net>
397
398         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
399         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
400         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
401
402 2009-11-12  Jan Hubicka  <jh@suse.cz>
403
404         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
405         and clear DECL_COMMON on localized declarations.
406
407 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
408
409         PR rtl-opt/38582
410         * regrename.c (struct du_head): New structure; some elements moved
411         from...
412         (struct du_chain): ... this one.
413         (open_chains, closed_chains): Now of type struct du_head *.
414         (do_replace): Accept du_head argument, not du_chain.  All callers
415         changed.  Modified code to match new data structures.
416         (build_def_use): Return a list of du_head structures.  Modified code
417         to match new data structures.
418         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
419         callers changed.  Modified code to match new data structures.
420         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
421         callers changed.  Modified code to match new data structures.
422         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
423         Allocate a du_head structure as well as a du_chain when creating a
424         new chain.  Modified other code to match new data structures.
425
426 2009-11-12  Jan Hubicka  <jh@suse.cz>
427
428         * cgraph.h (varpool_node_name): Declare.
429         * cgraphunit.c (process_function_and_variable_attributes): Set
430         force_output flag on used variables.
431         * ipa.c (function_and_variable_visibility): Dump externally visible
432         and needed variables.
433         * varpool.c (varpool_node_name): Export.
434         (decide_is_variable_needed): Check COMDAT for externally visible vars;
435         ignore needed flag.
436
437 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
438
439         PR middle-end/41930
440         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
441         processing if XEXP (x, i) is NULL.
442
443 2009-11-12  Jan Hubicka  <jh@suse.cz>
444
445         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
446         imply PUBLIC || EXTERNAL.
447
448 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
449
450         PR middle-end/41440
451         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
452         single successor block, ending with jump created by RTL expander.
453
454 2009-11-11  Jan Hubicka  <jh@suse.cz>
455
456         PR middle-end/41729
457         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
458         and WEAK variables at -fwhole-program.
459
460         PR middle-end/41735
461         * ipa.c (whole_program_function_and_variable_visility): COMDAT
462         functions/variables are not needed even if they are externally visible.
463
464 2009-11-11  Jan Hubicka  <jh@suse.cz>
465
466         (patch by Richard Guenther)
467         * lto-streamer-out.c (output_function): Output head of argument list
468         earlier.
469         * lto-streamer-in.c (input_function): Re-map arguments into merged
470         declaration.
471
472 2009-11-11  Jan Hubicka  <jh@suse.cz>
473
474         * lto-cgraph.c: Include gcov-io.h
475         (output_profile_summary): New function.
476         (output_cgraph): Use it.
477         (input_profile_summary): New function.
478         (input_cgraph): Use it.
479         * coverage.c (build_ctr_info_value): Use varpool; initalize
480         DECL_ASSEMBLER_NAME.
481         (create_coverage): Likewise.
482         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
483         (tree_init_edge_profiler): Likewise.
484         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
485
486 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
487
488         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
489         * c-pragma.c (def_pragma_macro_value): Likewise.
490         (def_pragma_macro): Likewise.
491         (pushed_macro_table): Likewise.
492         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
493         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
494
495 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
496
497         * doc/plugins.texi (Registering custom attributes): section
498         renamed as (Registering custom attributes or pragmas).
499         Mentions custom attributes & pragmas, and c_register_pragma, with
500         a small example.
501         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
502         pragmas.
503         * doc/extend.texi (Function Attributes): Mentions that plugin can
504         provide their attributes.
505
506 2009-11-11  Jon Beniston  <jon@beniston.com>
507
508         * config.gcc: Add lm32 elf and uclinux targets.
509         * config/lm32: New directory.
510         * config/lm32/lm32.c: New file.
511         * config/lm32/lm32.h: New file.
512         * config/lm32/lm32.md: New file.
513         * config/lm32/lm32.opt: New file.
514         * config/lm32/lm32-protos.h: New file.
515         * config/lm32/constraints.md: New file.
516         * config/lm32/predicates.md: New file.
517         * config/lm32/sfp-machine.h: New file.
518         * config/lm32/t-fprules-softfp: New file.
519         * config/lm32/uclinux-elf.h: New file.
520         * doc/invoke.texi: Document lm32 options.
521         * doc/contrib.texi: Document lm32 porter.
522         * doc/install.texi: Document lm32 targets.
523
524 2009-11-11  Martin Jambor  <mjambor@suse.cz>
525
526         PR lto/41932
527         * ipa-prop.c (ipa_update_after_lto_read): Call
528         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
529         call ipa_initialize_node_params instead of ipa_populate_param_decls.
530
531 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
532
533         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
534         (neon_expand_vector_init): Use them.  Also handle non-constant
535         vectors with identical elements and vectors with only one
536         non-constant element.
537         (arm_print_operand): Handle 'y' modifier.
538         * config/arm/arm-protos.h (neon_make_constant): Declare.
539         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
540         patterns.  Use VX instead of VDQW for the first one.  Allow
541         a VFP alternative and V32 modes for the second one.
542         * config/arm/neon.ml (shape_elt): Add Alternatives.
543         (ops): Use Alternatives for vdup lane instructions.
544         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
545         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
546
547 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
548
549         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
550         operands.
551         (movti, mov<mode>): Call force_reg on one operand if required.
552         * config/arm/vec-common.md (mov<mode>): Likewise.
553
554 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
555
556         * config/arm/arm.c (arm_override_options): Enable scheduling for
557         Thumb-2.
558
559 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
560
561         PR target/10127
562         PR ada/20548
563         * expr.h (anti_adjust_stack_and_probe): Declare.
564         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
565         parameter and rewrite head comment.
566         (allocate_dynamic_stack_space): Adjust call to above function.
567         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
568
569         * tree.h (dwarf2out_args_size): Delete.
570         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
571         (dwarf2out_args_size_adjust): Delete prototype and move around.
572         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
573         ACCUMULATE_OUTGOING_ARGS targets.
574
575 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
576
577         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
578         DECL_SIZE of DECL_RESULT before evaluating it.
579
580 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
581
582         PR tree-optimization/41987
583         * fold-const.c (const_binop): Avoid using fold_buildN().
584
585 2009-11-10  Martin Jambor  <mjambor@suse.cz>
586
587         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
588         (execute_all_ipa_stmt_fixups): Declare.
589         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
590         * ipa-inline.c (pass_ipa_inline): Likewise.
591         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
592         * ipa-reference.c (pass_ipa_reference): Likewise.
593         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
594         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
595         (pass_ipa_lto_finish_out): Likewise.
596         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
597         * passes.c (execute_ipa_stmt_fixups): New function.
598         (execute_all_ipa_stmt_fixups): New function.
599         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
600
601 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
602
603         PR ada/20548
604         * explow.c (probe_stack_range): Fix typo.
605         * config/sparc/sparc.md (probe_stack): New expander.
606
607 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
608
609         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
610
611 2009-11-09  Jason Merrill  <jason@redhat.com>
612
613         * gdbinit.in (pgq): New function for printing gimple sequence.
614
615 2009-11-09  Paul Brook  <paul@codesourcery.com>
616             Daniel Jacobowitz  <dan@codesourcery.com>
617             Sandra Loosemore  <sandra@codesourcery.com>
618
619         * doc/extend.texi (Half-Precision): Update wording to reflect
620         that there are now multiple -mfpu options that enable fp16
621         hardware support.
622         * doc/invoke.texi: Update list of ARM -mfpu= options.
623         * config.gcc: Update ARM --with-fpu option list.
624         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
625         vfpv3xd and vfpv3xd-fp16.
626         (use_vfp_abi): New function.
627         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
628         when undesirable.
629         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
630         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
631         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
632         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
633         provides them.
634         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
635         NEON.
636         (arm_print_operand): Handle 'p' modifier.
637         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
638         TARGET_FP16.
639         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
640         (TARGET_FP16): Define.
641         * config/arm/vfp.md: Disable double-precision patterns if the FPU
642         does not provide them.
643         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
644         double-precision values on a single-precision FPU.
645         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
646         double-precision constants.
647         (movhf_vfp_neon): New pattern (was movhf_vfp).
648         (movhf_vfp): Remove NEON instructions.
649         * config/arm/constraints.md: Add new "Dy" constraint for
650         double-precision constants.  Update description of "Dv".
651         * config/arm/arm.md: Disable double-precision patterns if the FPU
652         does not provide them
653
654 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
655
656         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
657         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
658         diagnostics.
659
660 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
661
662         * collect2.c (main): Search PLUGIN_LD for plugin linker.
663
664         * configure.ac (--with-plugin-ld): New.  Default to ld.
665         * configure: Regenerated.
666         * config.in: Likewise.
667
668         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
669         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
670
671 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
672
673         * config/openbsd-stdint.h: Change to reflect what
674         c_common_nodes_and_builtins expects.
675
676 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
677
678         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
679
680 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
681
682         PR target/41985
683         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
684         function contains at least one local dynamic name.
685         (print_operand) <case '&'>: Instead output operand lossage diagnostics
686         here if that happens.
687
688 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
689             Joern Rennecke  <amylaar@spamcop.net>
690
691         * cfgrtl.c (pass_free_cfg): Add pass name.
692         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
693         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
694         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
695         * df-core.c (pass_df_initialize_no_opt): Likewise.
696         * except.c (pass_rtl_eh): Likewise.
697         * function.c (pass_init_function, pass_leaf_regs): Likewise.
698         * gcse.c (pass_rtl_pre): Change pass name.
699         * passes.c (pass_postreload): Add pass name.
700         (make_pass_instance): Don't use duplicate-tracking logic for
701         names starting with '*'.
702         (next_pass_1): Assert that pass has a name.
703         (register_one_dump_file): If there is an space in the name,
704         skip past it.
705         * predict.c (pass_strip_predict_hints): Add pass name.
706         * reg-stack.c (pass_stack_regs): Likewise.
707         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
708         * tree-cfg.c (pass_warn_function_return,
709         pass_warn_function_noreturn): Add pass name.
710         * tree-dfa.c (pass_referenced_vars): Likewise.
711         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
712         Fix whitespace before comment.
713         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
714         (pass_init_datastructures): Add pass name.
715         * tree-ssa-loop.c (pass_record_bounds): Likewise.
716         * tree-ssa.c (pass_early_warn_uninitialized,
717         pass_late_warn_uninitialized): Likewise.
718         * tree.c (pass_ipa_free_lang_data): Likewise.
719         * doc/passes.texi (pass manager): Document how to disambiguate
720         pass names.
721
722 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
723
724         * df-problems.c: Fix documentation for forward simulation of LR.
725         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
726         (df_simulate_finalize_forwards): Remove.
727         * df.h (df_simulate_finalize_forwards): Remove.
728
729 2009-11-08  Richard Guenther  <rguenther@suse.de>
730
731         * tree-ssa-structalias.c (build_succ_graph): Properly make
732         variables escape if they are stored to anything.
733
734 2009-11-08  Richard Guenther  <rguenther@suse.de>
735
736         PR rtl-optimization/41928
737         * loop-invariant.c (free_loop_data): If we didn't allocate
738         loop data do not try to free it.
739
740 2009-11-07  Jason Merrill  <jason@redhat.com>
741
742         * tree.c (reconstruct_complex_type): Preserve attributes.
743
744 2009-11-07  Richard Guenther  <rguenther@suse.de>
745
746         * tree-ssa-structalias.c (build_succ_graph): Feed stores
747         to anything only to variables that can take pointers.
748         (get_constraint_for_ssa_var): Properly exclude full
749         variables from expanding.
750         (first_vi_for_offset): Avoid overflow in arithmetic.
751         (first_or_preceding_vi_for_offset): Likewise.
752         (count_num_arguments): Fix implementation.
753         (gate_ipa_pta): Do not run when not optimizing.
754
755 2009-11-07  David Binderman <dcb314@hotmail.com>
756
757         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
758         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
759         set but not used variables.
760         (apply_args_reg_offset): Comment out as unused.
761         * calls.c (flags_from_decl_or_type): Likewise.
762         * genautomata.c (check_regexp_units_distribution): Likewise.
763
764 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
765
766         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
767         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
768         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
769         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
770         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
771         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
772         operand alternatives.
773
774 2009-11-06  Michael Matz  <matz@suse.de>
775
776         PR middle-end/41963
777         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
778         of a potential reciprocal to really be reciprocals.
779
780 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
781
782         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
783         lwpintrin.h after immintrin.h.
784         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
785         typedefs.
786
787         PR middle-end/41935
788         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
789         or non-constant index, allow index one past the last element and
790         allow exceeding array bound in arrays that might be used as flexible
791         array members.
792
793 2009-11-05  Richard Henderson  <rth@redhat.com>
794
795         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
796
797 2009-11-05  Paul Brook  <paul@codesourcery.com>
798
799         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
800         (arm_fpu_desc): New.
801         (all_fpus): Add FPU details.
802         (fp_model_for_fpu): Remove.
803         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
804         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
805         (arm_file_start): Use arm_fpu_desc.
806         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
807         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
808         arm_fpu_desc.
809         (TARGET_FPA_EMU2): Define.
810         (arm_fp_model, fputype, arm_fpu_tune): Remove.
811         (vfp_reg_type, arm_fpu_desc): New.
812         * config/arm/arm.md (attr fpu): Simplify.
813         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
814         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
815         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
816         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
817         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
818
819 2009-11-05  Michael Matz  <matz@suse.de>
820
821         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
822         on TARGET_RECIP.
823         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
824         for 1/sqrtf.
825
826 2009-11-04  Jason Merrill  <jason@redhat.com>
827
828         PR c++/36912
829         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
830         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
831         (output_constant): Avoid crash after error.
832
833 2009-11-05  Martin Jambor  <mjambor@suse.cz>
834
835         * tree-sra.c (struct access): Changed comment of next_sibling field.
836         (analyze_modified_params): Loop over accesses of a group rather than
837         over all with the ame base, pass a common bitmap to
838         walk_aliased_vdefs.
839         (unmodified_by_ref_scalar_representative): Build link lists of
840         accesses of a group.
841         (splice_param_accesses): Likewise.
842
843 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
844
845         * df-scan.c (df-uses-record): Add case zero_extract of mem.
846
847 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
848
849         PR target/10127
850         PR ada/20548
851         * config/i386/i386.md (probe_stack): New expander.
852         (logical operation peepholes): Do not split stack checking probes.
853
854 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
855             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
856
857         * doc/invoke.texi (-mlwp): Add documentation.
858         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
859         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
860         (x86_64-*-*): Ditto.
861         * config/i386/lwpintrin.h: New file, provide x86 compiler
862         intrinisics for LWP.
863         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
864         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
865         * config/i386/i386-c.c (ix86_target_macros_internal): Check
866         ISA_FLAG for LWP.
867         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
868         * config/i386/i386.opt (-mlwp): New switch for LWP support.
869         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
870         (OPTION_MASK_ISA_LWP_UNSET): New.
871         (ix86_handle_option): Handle -mlwp.
872         (isa_opts): Handle -mlwp.
873         (enum pta_flags): Add PTA_LWP.
874         (override_options): Add LWP support.
875         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
876         (IX86_BUILTIN_LLWPCB32): Ditto.
877         (IX86_BUILTIN_LLWPCB64): Ditto.
878         (IX86_BUILTIN_SLWPCB16): Ditto.
879         (IX86_BUILTIN_SLWPCB32): Ditto.
880         (IX86_BUILTIN_SLWPCB64): Ditto.
881         (IX86_BUILTIN_LWPVAL16): Ditto.
882         (IX86_BUILTIN_LWPVAL32): Ditto.
883         (IX86_BUILTIN_LWPVAL64): Ditto.
884         (IX86_BUILTIN_LWPINS16): Ditto.
885         (IX86_BUILTIN_LWPINS32): Ditto.
886         (IX86_BUILTIN_LWPINS64): Ditto.
887         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
888         (builtin_description): Ditto.
889         (ix86_init_mmx_sse_builtins): Ditto.
890         (ix86_expand_special_args_builtin): Ditto.
891         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
892         LWP support.
893         (UNSPEC_SLWP_INTRINSIC): Ditto.
894         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
895         (UNSPECV_LWPINS_INTRINSIC): Ditto.
896         (lwp_llwpcbhi1): New lwp pattern.
897         (lwp_llwpcbsi1): Ditto.
898         (lwp_llwpcbdi1): Ditto.
899         (lwp_slwpcbhi1): Ditto.
900         (lwp_slwpcbsi1): Ditto.
901         (lwp_slwpcbdi1): Ditto.
902         (lwp_lwpvalhi3): Ditto.
903         (lwp_lwpvalsi3): Ditto.
904         (lwp_lwpvaldi3): Ditto.
905         (lwp_lwpinshi3): Ditto.
906         (lwp_lwpinssi3): Ditto.
907         (lwp_lwpinsdi3): Ditto.
908
909 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
910             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
911
912         PR rtl-opt/41833
913         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
914         a vec_duplicate.
915
916 2009-11-04  Richard Guenther  <rguenther@suse.de>
917             Rafael Avila de Espindola  <espindola@google.com>
918
919         * gcc.c (process_command): Handle arguments name@offset.
920
921 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
922             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
923
924         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
925         (x86_64-*-*): Ditto.
926         * config/i386/xopintrin.h: New file, provide common x86 compiler
927         intrinisics for XOP.
928         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
929         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
930         * config/i386/i386-c.c(ix86_target_macros_internal): Check
931         ISA_FLAG for XOP.
932         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
933         * config/i386/i386.opt (-mxop): New switch for XOP support.
934         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
935         (UNSPEC_XOP_TRUEFALSE)
936         (UNSPEC_XOP_PERMUTE)
937         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
938         (PPERM_*): New constants for vpperm instruction.
939         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
940         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
941         (OPTION_MASK_ISA_XOP_UNSET): New.
942         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
943         (ix86_handle_option): Handle -mxop.
944         (isa_opts): Handle -mxop.
945         (enum pta_flags): Add PTA_XOP.
946         (override_options): Add XOP support.
947         (print_operand): Add code for XOP compare instructions.
948         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
949         (ix86_expand_int_vcond): Extend for XOP compare instruction.
950
951         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
952         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
953         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
954         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
955         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
956         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
957         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
958
959         (IX86_BUILTIN_VPCMOV256): Ditto.
960         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
961         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
962         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
963         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
964         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
965         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
966
967         (IX86_BUILTIN_VPPERM): Ditto.
968
969         (IX86_BUILTIN_VPMACSSWW): Ditto.
970         (IX86_BUILTIN_VPMACSWW): Ditto.
971         (IX86_BUILTIN_VPMACSSWD): Ditto.
972         (IX86_BUILTIN_VPMACSWD): Ditto.
973         (IX86_BUILTIN_VPMACSSDD): Ditto.
974         (IX86_BUILTIN_VPMACSDD): Ditto.
975         (IX86_BUILTIN_VPMACSSDQL): Ditto.
976         (IX86_BUILTIN_VPMACSSDQH): Ditto.
977         (IX86_BUILTIN_VPMACSDQL): Ditto.
978         (IX86_BUILTIN_VPMACSDQH): Ditto.
979         (IX86_BUILTIN_VPMADCSSWD): Ditto.
980         (IX86_BUILTIN_VPMADCSWD): Ditto.
981
982         (IX86_BUILTIN_VPHADDBW): Ditto.
983         (IX86_BUILTIN_VPHADDBD): Ditto.
984         (IX86_BUILTIN_VPHADDBQ): Ditto.
985         (IX86_BUILTIN_VPHADDWD): Ditto.
986         (IX86_BUILTIN_VPHADDWQ): Ditto.
987         (IX86_BUILTIN_VPHADDDQ): Ditto.
988         (IX86_BUILTIN_VPHADDUBW): Ditto.
989         (IX86_BUILTIN_VPHADDUBD): Ditto.
990         (IX86_BUILTIN_VPHADDUBQ): Ditto.
991         (IX86_BUILTIN_VPHADDUWD): Ditto.
992         (IX86_BUILTIN_VPHADDUWQ): Ditto.
993         (IX86_BUILTIN_VPHADDUDQ): Ditto.
994         (IX86_BUILTIN_VPHSUBBW): Ditto.
995         (IX86_BUILTIN_VPHSUBWD): Ditto.
996         (IX86_BUILTIN_VPHSUBDQ): Ditto.
997
998         (IX86_BUILTIN_VPROTB): Ditto.
999         (IX86_BUILTIN_VPROTW): Ditto.
1000         (IX86_BUILTIN_VPROTD): Ditto.
1001         (IX86_BUILTIN_VPROTQ): Ditto.
1002         (IX86_BUILTIN_VPROTB_IMM): Ditto.
1003         (IX86_BUILTIN_VPROTW_IMM): Ditto.
1004         (IX86_BUILTIN_VPROTD_IMM): Ditto.
1005         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
1006
1007         (IX86_BUILTIN_VPSHLB): Ditto.
1008         (IX86_BUILTIN_VPSHLW): Ditto.
1009         (IX86_BUILTIN_VPSHLD): Ditto.
1010         (IX86_BUILTIN_VPSHLQ): Ditto.
1011         (IX86_BUILTIN_VPSHAB): Ditto.
1012         (IX86_BUILTIN_VPSHAW): Ditto.
1013         (IX86_BUILTIN_VPSHAD): Ditto.
1014         (IX86_BUILTIN_VPSHAQ): Ditto.
1015
1016         (IX86_BUILTIN_VFRCZSS): Ditto.
1017         (IX86_BUILTIN_VFRCZSD): Ditto.
1018         (IX86_BUILTIN_VFRCZPS): Ditto.
1019         (IX86_BUILTIN_VFRCZPD): Ditto.
1020         (IX86_BUILTIN_VFRCZPS256): Ditto.
1021         (IX86_BUILTIN_VFRCZPD256): Ditto.
1022
1023         (IX86_BUILTIN_VPCOMEQUB): Ditto.
1024         (IX86_BUILTIN_VPCOMNEUB): Ditto.
1025         (IX86_BUILTIN_VPCOMLTUB): Ditto.
1026         (IX86_BUILTIN_VPCOMLEUB): Ditto.
1027         (IX86_BUILTIN_VPCOMGTUB): Ditto.
1028         (IX86_BUILTIN_VPCOMGEUB): Ditto.
1029         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
1030         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
1031
1032         (IX86_BUILTIN_VPCOMEQUW): Ditto.
1033         (IX86_BUILTIN_VPCOMNEUW): Ditto.
1034         (IX86_BUILTIN_VPCOMLTUW): Ditto.
1035         (IX86_BUILTIN_VPCOMLEUW): Ditto.
1036         (IX86_BUILTIN_VPCOMGTUW): Ditto.
1037         (IX86_BUILTIN_VPCOMGEUW): Ditto.
1038         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
1039         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
1040
1041         (IX86_BUILTIN_VPCOMEQUD): Ditto.
1042         (IX86_BUILTIN_VPCOMNEUD): Ditto.
1043         (IX86_BUILTIN_VPCOMLTUD): Ditto.
1044         (IX86_BUILTIN_VPCOMLEUD): Ditto.
1045         (IX86_BUILTIN_VPCOMGTUD): Ditto.
1046         (IX86_BUILTIN_VPCOMGEUD): Ditto.
1047         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
1048         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
1049
1050         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
1051         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
1052         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
1053         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
1054         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
1055         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
1056         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
1057         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
1058
1059         (IX86_BUILTIN_VPCOMEQB): Ditto.
1060         (IX86_BUILTIN_VPCOMNEB): Ditto.
1061         (IX86_BUILTIN_VPCOMLTB): Ditto.
1062         (IX86_BUILTIN_VPCOMLEB): Ditto.
1063         (IX86_BUILTIN_VPCOMGTB): Ditto.
1064         (IX86_BUILTIN_VPCOMGEB): Ditto.
1065         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
1066         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
1067
1068         (IX86_BUILTIN_VPCOMEQW): Ditto.
1069         (IX86_BUILTIN_VPCOMNEW): Ditto.
1070         (IX86_BUILTIN_VPCOMLTW): Ditto.
1071         (IX86_BUILTIN_VPCOMLEW): Ditto.
1072         (IX86_BUILTIN_VPCOMGTW): Ditto.
1073         (IX86_BUILTIN_VPCOMGEW): Ditto.
1074         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
1075         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
1076
1077         (IX86_BUILTIN_VPCOMEQD): Ditto.
1078         (IX86_BUILTIN_VPCOMNED): Ditto.
1079         (IX86_BUILTIN_VPCOMLTD): Ditto.
1080         (IX86_BUILTIN_VPCOMLED): Ditto.
1081         (IX86_BUILTIN_VPCOMGTD): Ditto.
1082         (IX86_BUILTIN_VPCOMGED): Ditto.
1083         (IX86_BUILTIN_VPCOMFALSED): Ditto.
1084         (IX86_BUILTIN_VPCOMTRUED): Ditto.
1085
1086         (IX86_BUILTIN_VPCOMEQQ): Ditto.
1087         (IX86_BUILTIN_VPCOMNEQ): Ditto.
1088         (IX86_BUILTIN_VPCOMLTQ): Ditto.
1089         (IX86_BUILTIN_VPCOMLEQ): Ditto.
1090         (IX86_BUILTIN_VPCOMGTQ): Ditto.
1091         (IX86_BUILTIN_VPCOMGEQ): Ditto.
1092         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
1093         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
1094
1095         (enum multi_arg_type): New enum for describing the various XOP
1096         intrinsic argument types.
1097         (bdesc_multi_arg): New table for XOP intrinsics.
1098         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
1099         (ix86_expand_multi_arg_builtin): New function for creating XOP
1100         intrinsics.
1101
1102         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
1103         (xop_pmacsww): Ditto.
1104         (xop_pmacssww): Ditto.
1105         (xop_pmacsdd): Ditto.
1106         (xop_pmacssdd): Ditto.
1107         (xop_pmacssdql): Ditto.
1108         (xop_pmacssdqh): Ditto.
1109         (xop_pmacsdql): Ditto.
1110         (xop_pmacsdql_mem): Ditto.
1111         (xop_mulv2div2di3_low): Ditto.
1112         (xop_pmacsdqh): Ditto.
1113         (xop_pmacsdqh_mem): Ditto.
1114         (xop_mulv2div2di3_high): Ditto.
1115         (xop_pmacsswd): Ditto.
1116         (xop_pmacswd): Ditto.
1117         (xop_pmadcsswd): Ditto.
1118         (xop_pmadcswd): Ditto.
1119         (xop_pcmov_<mode>): Ditto.
1120         (xop_pcmov_<mode>256): Ditto.
1121         (xop_phaddbw): Ditto.
1122         (xop_phaddbd): Ditto.
1123         (xop_phaddbq): Ditto.
1124         (xop_phaddwd): Ditto.
1125         (xop_phaddwq): Ditto.
1126         (xop_phadddq): Ditto.
1127         (xop_phaddubw): Ditto.
1128         (xop_phaddubd): Ditto.
1129         (xop_phaddubq): Ditto.
1130         (xop_phadduwd): Ditto.
1131         (xop_phadduwq): Ditto.
1132         (xop_phaddudq): Ditto.
1133         (xop_phsubbw): Ditto.
1134         (xop_phsubwd): Ditto.
1135         (xop_phsubdq): Ditto.
1136         (xop_pperm): Ditto.
1137         (rotl<mode>3): Ditto.
1138         (rotr<mode>3): Ditto.
1139         (xop_rotl<mode>3): Ditto.
1140         (xop_rotr<mode>3): Ditto.
1141         (vrotr<mode>3): Ditto.
1142         (vrotl<mode>3): Ditto.
1143         (xop_vrotl<mode>3): Ditto.
1144         (vlshr<mode>3): Ditto.
1145         (vashr<mode>3): Ditto.
1146         (vashl<mode>3
1147         (xop_ashl<mode>3): Ditto.
1148         (xop_lshl<mode>3): Ditto.
1149         (ashlv16qi3): Ditto.
1150         (lshlv16qi3): Ditto.
1151         (ashrv16qi3): Ditto.
1152         (ashrv2di3): Ditto.
1153         (xop_frcz<mode>2): Ditto.
1154         (xop_vmfrcz<mode>2): Ditto.
1155         (xop_frcz<mode>2256): Ditto.
1156         (xop_maskcmp<mode>3): Ditto.
1157         (xop_maskcmp_uns<mode>3): Ditto.
1158         (xop_maskcmp_uns2<mode>3): Ditto.
1159         (xop_pcom_tf<mode>3): Ditto.
1160
1161         * doc/invoke.texi (-mxop): Add documentation.
1162         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
1163
1164 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
1165
1166         PR driver/11810
1167         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
1168         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
1169         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
1170
1171 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
1172
1173         PR target/40835
1174         * arm.md (peephole2 patterns for move and compare): New.
1175
1176 2009-11-04  Nick Clifton  <nickc@redhat.com>
1177
1178         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
1179         Make sure that it does not allow CONST_DOUBLEs.
1180         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
1181         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
1182         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
1183         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1184         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1185         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1186         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1187         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1188         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1189         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1190         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1191         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1192         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1193         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1194         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1195
1196 2009-11-04  Richard Guenther  <rguenther@suse.de>
1197
1198         PR tree-optimization/41919
1199         * tree-vrp.c (test_for_singularity): Properly compare values.
1200
1201 2009-11-04  Revital Eres  <eres@il.ibm.com>
1202
1203         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1204         Consider peeling for alignment only for stores and remove
1205         redundant assignment.
1206
1207 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1208
1209         PR target/41302
1210         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1211         (m68k_ok_for_sibcall_p): Handle different result return locations.
1212
1213 2009-11-04  Richard Guenther  <rguenther@suse.de>
1214
1215         * c-opts.c (c_common_post_options): Move LTO option processing
1216         code ...
1217         * opts.c (decode_options): ... here.
1218
1219 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1220
1221         * c-common.c (fold_offsetof_1): Use %wd instead of
1222         HOST_WIDE_INT_PRINT_DEC.
1223
1224 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1225
1226         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1227         __pic__ or __PIC__.
1228
1229 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1230
1231         * config.gcc (vax-*-linux*): Keep the original contents of
1232         tmake_file while adding vax/t-linux.
1233
1234 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1235
1236         PR target/10127
1237         PR ada/20548
1238         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1239         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1240         (STACK_CHECK_MOVING_SP): Likewise.
1241         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1242         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1243         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1244         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1245         Document PROBE_STACK.
1246         * explow.c (anti_adjust_stack_and_probe): New function.
1247         (allocate_dynamic_stack_space): Do not directly allocate space if
1248         STACK_CHECK_MOVING_SP, instead invoke above function.
1249         (emit_stack_probe): Handle probe_stack insn.
1250         (PROBE_INTERVAL): New macro.
1251         (STACK_GROW_OPTAB): Likewise.
1252         (STACK_GROW_OFF): Likewise.
1253         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1254         loop condition in the small constant case.  Rewrite in the general
1255         case to be immune to wraparounds.  Make sure the address of probes
1256         is valid.  Try to use [base + disp] addressing mode if possible.
1257         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1258         checking is enabled and STACK_CHECK_MOVING_SP.
1259         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1260         return 1 for volatile references to the stack pointer.
1261         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1262         __builtin_alloca if stack checking is enabled.
1263         * unwind-dw2.c (uw_identify_context): Take into account whether the
1264         context is that of a signal frame or not.
1265         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1266         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1267
1268 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1269
1270         PR rtl-optimization/41917
1271         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1272         operand isn't known to be 0, return 1.
1273
1274 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1275
1276         * config/mips/mips.md: Fix typos.
1277
1278 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1279
1280         * doc/invoke.texi: Fix typo.
1281
1282 2009-11-03  Paul Brook  <paul@codesourcery.com>
1283
1284         * config/arm/neon.ml (vectype): Add T_floatSF.
1285         (string_of_vectype): Ditto.
1286         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1287         (deftypes): Use float for float32_t.
1288         * config/arm/arm_neon.h: Regenerate.
1289
1290 2009-11-03  Nick Clifton  <nickc@redhat.com>
1291             Kevin Buettner  <kevinb@redhat.com>
1292
1293         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1294         order of expected registers.
1295         (rx_load_multiple_vector): Likewise.
1296         (rx_rtsd_vector): Likewise.
1297         * config/rx/rx.c (rx_cpu_type): New variable.
1298         (rx_print_operand): Fix bug printing 64-bit constant values.
1299         (rx_emit_stack_pushm): Reverse order of pushed registers.
1300         (gen_rx_store_vector): Likewise.
1301         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1302         attribute name.
1303         (is_exception_func): Rename to is_interrupt_func and only accept
1304         "interrupt" as the attribute name.
1305         (rx_get_stack_layout): Use new function name.
1306         (rx_func_attr_inlinable): Likewise.
1307         (rx_attribute_table): Remove "exception".
1308         (rx_expand_prologue): If necessary push the accumulator register
1309         in the prologue of interrupt functions.
1310         (rx_expand_epilogue): If necessary pop the accumulator.
1311         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1312         (rx_expand_builtin_stz): Remove.
1313         (rx_expand_builtin_mvtipl): New function.
1314         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1315         (rx_expand_builtin): Likewise.
1316         (rx_enable_fpu): New variable.
1317         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1318         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1319         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1320         (enum rx_cpu_types): Define.
1321         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1322         (INCOMING_FRAME_SP_OFFSET): Define.
1323         (ARG_POINTER_CFA_OFFSET): Define.
1324         (FRAME_POINTER_CFA_OFFSET): Define.
1325         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1326         (ALLOW_RX_FPU_INSNS): Define.
1327         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1328         fast_math_flags_set_p.
1329         (UNSPEC_BUILTIN_MVTIPL): Define.
1330         (revl): Rename to bswapsi2.
1331         (bswaphi2): New pattern.
1332         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1333         (mvtaclo): Likewise.
1334         (racw): Likewise.
1335         (mvtc): Remove clobber of cc0.
1336         (mvtcp): Delete.
1337         (opecp): Delete.
1338         * config/rx/rx.opt (mieee): Remove.
1339         (fpu): Add.
1340         (nofpu): Add.
1341         (mcpu=): Add.
1342         (patch=): Add.
1343         (msave-acc-in-interrupts): Add.
1344         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1345         (MULTILIB_DIRS): Likewise.
1346         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1347         * doc/extend.texi: Remove description of "exception" function
1348         attribute.
1349         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1350         -msave-acc-in-interrupts options.
1351
1352 2009-11-03  Richard Guenther  <rguenther@suse.de>
1353
1354         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1355
1356 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1357
1358         PR c++/38699
1359         * c-common.c (fold_offsetof_1): Issue errors when the member
1360         designator of the offsetof expression is not legitimate.
1361
1362 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1363
1364         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1365         names instead of numerical constants.
1366         (sse_prologue_save): Ditto.
1367         (*sse_prologue_save_insn): Ditto.
1368
1369 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1370
1371         PR target/41900
1372         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1373         (TARGET_CALL_ESP): New define.
1374         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1375         X86_ARCH_CALL_ESP.
1376         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1377         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1378         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1379         TARGET_CALL_ESP.
1380         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1381         New patterns, use "lsm" as operand 1 constraint.
1382         * config/i386/predicates.md (call_insn_operand): Depend on
1383         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1384
1385 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1386
1387         PR tree-optimization/41857
1388         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1389         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1390         to create_mem_ref.
1391         * tree-ssa-address.c (move_hint_to_base): New function.
1392         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1393         address space associated with TYPE.
1394         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1395         most_expensive_mult_to_index.  Call move_hint_to_base.
1396         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1397         TYPE to addr_to_parts.
1398
1399 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1400
1401         PR tree-optimization/41750
1402         * tree-sra.c (analyze_modified_params): Loop over all
1403         representatives of components of a parameter.
1404
1405 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1406
1407         PR tree-optimization/41841
1408         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1409         local variables of not yet materialized clones.
1410
1411         PR debug/41893
1412         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1413         for a VOIDmode variable.
1414
1415         PR c++/41774
1416         * c-pragma.c (visstack): Change into vector of ints rather than
1417         enum symbol_visibility.
1418         (push_visibility): Add kind argument, push default_visibility together
1419         with kind.
1420         (pop_visibility): Add kind argument, return true if successful, fail
1421         if visibility stack is empty or if stack top is of different kind.
1422         (handle_pragma_visibility): Don't check length of visstack, instead
1423         call pop_visibility and issue diagnostics if it failed.  Pass 0
1424         as last argument to push_visibility and pop_visibility.
1425         * c-pragma.h (push_visibility): Add kind argument.
1426         (pop_visibility): Likewise.  Return bool instead of void.
1427
1428 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1429
1430         * tree.def (TARGET_MEM_REF): Update comment.
1431         * alias.c (get_alias_set): Retrieve the original memory reference for
1432         a TARGET_MEM_REF before proceeding.
1433
1434 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1435
1436         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1437         frv_function_value_regno_p): New functions.
1438         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1439         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1440         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1441         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1442
1443 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1444
1445         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1446         new 'outgoing' argument.
1447         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1448         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1449         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1450         LIBCALL_VALUE): Remove.
1451         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1452         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1453         (mh10300_function_value_regno_p): Declare.
1454
1455 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1456
1457         * config/arm/cortex-a9.md: New - integer pipeline description.
1458
1459 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1460
1461         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1462         aborting if the sizes of the two references don't match.
1463
1464 2009-10-31  Toon Moene  <toon@moene.org>
1465
1466         * ipa-inline.c (cgraph_decide_inlining):
1467         Include reason for not inlining called-once functions in dump file.
1468
1469 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1470
1471         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1472         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1473         (LINK_SPEC): BE_LINK_SPEC added.
1474
1475 2009-10-30  Richard Guenther  <rguenther@suse.de>
1476
1477         PR lto/41858
1478         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1479
1480 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1481
1482         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1483         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1484         label.
1485
1486 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1487
1488         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1489
1490 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1491
1492         PR target/40838
1493         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1494         first.  Move assert on stack_alignment_estimated just before
1495         setting stack_realign_needed.
1496         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1497         Don't call update_stack_boundary.
1498
1499         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1500         (verride_options): Don't check ix86_force_align_arg_pointer here.
1501         (ix86_function_ok_for_sibcall): Use it.
1502         (ix86_update_stack_boundary): Likewise.
1503
1504         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1505
1506 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1507
1508         * arm.md (QHSI): New mode iterator.
1509         (movqi): If generating for thumb, then truncate any immediate to
1510         8 bits.
1511         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1512         with...
1513         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1514         version.
1515
1516 2009-10-29  Cary Coutant  <ccoutant@google.com>
1517
1518         PR debug/41700
1519         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1520         locations in the source).
1521         (store_vcall_insn): New function.
1522         (lookup_vcall_insn): New function.
1523         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1524         (dwarf2out_copy_call_info): New function.
1525         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1526         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1527         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1528         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1529         (debug_nothing_rtx_rtx): New dummy hook.
1530         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1531         (xcoff_debug_hooks): Likewise.
1532         * sdbout.c (sdb_debug_hooks): Likewise.
1533         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1534
1535 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1536
1537         * doc/invoke.texi (mmcount-ra-address): Document new command line
1538         option.
1539         * config/mips/mips.opt (mmcount-ra-address): New option.
1540         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1541         function.
1542         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1543         member.
1544         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1545         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1546         rewritten.
1547         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1548         mips_function_profiler.
1549
1550 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1551
1552         PR middle-end/37565
1553         PR target/38018
1554         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1555         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1556         * optc-gen.awk (cl_target_option_restore): Include call to
1557         targetm.override_options_after_change.
1558         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1559         * target.h (override_options_after_change): New.
1560         * c-common.c (parse_optimize_options): Call
1561         targetm.override_options_after_change.
1562         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1563         (ia64_override_options_after_change): New.
1564         (ia64_override_options) Add call to above.
1565
1566 2009-10-29  Michael Matz  <matz@suse.de>
1567
1568         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1569         (gate_convert_to_rsqrt): Ditto.
1570         (pass_convert_to_rsqrt): Ditto.
1571         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1572         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1573         to pass list.
1574
1575         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1576
1577 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1578
1579         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1580         unsigned.
1581
1582 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1583
1584         PR tree-optimization/41775
1585         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1586         (generate_subtree_copies): Do not unshare agg.
1587         (load_assign_lhs_subreplacements): Do not unshare rhs.
1588         (sra_modify_assign): Do not unshare exprs.
1589         (propagate_subacesses_accross_link): Renamed to
1590         propagate_subaccesses_across_link.
1591
1592 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1593
1594         * arm.c (count_insns_for_constant): Rework to support counting for
1595         thumb2 immediates as well.
1596         (find_best_start): Split out from arm_gen_constant.
1597         (arm_gen_constant): Rework to support XOR with immediate.
1598
1599 2009-10-29  Chao-ying Fu  <fu@mips.com>
1600
1601         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1602         functions.
1603         (mips_expand_synci_loop):  Use the length rtx to control the
1604         synci loop from the begin rtx that points to the first byte of
1605         the cache line.
1606
1607 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1608
1609         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1610
1611 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1612
1613         * dbxout.c (dbxout_common_check): Accept non public trees.
1614         * dwarf2out.c (fortran_common): Accept non public trees.
1615
1616 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1617
1618         * common.opt (fuse-linker-plugin): New option.
1619         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1620         fuse-linker-plugin.
1621         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1622
1623 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1624
1625         PR rtl-optimization/39715
1626         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1627         (gen_cstoresi_ltu_thumb1): New splitter.
1628
1629 2009-10-28  Richard Guenther  <rguenther@suse.de>
1630
1631         PR lto/41808
1632         PR lto/41839
1633         * tree-ssa.c (useless_type_conversion_p): Do not treat
1634         conversions to pointers to incomplete types as useless.
1635         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1636         not typedef names.
1637
1638 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1639
1640         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1641         vt_expand_loc unnecessarily when location is not a register nor
1642         memory.
1643
1644         PR middle-end/41837
1645         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1646         fields don't have DECL_NAME.
1647
1648         PR debug/41801
1649         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1650         call convert_memory_address on addr.
1651
1652         PR target/41762
1653         * config/i386/i386.c (ix86_pic_register_p): Don't call
1654         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1655
1656 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1657
1658         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1659         a variable part from its REG, MEM or VALUE.
1660
1661 2009-10-28  Richard Guenther  <rguenther@suse.de>
1662
1663         * gimple.c (gimple_get_alias_set): Fix comment typo.
1664
1665 2009-10-28  Richard Guenther  <rguenther@suse.de>
1666
1667         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1668         (free_lang_data): Unconditionally compute alias sets for all
1669         standard integer types.  Bail out if gate bailed out previously.
1670         Do not reset the types_compatible_p langhook.
1671         (gate_free_lang_data): Remove.
1672         (struct pass_ipa_free_lang_data): Enable unconditionally.
1673         * gimple.c (gimple_get_alias_set): Use the same alias-set for
1674         all pointer types.
1675
1676 2009-10-28  Richard Guenther  <rguenther@suse.de>
1677
1678         PR middle-end/41855
1679         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
1680         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
1681         (call_may_clobber_ref_p_1): Likewise.
1682         * tree-ssa-structalias.c (find_func_aliases): Likewise.
1683         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
1684
1685 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1686
1687         PR rtl-optimization/41812
1688
1689         Revert:
1690         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1691
1692         * df-problems.c (df_md_scratch): New.
1693         (df_md_alloc, df_md_free): Allocate/free it.
1694         (df_md_local_compute): Only include live registers in init.
1695         (df_md_transfer_function): Prune the in-set computed by
1696         the confluence function, and the gen-set too.
1697
1698 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1699
1700         PR rtl-optimization/39715
1701         * combine.c (simplify_comparison): Use extensions to
1702         widen comparisons.  Try an ANDing first.
1703
1704 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1705
1706         PR rtl-optimization/40741
1707         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
1708         a small constant is cheap.
1709         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
1710         force_reg on the LHS.
1711         (xorsi3): Likewise, and split the XOR if the constant is complex
1712         and not in Thumb mode.
1713
1714 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1715
1716         * expmed.c (emit_store_flag): Check costs before
1717         transforming to the opposite representation.
1718
1719 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1720
1721         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
1722         cstore result to DImode.
1723
1724 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1725
1726         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
1727         inside the unspec vector.
1728
1729 2009-10-27  Richard Henderson  <rth@redhat.com>
1730
1731         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
1732
1733 2009-10-27  Richard Henderson  <rth@redhat.com>
1734
1735         PR c++/41819
1736         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
1737         eh_region_may_contain_throw; update users.
1738         (eh_region_may_contain_throw): New function.
1739         (lower_catch): Check flag_exceptions before creating exception region.
1740         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
1741         (lower_cleanup): Tidy existing flag_exceptions check to match.
1742
1743 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
1744
1745         PR/41799
1746         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
1747         * config/i386/mingw.opt: Add fset-stack-executable.
1748         * config/i386/i386.c (ix86_trampoline_init): Make call to
1749         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
1750         defined and its value is not zero.
1751         * doc/invoke.texi
1752
1753 2009-10-27  Richard Guenther  <rguenther@suse.de>
1754
1755         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
1756         handle calls to externally visible functions like in regular mode.
1757         (create_variable_info_for): Do not create function infos here.
1758         (have_alias_info): Remove write-only variable.
1759         (solve_constraints): New function split out from common code
1760         in compute_points_to_sets and ipa_pta_execute.
1761         (compute_points_to_sets): Adjust.
1762         (ipa_pta_execute): Likewise.  Handle clones and externally visible
1763         functions like in non-IPA mode.
1764
1765 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
1766
1767         PR c/41842
1768         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
1769         error_mark_node.
1770
1771 2009-10-27  Richard Guenther  <rguenther@suse.de>
1772
1773         * tree-complex.c (expand_complex_div_wide): Check for
1774         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1775
1776 2009-10-27  Revital Eres  <eres@il.ibm.com>
1777
1778         PR tree-optimization/40648
1779         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1780         Change decision of when to peel for alignment.
1781
1782 2009-10-27  Richard Guenther  <rguenther@suse.de>
1783
1784         PR lto/41821
1785         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1786
1787 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1788
1789         PR bootstrap/41451
1790         * fold-const.c (fold_binary_loc): Do not call
1791         protected_set_expr_location.
1792
1793 2009-10-27  Wei Guozhi  <carrot@google.com>
1794
1795         PR target/41705
1796         * target.h (have_conditional_execution): Add a new target hook
1797         function.
1798         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1799         * targhooks.h (default_have_conditional_execution): Likewise.
1800         * targhooks.c (default_have_conditional_execution): Likewise.
1801         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1802         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1803         (arm_have_conditional_execution): New function.
1804         * ifcvt.c (noce_process_if_block, find_if_header,
1805         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1806         macro HAVE_conditional_execution to a target hook call.
1807         * recog.c (peephole2_optimize): Likewise.
1808         * sched-rgn.c (add_branch_dependences): Likewise.
1809         * final.c (asm_insn_count, final_scan_insn): Likewise.
1810         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1811
1812 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1813             Michael Meissner  <meissner@linux.vnet.ibm.com>
1814             Ulrich Weigand  <uweigand@de.ibm.com>
1815
1816         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1817         * config/spu/spu_cache.h: New file.
1818
1819         * config/spu/cachemgr.c: New file.
1820         * config/spu/cache.S: New file.
1821
1822         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1823         (ADDR_SPACE_EA): Define.
1824         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1825         * config/spu/spu.c (EAmode): New macro.
1826         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1827         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1828         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1829         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1830         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1831         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1832         (TARGET_ASM_SELECT_SECTION): Likewise.
1833         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1834         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1835         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1836         (ea_symbol_ref): New function.
1837         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1838         (spu_addr_space_legitimate_address_p): New function.
1839         (spu_addr_space_legitimize_address): Likewise.
1840         (cache_fetch): New global.
1841         (cache_fetch_dirty): Likewise.
1842         (ea_alias_set): Likewise.
1843         (ea_load_store): New function.
1844         (ea_load_store_inline): Likewise.
1845         (expand_ea_mem): Likewise.
1846         (spu_expand_mov): Handle __ea qualified memory references.
1847         (spu_addr_space_pointer_mode): New function.
1848         (spu_addr_space_address_mode): Likewise.
1849         (spu_addr_space_subset_p): Likewise.
1850         (spu_addr_space_convert): Likewise.
1851         (spu_section_type_flags): Handle "._ea" section.
1852         (spu_select_section): New function.
1853         (spu_unique_section): Likewise.
1854         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1855         and __EA64__ predefined macros.
1856         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1857         -matomic-updates switches.
1858
1859         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1860         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1861         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1862         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1863         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1864         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1865         $(T)cache128k.o): Likewise.
1866         ($(T)libgcc_%.a): Likewise.
1867
1868         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1869         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1870         (-maddress-space-conversion): Likewise.
1871         (-mcache-size=): Likewise.
1872         (-matomic-updates): Likewise.
1873         * doc/invoke.texi (-mea32/-mea64): Document.
1874         (-maddress-space-conversion): Likewise.
1875         (-mcache-size=): Likewise.
1876         (-matomic-updates): Likewise.
1877
1878 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1879             Michael Meissner  <meissner@linux.vnet.ibm.com>
1880             Ulrich Weigand  <uweigand@de.ibm.com>
1881
1882         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1883
1884         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1885         defined, add the named address space keywords.
1886         (c_addr_space_name): New function.
1887         (complete_array_type): Preserve named address space.
1888         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1889         instead of targetm.valid_pointer_mode.
1890
1891         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1892         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1893         (ADDR_SPACE_KEYWORD): New macro.
1894         (c_addr_space_name): Add prototype.
1895
1896         * c-tree.h (struct c_declspecs): Add address_space member.
1897         (declspecs_add_addrspace): Add prototype.
1898
1899         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1900
1901         * c-parser.c (c_parse_init): Add assertion.
1902         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1903         (c_lex_one_token): Handle address space keywords.
1904         (c_token_starts_typename): Likewise.
1905         (c_token_starts_declspecs): Likewise.
1906         (c_parser_declspecs): Likewise.
1907         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1908         literal within function qualified with named address space.
1909
1910         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1911         address space qualifiers.
1912         (shadow_tag_warned): Warn about useless address space qualifiers.
1913         (quals_from_declspecs): Handle address space qualifiers.
1914         (grokdeclarator): Likewise.
1915         (build_null_declspecs): Likewise.
1916         (declspecs_add_addrspace): New function.
1917
1918         * c-typeck.c (addr_space_superset): New function.
1919         (qualify_type): Handle named address spaces.
1920         (composite_type): Likewise.
1921         (common_pointer_type): Likewise.
1922         (comp_target_types): Likewise.
1923         (build_conditional_expr): Likewise.
1924         (handle_warn_cast_qual): Likewise.
1925         (build_c_cast): Likewise.
1926         (convert_for_assignment): Likewise.
1927         (build_binary_op): Likewise.
1928         (pointer_diff): Handle named address spaces.  Use intermediate
1929         integer type of sufficient size if required.
1930
1931 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1932             Michael Meissner  <meissner@linux.vnet.ibm.com>
1933             Ulrich Weigand  <uweigand@de.ibm.com>
1934
1935         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
1936         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1937         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1938
1939         * target.h (struct target_def): Add pointer_mode, address_mode,
1940         and valid_pointer_mode to addr_space substructure.
1941         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1942         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1943         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1944         (TARGET_ADDR_SPACE_HOOKS): Add them.
1945         * targhooks.c (target_default_pointer_address_modes_p): New function.
1946         * target.h (target_default_pointer_address_modes_p): Add prototype.
1947         * targhooks.c (default_addr_space_pointer_mode): New function.
1948         (default_addr_space_address_mode): Likewise.
1949         (default_addr_space_valid_pointer_mode): Likewise.
1950         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
1951         (default_addr_space_address_mode): Likewise.
1952         (default_addr_space_valid_pointer_mode): Likewise.
1953         * output.h (default_valid_pointer_mode): Move to ...
1954         * targhooks.h (default_valid_pointer_mode): ... here.
1955         * varasm.c (default_valid_pointer_mode): Move to ...
1956         * targhooks.c (default_valid_pointer_mode): ... here.
1957
1958         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
1959         instead of targetm.valid_pointer_mode.
1960
1961         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
1962         * tree.c (integer_pow2p): Likewise.
1963         (tree_log2): Likewise.
1964         (tree_floor_log2): Likewise.
1965         (signed_or_unsigned_type_for): Support pointer type of different size.
1966         (int_or_pointer_precision): New function.
1967         * tree.h (int_or_pointer_precision): Add prototype.
1968         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
1969         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
1970         incoming pointer type instead of POINTER_SIZE.
1971
1972         * tree.c (build_pointer_type): Use appropriate pointer mode
1973         instead of ptr_mode.
1974         (build_reference_type): Likewise.
1975         * expr.c (store_expr): Likewise.
1976         (expand_expr_addr_expr): Likewise.
1977         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
1978         * cfgexpand.c (expand_debug_expr): Likewise.
1979
1980         * auto-inc-dec.c: Include "target.h".
1981         (try_merge): Use appropriate address mode instead of Pmode.
1982         (find_inc): Likewise.
1983         * combine.c (find_split_point): Likewise.
1984         * cselib.c (cselib_record_sets): Likewise.
1985         * dse.c (replace_inc_dec): Likewise.
1986         (canon_address): Likewise.
1987         * var-tracking.c (replace_expr_with_values): Likewise.
1988         (count_uses): Likewise.
1989         (add_uses): Likewise.
1990         (add_stores): Likewise.
1991         * emit-rtl.c: Include "target.h".
1992         (adjust_address_1): Use appropriate address mode instead of Pmode.
1993         (offset_address): Likewise.
1994         * explow.c (break_out_memory_refs): Likewise.
1995         (memory_address_addr_space): Likewise.
1996         (promote_mode): Likewise.
1997         * expr.c (move_by_pieces): Likewise.
1998         (emit_block_move_via_loop): Likewise.
1999         (store_by_pieces): Likewise.
2000         (store_by_pieces_1): Likewise.
2001         (expand_assignment): Likewise.
2002         (store_constructor): Likewise.
2003         (expand_expr_addr_expr): Likewise.
2004         (expand_expr_real_1): Likewise.
2005         * cfgexpand.c (expand_debug_expr): Likewise.
2006         * ifcvt.c (noce_try_cmove_arith): Likewise.
2007         * regcprop.c (kill_autoinc_value): Likewise.
2008         * regmove.c (try_auto_increment): Likewise.
2009         * reload.c (find_reloads): Likewise.
2010         (find_reloads_address): Likewise.
2011         (find_reloads_address_1): Likewise.
2012         * sched-deps.c: Include "target.h".
2013         (sched_analyze_1): Use appropriate address mode instead of Pmode.
2014         (sched_analyze_2): Likewise.
2015         * sel-sched-dump.c: Include "target.h".
2016         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
2017         * stor-layout.c (layout_type): Likewise.
2018         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2019         (multiplier_allowed_in_address_p): Likewise.
2020         (get_address_cost): Likewise.
2021         * varasm.c (make_decl_rtl): Likewise.
2022
2023         * expr.c (expand_assignment): Always convert offsets to appropriate
2024         address mode.
2025         (store_expr): Likewise.
2026         (store_constructor): Likewise.
2027         (expand_expr_real_1): Likewise.
2028
2029         * reload.h (form_sum): Add MODE argument.
2030         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
2031         Update recursive calls.
2032         (subst_indexed_address): Update calls to form_sum.
2033
2034         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
2035         * tree-ssa-address.c: Include "target.h".
2036         (templates): Replace by ...
2037         (mem_addr_template_list): ... this new vector.
2038         (TEMPL_IDX): Handle address space numbers.
2039         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
2040         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
2041         instead of global cache.  Update call to gen_addr_rtx.
2042         (valid_mem_ref_p): Update call to addr_for_mem_ref.
2043         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
2044
2045         * rtl.h (convert_memory_address_addr_space): Add prototype.
2046         (convert_memory_address): Define as macro.
2047         * explow.c (convert_memory_address): Rename to ...
2048         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2049         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
2050         Update recursive calls.
2051         (memory_address_addr_space): Call convert_memory_address_addr_space.
2052         * expmed.c (make_tree): Likewise.
2053         * expr.c (expand_assignment): Likewise.
2054         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
2055         (expand_expr_addr_expr): Likewise.  Also, update call.
2056
2057         * alias.c (find_base_value): Guard pointer size optimizations.
2058         (find_base_term): Likewise.
2059         * rtlanal.c (nonzero_bits1): Likewise.
2060         (num_sign_bit_copies1): Likewise.
2061         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
2062
2063         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
2064         (emit-rtl.o): Likewise.
2065         (auto-inc-dec.o): Likewise.
2066         (sched-deps.o): Likewise.
2067
2068 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2069             Michael Meissner  <meissner@linux.vnet.ibm.com>
2070             Ulrich Weigand  <uweigand@de.ibm.com>
2071
2072         * doc/extend.texi (Named Address Spaces): New section.
2073         * coretypes.h (addr_space_t): New type.
2074         (ADDR_SPACE_GENERIC): New define.
2075         (ADDR_SPACE_GENERIC_P): New macro.
2076
2077         * doc/tm.texi (Named Address Spaces): New section.
2078         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
2079         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
2080         (TARGET_ADDR_SPACE_SUBSET_P): Document.
2081         (TARGET_ADDR_SPACE_CONVERT): Document.
2082         * target.h (struct gcc_target): Add addr_space substructure.
2083         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
2084         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2085         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2086         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2087         (TARGET_ADDR_SPACE_HOOKS): Likewise.
2088         (TARGET_INITIALIZER): Initialize addr_space hooks.
2089         * targhooks.c (default_addr_space_legitimate_address_p): New function.
2090         (default_addr_space_legitimize_address): Likewise.
2091         (default_addr_space_subset_p): Likewise.
2092         (default_addr_space_convert): Likewise.
2093         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
2094         (default_addr_space_legitimize_address): Likewise.
2095         (default_addr_space_subset_p): Likewise.
2096         (default_addr_space_convert): Likewise.
2097
2098         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
2099         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
2100         (MEM_ADDR_SPACE): New macro.
2101         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
2102         address space memory attribute.
2103         (mem_attrs_htab_hash): Handle address space memory attribute.
2104         (mem_attrs_htab_eq): Likewise.
2105         (set_mem_attributes_minus_bitpos): Likewise.
2106         (set_mem_alias_set): Likewise.
2107         (set_mem_align): Likewise.
2108         (set_mem_expr): Likewise.
2109         (set_mem_offset): Likewise.
2110         (set_mem_size): Likewise.
2111         (adjust_address_1): Likewise.
2112         (offset_address): Likewise.
2113         (widen_memoy_address): Likewise.
2114         (get_spill_slot_decl): Likewise.
2115         (set_mem_attrs_for_spill): Likewise.
2116         (set_mem_addr_space): New function.
2117         * emit-rtl.h (set_mem_addr_space): Add prototype.
2118         * print-rtl.c (print_rtx): Print address space memory attribute.
2119         * expr.c (expand_assignment): Set address space memory attribute
2120         of generated MEM RTXes as appropriate.
2121         (expand_expr_real_1): Likewise.
2122         * cfgexpand.c (expand_debug_expr): Likewise.
2123         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2124
2125         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
2126         size of "spare" bitfield.
2127         (TYPE_ADDR_SPACE): New macro.
2128         (ENCODE_QUAL_ADDR_SPACE): Likewise.
2129         (DECODE_QUAL_ADDR_SPACE): Likewise.
2130         (CLEAR_QUAL_ADDR_SPACE): Likewise.
2131         (KEEP_QUAL_ADDR_SPACE): Likewise.
2132         (TYPE_QUALS): Encode type address space.
2133         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
2134         * tree.c (set_type_quals): Set type address space.
2135         (build_array_type): Inherit array address space from element type.
2136         * print-tree.c (print_node_brief): Print type address space.
2137         (print_node): Likewise.
2138         * tree-pretty-print.c (dump_generic_node): Likewise.
2139
2140         * explow.c (memory_address): Rename to ...
2141         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2142         Use address-space aware variants of memory address routines.
2143         * recog.c (memory_address_p): Rename to ...
2144         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2145         Use address-space aware variants of memory address routines.
2146         (offsettable_address_p): Rename to ...
2147         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
2148         Use address-space aware variants of memory address routines.
2149         * reload.c (strict_memory_address_p): Rename to ...
2150         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2151         Use address-space aware variants of memory address routines.
2152         (maybe_memory_address_p): Rename to ...
2153         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2154         Use address-space aware variants of memory address routines.
2155         * expr.h (memory_address_addr_space): Add prototype.
2156         (memory_address): Define as macro.
2157         * recog.h (memory_address_addr_space_p): Add prototype.
2158         (memory_address_p): Define as macro.
2159         (offsettable_address_addr_space_p): Add prototype.
2160         (offsettable_address_p): Define as macro.
2161         (strict_memory_address_addr_space_p): Add prototype.
2162         (strict_memory_address_p): Define as macro.
2163
2164         * combine.c (find_split_point): Use address-space aware variants
2165         of memory address routines.
2166         * emit-rtl.c (operand_subword): Likewise.
2167         (change_address_1): Likewise.
2168         (adjust_address_1): Likewise.
2169         (offset_address): Likewise.
2170         * expr.c (emit_move_insn): Likewise.
2171         (expand_assignment): Likewise.
2172         (expand_expr_real_1): Likewise.
2173         * recog.c (verify_changes): Likewise.
2174         (general_operand): Likewise.
2175         (offsettable_memref_p): Likewise.
2176         (offsettable_nonstrict_memref_p): Likewise.
2177         (constrain_operands): Likewise.
2178         * reload.c (get_secondary_mem): Likewise.
2179         (find_reloads_toplev): Likewise.
2180         (find_reloads_address): Likewise.
2181         (find_reloads_subreg_address): Likewise.
2182         * reload1.c (reload): Likewise.
2183         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2184         * rtl.h (address_cost): Add ADDRSPACE argument.
2185         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2186         aware variant of memory address routines.
2187         * loop-invariant.c (create_new_invariant): Update address_cost call.
2188         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2189         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2190         Use address-space aware variant of memory address routines.
2191         (propagate_rtx_1): Update call to should_replace_address.
2192         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2193         argument.
2194         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2195         ADDRSPACE argument.  Use per-address-space instead of global cache.
2196         Use address-space aware variant of memory address routines.
2197         (get_address_cost): Likewise.
2198         (get_computation_cost_at): Update calls.
2199         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2200         Use address-space aware variant of memory address routines.
2201         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2202         (most_expensive_mult_to_index): Update call to
2203         multiplier_allowed_in_address_p.
2204
2205         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2206         attribute to indicate named address spaces.
2207
2208         * varasm.c (get_variable_section): DECLs in named address spaces
2209         cannot be "common".
2210
2211         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2212         for addresses in a non-generic address space.
2213
2214         * expr.c (emit_block_move_hints): Do not use libcalls for
2215         memory in non-generic address spaces.
2216         (clear_storage_hints): Likewise.
2217         (expand_assignment): Likewise.
2218
2219         * fold-const.c (operand_equal_p): Expressions refering to different
2220         address spaces are not equivalent.
2221
2222         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2223         spaces are not equivalent.
2224         (rtx_equal_p): Likewise.
2225         * cse.c (exp_equiv_p): Likewise.
2226         * jump.c (rtx_renumbered_equal_p): Likewise.
2227         * reload.c (operands_match_p): Likewise.
2228
2229         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2230         address spaces may alias.
2231         (true_dependence): Likewise.
2232         (canon_true_dependence): Likewise.
2233         (write_dependence_p): Likewise.
2234
2235         * dse.c (canon_address): Handle named address spaces.
2236         * ifcvt.c (noce_try_cmove_arith): Likewise.
2237
2238         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2239         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2240         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2241         to handle conversions between different address spaces.
2242         * fold-const.c (fold_convert_loc): Likewise.
2243         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2244         * tree-pretty-print.c (dump_generic_node): Likewise.
2245         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2246         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2247         * tree-inline.c (estimate_operator_cost): Likewise.
2248         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2249         to different address spaces are not useless.
2250
2251 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2252
2253         PR bootstrap/41345
2254         * cfgcleanup.c (trivially_empty_bb_p): New function.
2255         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2256
2257         PR debug/41828
2258         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2259         add_name_and_src_coords_attributes, gen_namespace_die,
2260         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2261
2262 2009-10-26  Nick Clifton  <nickc@redhat.com>
2263
2264         * config.gcc: Add support for RX target.
2265         * config/rx: New directory.
2266         * config/rx/constraints.md: New file.
2267         * config/rx/predicates.md: New file.
2268         * config/rx/rx.c: New file.
2269         * config/rx/rx.h: New file.
2270         * config/rx/rx.md: New file.
2271         * config/rx/rx.opt: New file.
2272         * config/rx/rx-protos.h: New file.
2273         * config/rx/t-rx: New file.
2274         * doc/extend.texi: Document RX function attributes.
2275         * doc/invoke.texi: Document RX specific command line options.
2276         * doc/contrib.texi: Document RX contribution.
2277         * doc/md.texi: Document RX constraints.
2278         * doc/install.texi: Document RX support.
2279
2280 2009-10-26  Michael Matz  <matz@suse.de>
2281
2282         PR tree-optimization/41783
2283         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2284         case for simple diamonds.
2285         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2286         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2287         argument, use alias oracle to skip some vdefs.
2288         (phi_translate_1): Change call to above, don't allocate new
2289         value ids if they can stay the same.
2290         (compute_avail): Allow vuse walking when looking up references.
2291
2292 2009-10-26  Richard Guenther  <rguenther@suse.de>
2293
2294         PR tree-optimization/41826
2295         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2296         access to re-allocated vector fields.
2297
2298 2009-10-26  Richard Guenther  <rguenther@suse.de>
2299
2300         * graphite-sese-to-poly.c (check_poly_representation): Fix
2301         compile without checking.
2302
2303 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2304
2305         PR fortran/41714
2306         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2307         * gimplify.c (tree_should_carry_location_p,
2308         tree_annotate_one_with_location,tree_annotate_all_with_location):
2309         Remove obsolete functions.
2310
2311 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2312
2313         PR target/41813
2314         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2315
2316 2009-10-25  Richard Guenther  <rguenther@suse.de>
2317
2318         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2319         Stream DECL_RESTRICTED_P.
2320         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2321
2322 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2323
2324         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2325         a note when expanding to nothing.
2326
2327 2009-10-25  Richard Guenther  <rguenther@suse.de>
2328
2329         PR middle-end/41814
2330         * tree.c (find_decls_types_r): Deal with Java overloading
2331         BINFO_VIRTUALS for its own purpose.
2332
2333 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2334
2335         * config/mips/predicates.md (hilo_operand): New predicate.
2336         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2337         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2338         splitter part from here ...:
2339         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2340         op0 and op4 to match the DINS case.
2341         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2342
2343 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2344
2345         PR middle-end/19154
2346         * avr.md (QIDI): Add new mode iterator.
2347         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2348         patterns for all QI thru DI modes combinations.
2349         (sbrx_and_branch<mode>): Create new and based bit test and jump
2350         patterns for QI thru SI modes.
2351         avr.c (avr_out_sbxx_branch): Use only bit number.
2352
2353 2009-10-24  Jan Hubicka  <jh@suse.cz>
2354
2355         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2356         to memory.
2357         (analyze_function): When analyzing noreturn nothrow call, do not
2358         compute written stats; free bitmaps of vars early if possible.
2359         (generate_summary): Only update bitmaps if computed.
2360         (propagate): Only dump bitmaps if computed.
2361         (ipa_reference_read_summary): Fix pasto.
2362
2363 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2364
2365         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2366         (aliasing_component_refs_p): ...this.  Return true if there is no
2367         common base and the base access types have the same alias set.
2368         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2369         (indirect_refs_may_alias_p): Likewise.
2370
2371 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2372
2373         PR c/40033
2374         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2375         a C_MAYBE_CONST_EXPR.
2376
2377 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2378
2379         PR target/41787
2380         * config/rs6000/rs6000.c (struct machine_function): Add
2381         vsx_or_altivec_used_p to record if vector types are used.
2382         (rs6000_expand_to_rtl_hook): Rename from
2383         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2384         any vector operations, so if there are, we can set VRSAVE to
2385         non-zero when only floating point vector registers are used.
2386         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2387         (rs6000_check_vector_mode): Inner function to check if vector
2388         types are used in the code.
2389         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2390         vector instructions are used.
2391
2392         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2393         Indicate that VSX registers which overlap floating point
2394         registers, can't be used across a call, since the ABI only states
2395         the scalar part of the register will be saved and restored.
2396
2397 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2398
2399         PR c/41673
2400         * alias.c (get_alias_set): Call langhook before returning 0 for
2401         types with structural equality.
2402         * c-common.c (c_common_get_alias_set): Use alias set of element
2403         type for arrays with structural comparison.
2404
2405 2009-10-23  Richard Guenther  <rguenther@suse.de>
2406
2407         PR middle-end/41805
2408         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2409         gimple_call_nothrow_p.
2410
2411 2009-10-23  Richard Guenther  <rguenther@suse.de>
2412
2413         PR tree-optimization/41778
2414         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2415         redundancy along a path in the CFG we want to optimize for speed
2416         is going to be removed.
2417         (execute_pre): Do partial-PRE only if the function is to be
2418         optimized for speed.
2419         (gate_pre): Do not turn off all of PRE when not optimizing a
2420         function for speed.
2421
2422 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2423
2424         * builtins.c (fold_builtin_cabs): Use validate_arg().
2425         (fold_builtin_cexp): Fix if-logic.
2426         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2427
2428 2009-10-22  Jeff Law  <law@redhat.com>
2429
2430         * ira-lives.c (process_single_reg_class_operands): Update the
2431         hard reg costs for all the hard registers desired by the
2432         single reg class operand.
2433
2434 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2435
2436         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2437         for rtxes that aren't handled specially.
2438
2439 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2440
2441         * rtl.h (shallow_copy_rtvec): Declare.
2442         * rtl.c (shallow_copy_rtvec): New function.
2443         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2444         rtx field if the subrtx has changed.
2445
2446 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2447
2448         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2449         (m32c_function_value): Make static, add new 'outgoing' argument.
2450         (m32c_libcall_value): Make static, add new 'fun' argument.
2451         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2452         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2453         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2454         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2455         (m32c_function_value, m32c_libcall_value): Delete declaration.
2456
2457 2009-10-22  Diego Novillo  <dnovillo@google.com>
2458
2459         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2460
2461 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2462
2463         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2464         space.
2465
2466 2009-10-22  Richard Guenther  <rguenther@suse.de>
2467
2468         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2469         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2470         (lto_symtab_merge): Do not merge cgraph nodes here.
2471         (lto_symtab_resolve_can_prevail_p): Simplify.
2472         (lto_symtab_resolve_symbols): Store cgraph node.
2473         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2474         functions from the symtab.
2475         (lto_symtab_merge_cgraph_nodes_1): New function.
2476         (lto_symtab_merge_cgraph_nodes): Likewise.
2477
2478 2009-10-22  Richard Guenther  <rguenther@suse.de>
2479
2480         PR lto/41791
2481         * lto-streamer-out.c (lto_output_location): Stream the
2482         system header flag.
2483         * lto-streamer-in.c (lto_input_location): Likewise.
2484
2485 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2486
2487         * cfgloopmanip.c (duplicate_subloops): Export.
2488         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2489         (transform_to_exit_first_loop): Duplicate bbs starting from
2490         header up to loop->latch instead of exit->src.
2491         Initialize control variable to the correct number of iterations.
2492         (gather_scalar_reductions): Do not register double reductions.
2493         (parallelize_loops): Dump which loop is tested.
2494         Indicate whether the parallelized loop is inner or not.
2495         Remove the innermost-loop requirement.
2496         * cfgloop.h (duplicate_subloops): Export.
2497         * tree-cfg.c (add_phi_args_after_redirect): New function.
2498         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2499         Call duplicate_subloops.
2500         Update number of iterations at the exit condition.
2501         Don't redirect nexits always to the loop exit.
2502         Redirect copied edges from latch to the loop exit.
2503
2504 2009-10-22  Jan Hubicka  <jh@suse.cz>
2505
2506         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2507         flag_ltrans check.
2508         * ipa-inline.c (cgraph_mark_inline_edge,
2509         cgraph_decide_inlining_of_small_function,
2510         cgraph_decide_inlining, inline_read_summary): Disable indirect
2511         inlining for WPA for time being.
2512
2513         PR tree-optimize/40556
2514         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2515
2516 2009-10-22  Richard Guenther  <rguenther@suse.de>
2517
2518         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2519         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2520
2521 2009-10-22  Jan Hubicka  <jh@suse.cz>
2522
2523         PR lto/41730
2524         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2525         global vars.
2526         (check_call): Handle only indirect calls.
2527         (propagate_bits): Update comment.
2528         (write_node_summary_p): Turn bogus check to assert.
2529         (ipa_reference_write_summary): Stream calls_read_all properly.
2530         (ipa_reference_read_summary): Stream in calls_read_all properly.
2531         (read_write_all_from_decl): New function.
2532         (propagate): Handle OVERWRITABLE nodes and external calls here.
2533         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2534         calls only.
2535         (analyze_function): Do not check visibility here.
2536         (add_new_function): We summary OVERWRITABLE too.
2537         (generate_summary): Stream OVERWRITABLE nodes too.
2538         (propagate): Handle external calls and OVERWRITABLE nodes here.
2539         (local_pure_const): Check visibility here.
2540
2541 2009-10-22  Jan Hubicka  <jh@suse.cz>
2542
2543         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2544         (pass_ipa_cp): Register them.
2545         (ipcp_init_stage): Analyze all functions for whopr/lto.
2546         (ipcp_propagate_stage): Skip external calls.
2547         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2548         * ipa-reference.c (write_node_summary_p): Fix thinko about
2549         availability.
2550         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2551         when in ltrans, skip executing of ipa passes since everything
2552         should've been done.
2553         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2554         (inline_generate_summary): Likewise.
2555         (inline_read_summary): New function.
2556         (inline_write_summary): New function.
2557         (pass_ipa_inline): Register new hooks.
2558         * ipa-prop.c: Inlcude lto-streamer.h
2559         (ipa_edge_args_vector): Update declaration.
2560         (ipa_count_arguments, ipa_compute_jump_functions,
2561         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2562         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2563         ipa_read_node_info): New static functions.
2564         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2565         (duplicate_array): Use xmalloc.
2566         (duplicate_ggc_array): New.
2567         (ipa_edge_duplication_hook): Use it.
2568         (ipa_update_after_lto_read): New function.
2569         * ipa-prop.h (ipa_prop_write_jump_functions,
2570         ipa_prop_read_jump_functions): Declare.
2571         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2572         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2573         (ipa_edge_args_vector): Move into GGC.
2574         (ipa_check_create_edge_args): Update.
2575         (ipa_update_after_lto_read): New.
2576         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2577         summaries.
2578         (ipa_read_summaries): When in ltrans, so not read summaries.
2579         * lto-streamer.c (lto_get_section_name): Add
2580         LTO_section_jump_functions.
2581         * lto-streamer.h (LTO_section_jump_functions): New section.
2582         (produce_asm): Declare.
2583         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2584         * lto-streamer-out.c (produce_asm): Export.
2585         * lto-streamer-in.c: Include tree-pass.h
2586         (input_function): Free dominance info when done.
2587         (lto_read_body): Push ipa_inline in ltrans stage.
2588         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2589         * Makefile.in (GTFILES): Add ipa-prop.h
2590
2591 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2592
2593         * doc/install.texi: Document --enable-browser-plugin.
2594
2595 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2596
2597         * doc/invoke.texi (fira-loop-pressure): Update default value.
2598         * opts.c (decode_options): Remove default value setting for
2599         flag_ira_loop_pressure.
2600         * config/ia64/ia64.c (ia64_override_options): Set
2601         flag_ira_loop_pressure up for -O3.
2602         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2603
2604 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2605
2606         PR tree-optimization/41497
2607         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2608         chrec_dont_know if the evolution function returned by follow_ssa_edge
2609         is constant in the analyzed loop and is not compatible with the
2610         initial value before the loop.
2611         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2612
2613 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2614
2615         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2616
2617 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2618
2619         PR other/25507
2620         * doc/invoke.texi: Document -print-multi-os-directory.
2621
2622 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2623
2624         PR c++/41313
2625         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2626         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2627         when darwin_emit_unwind_label is used.
2628
2629 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2630
2631         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2632         order of checks.
2633
2634 2009-10-20  Richard Henderson  <rth@redhat.com>
2635
2636         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2637         before emit_post_landing_pad.
2638
2639 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2640
2641         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2642         Use when calling rtx_costs.
2643         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2644         global optimize_size.  Pass speed to mips_binary_cost.
2645
2646 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2647
2648         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2649         of TREE_CONSTANT.
2650
2651 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2652
2653         * rtl.h (simplify_replace_fn_rtx): Declare.
2654         (wrap_constant, unwrap_constant): Delete.
2655         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2656         (expand_debug_expr): Don't call wrap_constant.
2657         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2658         (auto_adjust_pair): Fold into...
2659         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2660         Just return a new value.
2661         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2662         otherwise use simplify_replace_rtx.
2663         * cselib.c (wrap_constant): Reinstate old definition.
2664         (cselib_expand_value_rtx_1): Don't wrap constants.
2665         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2666         simplify_replace_rtx.
2667         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2668         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2669         Use simplify_replace_rtx.
2670         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2671         adapted from...
2672         (simplify_replace_rtx): ...here.  Turn into a wrapper for
2673         simplify_replace_fn_rtx.
2674         (simplify_unary_operation): Don't unwrap CONSTs.
2675         * var-tracking.c (check_wrap_constant): Delete.
2676         (vt_expand_loc_callback): Don't call it.
2677         (vt_expand_loc): Likewise.
2678
2679 2009-10-20  Pascal Obry  <obry@adacore.com>
2680             Eric Botcazou  <ebotcazou@adacore.com>
2681
2682         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
2683
2684 2009-10-20  Michael Matz  <matz@suse.de>
2685
2686         * loop-invariant.c (create_new_invariant): Use different magic number.
2687
2688 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
2689
2690         PR target/39247
2691         * arm.c (arm_override_options): Forcibly disable hot/cold block
2692         partitioning.
2693
2694 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2695
2696         PR debug/41739
2697         * haifa-sched.c (try_ready): Skip debug deps updating speculation
2698         status.
2699
2700 2009-10-20  Richard Guenther  <rguenther@suse.de>
2701
2702         * ggc-page.c: Include cfgloop.h.
2703         (struct max_alignment): Drop long double, add void *.
2704         (extra_order_size_table): Add low non-power-of-two multiples
2705         of MAX_ALIGNMENT.  Drop small type-based entries, add
2706         tree_type, cgraph_node and loop.
2707         * alloc-pool.c (struct allocation_object_def): Drop long double
2708         aligning element.
2709
2710 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2711
2712         PR debug/41340
2713         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
2714         referenced just in DEBUG_INSNs.
2715
2716 2009-10-20  Richard Guenther  <rguenther@suse.de>
2717
2718         PR lto/41761
2719         * gimple.c (gimple_register_type): Make sure we register
2720         the types main variant first.
2721
2722 2009-10-20  Richard Guenther  <rguenther@suse.de>
2723
2724         * gimple.c (gimple_types_compatible_p): Simplify.  Move
2725         cheap checks before hashtable queries.  Add checks for
2726         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
2727
2728 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
2729
2730         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
2731         without size or with size that can't be represented as a host integer.
2732
2733 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2734
2735         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
2736         the removal of a debug stmt as a significant change.
2737
2738 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
2739
2740         * config/s390/s390.md: Added agen condition to operand
2741         forwarding bypasses.  Added bypass for early address generation
2742         use of int results.  Updated comments.
2743
2744 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
2745
2746         * config/i386/i386.c: Remove signal.h #include.
2747
2748 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
2749
2750         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
2751         * doc/rtl.texi: Document ss_abs.
2752
2753 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2754
2755         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
2756         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
2757         instead of C_LEX_RAW_STRINGS.
2758         (lex_string): Handle CPP_UTF8STRING.
2759         * c-parser.c (c_parser_postfix_expression): Likewise.
2760         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
2761         (C_LEX_STRING_NO_JOIN): ... this.
2762
2763 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
2764
2765         * config/cris/cris.c (cris_function_value, cris_libcall_value,
2766         cris_function_value_regno_p): New functions.
2767         (cris_promote_function_mode): Update comment.
2768         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2769         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2770         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
2771         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2772
2773 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2774
2775         * unwind-dw2.c (execute_stack_op): Fix operand order for
2776         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2777
2778 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2779
2780         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2781         (lower_stmt) <GIMPLE_BIND>: Add comment.
2782         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2783         and return.
2784         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2785         Otherwise lower it and set cannot_fallthru to true.
2786         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2787         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2788         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2789         to true for a noreturn call.  Do not remove statements.
2790         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2791         Set cannot_fallthru to false on function exit.
2792         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2793         <GIMPLE_ASSIGN>: Remove.
2794
2795 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2796
2797         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2798
2799 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2800
2801         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2802         next/prev_active_insn to skip DEBUG_INSNs as well.
2803
2804 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2805
2806         * config/arm/arm.c (output_move_neon): Use DImode in call to
2807         adjust_address.
2808
2809 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2810
2811         PR target/40134
2812         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2813
2814 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2815
2816         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2817
2818 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2819
2820         PR middle-end/41738
2821         * optabs.c (expand_binop): Make mode of shift count expression mode
2822         of shift count not target.
2823         Remove indent nit.
2824
2825 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2826
2827         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2828         case.  Force using values to replace references within the statement.
2829         (convert_local_reference_stmt): Likewise.
2830
2831 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2832
2833         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2834         remove a subsequent GOTO or RETURN statement.
2835
2836 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2837
2838         * config/avr.md (*movqi): Add zero as equally preferable constraint
2839         as general register.
2840         (*movhi): Ditto.
2841
2842 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2843
2844         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2845
2846 2009-10-17  Richard Guenther  <rguenther@suse.de>
2847
2848         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2849
2850 2009-10-17  Richard Guenther  <rguenther@suse.de>
2851
2852         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2853         operands in COMPONENT_REFs.
2854
2855 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2856
2857         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2858         if not defined. Change type of second argument to const_rtx.
2859         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2860         macro not defined.
2861         * targhooks.h (default_libcall_value): Update prototype.
2862         * target.h (struct gcc_target): Change type of second argument of
2863         libcall_value to const_rtx.
2864         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2865         to const_rtx.
2866         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2867         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2868
2869 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2870
2871         PR debug/40521
2872         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2873         * cgraphunit.c (cgraph_optimize): Call it.
2874         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2875         (dwarf2out_assembly_start): ... here.  New hook.
2876         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2877         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2878         hook.
2879         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2880         * sdbout.c (sdb_debug_hooks): Likewise.
2881         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2882         (vmsdbgout_assembly_start): New hook.
2883
2884 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2885
2886         * rtl.h (RTL_LOCATION): Fix typo.
2887
2888 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2889
2890         * print-rtl.c (print_rtx): Print locators in asm_operands
2891         and asm_input.
2892
2893 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2894
2895         PR debug/41535
2896         * sched-deps.c (depl_on_debug_p): New.
2897         (attach_dep_link): Reject debug deps before nondebug deps.
2898         (add_to_deps_list): Insert debug deps after nondebug deps.
2899         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2900         deps.
2901         (sd_add_dep): Do not reject debug deps.
2902         (add_insn_mem_dependence): Don't count debug deps.
2903         (remove_from_deps): Likewise.
2904         (sched_analyze_2): Set up mem deps on debug insns.
2905         (sched_analyze_insn): Record reg uses for deps on debug insns.
2906         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2907         try_ready nondebug insn after debug insn.
2908         * ddg.c (create_ddg_dep_from_intra_loop_link,
2909         create_ddg_dep_no_link): Don't reject debug deps.
2910
2911 2009-10-16  Richard Guenther  <rguenther@suse.de>
2912
2913         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
2914         (maybe_merge_incomplete_and_complete_type): Likewise.
2915         (lto_symtab_merge): Do not call them.  Do not warn for
2916         complete vs. incomplete compatible types.
2917         (lto_symtab_merge_decls_2): Simplify.
2918         * gimple.c (gimple_force_type_merge): Remove.
2919         (gimple_types_compatible_p): Make it static.
2920         * gimple.h (gimple_force_type_merge): Remove.
2921         (gimple_types_compatible_p): Likewise.
2922
2923 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
2924
2925         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
2926         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
2927
2928 2009-10-16  Richard Guenther  <rguenther@suse.de>
2929
2930         PR tree-optimization/41728
2931         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
2932         if fold_stmt did anything.
2933
2934 2009-10-16  Richard Guenther  <rguenther@suse.de>
2935
2936         PR lto/41715
2937         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
2938         (maybe_fixup_handled_component): New function.
2939         (input_gimple_stmt): Fixup mismatched decl replacements.
2940
2941 2009-10-16  Richard Guenther  <rguenther@suse.de>
2942
2943         PR lto/41713
2944         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
2945         the same as VAR_DECL.
2946
2947 2009-10-16  Richard Guenther  <rguenther@suse.de>
2948
2949         * gimple.c (iterative_hash_gimple_type): For integer types
2950         also hash their minimum and maximum values and the string flag.
2951         For array types hash their domain and the string flag.
2952
2953 2009-10-16  Richard Guenther  <rguenther@suse.de>
2954
2955         * gimple.c (gimple_types_compatible_p): Restrict completing
2956         types to record or unions.  Simplify completion.
2957         Do not merge records or unions with different
2958         TYPE_STRUCTURAL_EQUALITY_P tag.
2959         (iterative_hash_gimple_type): Restrict non-recursing into
2960         pointer targets for records and unions.
2961
2962 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2963
2964         PR debug/41717
2965         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
2966         * dwarf2out.c (mem_loc_descriptor): Don't handle
2967         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
2968         punt if it is not lowpart subreg or if inner mode isn't
2969         MODE_INT.
2970
2971 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2972
2973         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
2974         investigating previous or next insns.
2975
2976 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
2977
2978         * tree-sra.c (build_ref_for_offset_1): Update comment.
2979
2980 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
2981
2982         * config/s390/s390.md (atype): Added missing values.
2983
2984 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2985
2986         PR target/41702
2987         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
2988         (casesi64p): Update pattern to reflect above.
2989
2990 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
2991
2992         PR rtl-optimization/41697
2993         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
2994
2995 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
2996
2997         PR target/23983
2998         * config/rs6000/predicates.md: Update copyright year.
2999         * config/rs6000/altivec.md: Ditto.
3000
3001         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
3002         (MD_INCLUDES): Add a2.md.
3003
3004         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
3005         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
3006         (builtin_classify): New static vector to classify various builtins
3007         to get the tree attributes correct.
3008         (def_builtin): Set the attributes of builtins based on what the
3009         builtin does (i.e. memory operation, floating point, saturation
3010         need special attributes, others are pure functions).
3011
3012         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
3013         the builtins.
3014         (enum rs6000_builtins): Include rs6000-builtin.def to define the
3015         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
3016         RS6000_BUILTIN_COUNT.
3017         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
3018         MAX_RS6000_BUILTINS.
3019
3020         * config/rs6000/rs6000-builtin.def: New file that combines the
3021         builtin enumeration name and attributes.
3022
3023 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
3024
3025         * config/i386/linux.h (ASM_SPEC): Add --32.
3026
3027 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3028
3029         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
3030         and DW_TAG_template_alias.
3031         (dwarf_attr_name): Handle DW_AT_main_subprogram,
3032         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
3033         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
3034         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
3035         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
3036         and DW_AT_GNU_odr_signature.
3037         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
3038         DW_FORM_flag_present and DW_FORM_ref_sig8.
3039         (output_signature): Only print name on the first byte.
3040         (output_die): Likewise for dw_val_class_data8.
3041
3042 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
3043
3044         * doc/invoke.texi: Clarify that most optimizations are not enabled
3045         without -O.
3046
3047 2009-10-15  Richard Guenther  <rguenther@suse.de>
3048
3049         PR lto/41668
3050         * gimple.c (compare_type_names_p): Handle anonymous names
3051         differently based on new mode argument.
3052         (gimple_types_compatible_p): For structs also compare the tags.
3053         (iterative_hash_type_name): Rename to ...
3054         (iterative_hash_name): ... this.  Hash all names.
3055         (iterative_hash_gimple_type): Fix hashing the struct tag of
3056         pointer targets.  Hash field decl names.
3057
3058 2009-10-15  Richard Guenther  <rguenther@suse.de>
3059
3060         PR lto/41669
3061         * gimple.c (gimple_get_alias_set): Avoid recursing on
3062         invalid type topology.
3063
3064 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3065
3066         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
3067
3068 2009-10-15  Richard Guenther  <rguenther@suse.de>
3069
3070         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
3071
3072 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3073
3074         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
3075         add --with-tune{,-32,-64} configured default for -mtune if explicit
3076         -mcpu is used.
3077
3078 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
3079
3080         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
3081
3082 2009-10-14  DJ Delorie  <dj@redhat.com>
3083
3084         * config/h8300/h8300.c (F): New.
3085         (Fpa): New.
3086         (h8300_emit_stack_adjustment): Call them.
3087         (push): Likewise.
3088         (h8300_push_pop): Likewise.
3089         (h8300_expand_prologue): Likewise.
3090         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
3091         (MUST_USE_SJLJ_EXCEPTIONS): Define.
3092         (INCOMING_RETURN_ADDR_RTX): Define.
3093         (INCOMING_FRAME_SP_OFFSET): Define.
3094         (DWARF_CIE_DATA_ALIGNMENT): Define.
3095
3096 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3097
3098         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
3099         fields in builtin structs.
3100         (finalize_record_size): Likewise.
3101
3102 2009-10-14  Richard Guenther  <rguenther@suse.de>
3103
3104         * gimple.c (gtc_ob): New global.
3105         (struct type_pair_d): Replace pointers with type UIDs.
3106         (type_pair_hash): Adjust.
3107         (type_pair_eq): Likewise.
3108         (lookup_type_pair): Likewise.  Allocate from an obstack.
3109         (gimple_force_type_merge): Adjust.
3110         (gimple_types_compatible_p): Likewise.
3111         (free_gimple_type_tables): Free the obstack.
3112
3113 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3114
3115         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
3116         stmts setting DEBUG_EXPR_DECLs.
3117
3118         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
3119         Don't crash if mode1 is VOIDmode.
3120
3121 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3122
3123         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
3124         * params.h (IRA_LOOP_RESERVED_REGS): New.
3125         * tree-pass.h (pass_subregs_of_mode_init,
3126         pass_subregs_of_mode_finish): Remove.
3127         * passes.c (pass_subregs_of_mode_init,
3128         pass_subregs_of_mode_finish): Remove.
3129         (pass_reginfo_init): Move before loop optimizations.
3130         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
3131         * common.opt (fira-loop-pressure): New.
3132         * toplev.h (flag_ira_loop_pressure): New.
3133         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
3134         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
3135         Make external and void type functions.
3136         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
3137         pass_subregs_of_mode_finish): Remove.
3138         * ira-costs.c (init_costs): Call init_subregs_of_mode.
3139         * regmove.c: Include ira.h.
3140         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
3141         register pressure calculation in loops.
3142         * loop-invariant.c: Include REGS_H and ira.h.
3143         (struct loop_data): New members max_reg_pressure, regs_ref, and
3144         regs_live.
3145         (struct invariant): New member orig_regno.
3146         (curr_loop): New variable.
3147         (find_exits): Initialize regs_ref and regs_live.
3148         (create_new_invariant): Initialize orig_regno.
3149         (get_cover_class_and_nregs): New.
3150         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
3151         array.  Add code for flag_ira_loop_pressure.
3152         (gain_for_invariant): Make new_regs an array.  Add code for
3153         flag_ira_loop_pressure.
3154         (best_gain_for_invariant): Ditto.
3155         (set_move_mark): New parameter gain.  Use it for debugging output.
3156         (find_invariants_to_move): Make regs_needed and new_regs an array.
3157         Add code for flag_ira_loop_pressure.
3158         (move_invariant_reg): Set up orig_regno.
3159         (move_invariants): Set up reg classes for pseudos for
3160         flag_ira_loop_pressure.
3161         (free_loop_data): Clear regs_ref and regs_live.
3162         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
3163         get_regno_cover_class, change_pressure, mark_regno_live,
3164         mark_regno_death, mark_reg_store, mark_reg_clobber,
3165         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
3166         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
3167         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
3168         register pressure calculation in loops if new regs were added.
3169         Call finish_subregs_of_mode.
3170         * opts.c (decode_options): Set up flag_ira_loop_pressure.
3171         * Makefile.in (loop-invariant.o): Add ira.h.
3172         (regmove.o): Ditto.
3173         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
3174         Describe.
3175         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
3176
3177 2009-10-14  Richard Guenther  <rguenther@suse.de>
3178
3179         * lto-symtab.c (lto_symtab_compatible): Fold in ...
3180         (lto_symtab_merge): ... here.  Rewrite both to take the
3181         prevailing and a to-be-merged entry and to queue diagnostics properly.
3182         (lto_symtab_resolve_replaceable_p): New predicate for
3183         symbol resolution.
3184         (lto_symtab_resolve_can_prevail_p): Likewise.
3185         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3186         handles merging commons by choosing the largest decl.  Fold
3187         in code that gives ODR errors.
3188         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3189         diagnostics here.
3190         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3191         case of no prevailing decl here.  Diagnose mismatches
3192         in object types here.  Drop all but the prevailing decls.
3193         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3194         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3195         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3196
3197 2009-10-14  Richard Guenther  <rguenther@suse.de>
3198
3199         PR lto/41521
3200         * lto-streamer-in.c (input_bb): Replace debug stmts with
3201         nops instead of dropping them.
3202
3203 2009-10-14  Nick Clifton  <nickc@redhat.com>
3204
3205         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3206         in situations where it is being used as a minus symbol.
3207         * gcc/doc/tm.texi: Likewise.
3208         * gcc/doc/md.texi: Likewise.
3209
3210 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3211
3212         PR preprocessor/41543
3213         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3214         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3215         * tree.c: Include intl.h.
3216         (expand_location): Handle BUILTINS_LOCATION.
3217         * Makefile.in (tree.o): Depend on intl.h.
3218
3219         PR debug/41695
3220         * dwarf2out.c (dwarf2out_var_location): Always clear
3221         last_postcall_label when changing last_label.
3222
3223 2009-10-14  Pascal Obry  <obry@adacore.com>
3224
3225         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3226         (process_command): Handle -E as done with -c and -S.  Do not add
3227         the target executable suffix to the output file when -E is used.
3228         (main): Adjust error message accordingly.
3229
3230 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3231
3232         PR debug/41343
3233         PR debug/41447
3234         PR debug/41264
3235         PR debug/41338
3236         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3237         decl with rtl.
3238         (tree_code_size): Likewise.
3239
3240 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3241
3242         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3243         * real.h (HAVE_mpc_arc): Define.
3244
3245 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3246
3247         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3248         (struct builtin_description): Add fndecl field.
3249         (bdesc): Remove const qualifier.  Update initializer.
3250         (sh_media_init_builtins): Remove const qualifier for d.  Record
3251         the result of add_builtin_function to the fndecl field.
3252         (sh_builtin_decl): New.
3253         (sh_media_builtin_decl): New.
3254
3255 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3256
3257         PR target/38948
3258         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3259         requests between special registers.
3260
3261 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3262
3263         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3264
3265 2009-10-13  Richard Henderson  <rth@redhat.com>
3266
3267         PR tree-optimization/41377
3268         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3269         (cleanup_empty_eh_merge_phis): New change_region parameter;
3270         pass it on to redirect_eh_edge_1.  Update callers.
3271         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3272         at the destination block.
3273
3274 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3275
3276         * passes.c (register_pass): Replaced gcc_unreachable by
3277         fatal_error on failure. Mentions plugins in comments & messages.
3278
3279 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3280
3281         PR target/41693
3282         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3283         * sched-vis.c (print_value): Use it.
3284         * cselib.c (cselib_hash_rtx): Likewise.
3285         * print-rtl.c (print_rtx): Likewise.
3286         * cfgexpand.c (expand_debug_rtx): Likewise.
3287         * var-tracking.c (vt_expand_loc_callback): Likewise.
3288
3289 2009-10-13  Richard Guenther  <rguenther@suse.de>
3290
3291         PR lto/41565
3292         * opts.c (handle_option): Split out code to handle setting
3293         the options flag var ...
3294         (set_option): ... here.
3295         * opts.h (set_option): Declare.
3296         * lto-opts.c (register_user_option_p): Include -fexceptions
3297         and all position independent code variants.
3298         (handle_common_option): Remove.
3299         (lto_reissue_options): Use set_option.
3300
3301 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3302
3303         PR tree-optimization/41661
3304         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3305         that are tcc_comparisons or do not change the type in any
3306         un-usleless way.
3307         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3308         folding tcc_comparison operations.
3309
3310 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3311
3312         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3313         properly.
3314
3315 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3316
3317         PR debug/41343
3318         PR debug/41447
3319         PR debug/41264
3320         PR debug/41338
3321         * tree.def (DEBUG_EXPR_DECL): New.
3322         * rtl.def (DEBUG_EXPR): New.
3323         * gengtype.c (adjust_field_rtx_def): Handle it.
3324         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3325         (insert_debug_temp_for_var_def): ... this.  Drop support for
3326         moving.  Take iterator for def stmt; insert debug stmt before it.
3327         Scan early for use count and kind in debug stmts.
3328         (propagate_defs_into_debug_stmts): Rename to...
3329         (insert_debug_temps_for_defs): ... this.  Likewise.
3330         * tree.h (DEBUG_TEMP_UID): New.
3331         * tree.c (next_debug_decl_uid): New.
3332         (make_node_stat): Count debug decls separately.
3333         (copy_node_stat): Likewise.
3334         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3335         * var-tracking.c (dv_is_decl_p): Recognize it.
3336         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3337         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3338         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3339         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3340         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3341         (cselib_hash_rtx): Likewise.
3342         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3343         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3344         debug bind stmts.
3345         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3346         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3347         * rtl.c (copy_rtx): Likewise.
3348         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3349         * print-rtl.c (print_rtx): Likewise.
3350         * sched-vis.c (print_value): Likewise.
3351         (print_insn): Handle DEBUG_EXPR_DECL.
3352         * tree-dump.c (dequeue_and_dump): Likewise.
3353         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3354         * gimple-iterator (gsi_replace): Check for same lhs.
3355         (gsi_remove): Insert debug temps.
3356         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3357         (move_computations_stmt): Drop explicit propagation into debug stmts.
3358         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3359         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3360         * tree-ssa-sink.c (statement_sink_location): Likewise.
3361         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3362         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3363         * tree-flow.h: Likewise.
3364         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3365         debug temps without values.
3366         (eliminate_unnecessary_stmts): Don't discard just-inserted
3367         debug stmts.
3368
3369 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3370
3371         PR target/26515
3372         * config/cris/cris.md (andu): Check that operand 1 is one of the
3373         general registers.  Fix typo in head comment.
3374
3375 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3376
3377         * config/i386/i386.md (vswapmov): New.
3378         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3379         (ix86_function_ms_hook_prologue): New.
3380         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3381         * configure.ac: Test for swap suffix support in as.
3382         * configure: Rebuild.
3383
3384 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3385
3386         PR target/41680
3387         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3388         paradoxical subregs to prevent partial register stalls if the inner
3389         mode is integer mode.
3390
3391 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3392
3393         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3394
3395 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3396
3397         PR c++/41570
3398         * gcc/dwarf2out.c (template_parameter_pack_die,
3399         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3400
3401 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3402
3403         PR debug/41616
3404         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3405         on updates too.
3406         (maybe_register_def): Likewise.  Take stmt iterator.
3407         (rewrite_update_stmt): Take stmt iterator and pass it on.
3408         (rewrite_update_enter_block): Pass stmt iterator.
3409
3410 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3411
3412         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3413         (spu_builtin_decl): New function.
3414
3415 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3416
3417         * config/i386/i386.md (SWIM): New mode iterator.
3418         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3419         using SWIM mode iterator.
3420         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3421         patterns using SWI48 mode iterator.
3422         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3423         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3424         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3425         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3426         patterns using SWI248 mode iterator.
3427         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3428         gen_x86_movdicc_0_m1_rex64 for renamed function
3429
3430 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3431             Eric Botcazou  <ebotcazou@adacore.com>
3432
3433         PR target/33743
3434         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3435         * config/sparc/sol2-unwind.h: New file.
3436
3437 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3438             Eric Botcazou  <ebotcazou@adacore.com>
3439
3440         PR target/33743
3441         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3442         * config/i386/sol2-unwind.h: New file.
3443
3444 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3445
3446         PR target/41665
3447         * config/i386/i386.md (addsi_1_zext): Get the proper second
3448         operand for lea.
3449
3450 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3451
3452         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3453         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3454         replacement value.
3455
3456 2009-10-11  Richard Guenther  <rguenther@suse.de>
3457
3458         * gimple.c (iterative_hash_type_name): Do not handle special
3459         anonymous names.
3460
3461 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3462
3463         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3464         (*setcc_si_1_and): Ditto.
3465         (*setcc_si_1_movzbl): Ditto.
3466         (*setcc_<mode>_2): Ditto.
3467         (*setcc_qi): Rename from *setcc_1.
3468         (*setcc_qi_slp): Rename from *setcc_2.
3469
3470         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3471         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3472
3473         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3474         "if" condition, there is already assert with reload_completed present.
3475
3476 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3477
3478         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3479
3480 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3481
3482         * doc/install.texi (Final install): Refer to
3483         http://gcc.gnu.org/bugs/ for bug reporting.
3484
3485 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3486
3487         * configure.ac: Add test for dci instruction.
3488         * configure: Regenerate.
3489         * config.in: Likewise.
3490         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3491         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3492         (-mmulhw): Add 476 to description.
3493         (-mdlmzb): Likewise.
3494         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3495         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3496         (processor_target_table): Add 476 and 476fp entries.
3497         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3498         (rs6000_issue_rate): Add CPU_PPC476.
3499         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3500         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3501         (processor_type): Add PROCESSOR_PPC476.
3502         (EXTRA_SPECS): Add asm_cpu_476 string.
3503         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3504         (define_attr "cpu"): Add ppc476.
3505         Include 476.md.
3506         Update comments for 476.
3507         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3508         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3509         Update copyright year.
3510         * config/rs6000/476.md: New file.
3511         * config/rs6000/40x.md: Add description for "isel" attribute.
3512         Update copyright year.
3513         * config/rs6000/440.md: Likewise.
3514         * config/rs6000/603.md: Likewise.
3515         * config/rs6000/6xx.md: Likewise.
3516         * config/rs6000/7450.md: Likewise.
3517         * config/rs6000/7xx.md: Likewise.
3518         * config/rs6000/8540.md: Likewise.
3519         * config/rs6000/cell.md: Likewise.
3520         * config/rs6000/e300c2c3.md: Likewise.
3521         * config/rs6000/e500mc.md: Likewise.
3522         * config/rs6000/mpc.md: Likewise.
3523         * config/rs6000/power4.md: Likewise.
3524         * config/rs6000/power5.md: Likewise.
3525         * config/rs6000/power6.md: Likewise.
3526         * config/rs6000/power7.md: Likewise.
3527         * config/rs6000/rios1.md: Likewise.
3528         * config/rs6000/rios2.md: Likewise.
3529         * config/rs6000/rs64.md: Likewise.
3530
3531 2009-10-10  Richard Guenther  <rguenther@suse.de>
3532
3533         PR tree-optimization/41654
3534         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3535         a cond expr before calling gimple_cond_set_condition_from_tree.
3536         (ifcombine_iforif): Likewise.
3537
3538 2009-10-09  Ian Lance Taylor  <iant@google.com>
3539
3540         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3541         * configure: Rebuild.
3542
3543 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3544
3545         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3546         deprecated.
3547
3548 2009-10-09  Richard Guenther  <rguenther@suse.de>
3549
3550         PR lto/41638
3551         * target-def.h (TARGET_BUILTIN_DECL): Define.
3552         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3553         * target.h (struct gcc_target): Add builtin_decl target hook.
3554         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3555         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3556         target builtins.
3557         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3558         not gcc_unreachable.
3559         (lto_output_builtin_tree): Sorry if the target does not support
3560         streaming target builtins.
3561         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3562         (rs6000_builtin_decl): New function.
3563         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3564         (ix86_builtin_decl): New function.
3565
3566 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3567
3568         PR preprocessor/41445
3569         * c-ppoutput.c (do_line_change): New function.
3570         (cb_line_change): Use it.
3571         (scan_translation_unit): Call do_line_change if
3572         avoid_paste or PREV_WHITE and token location is on a different line
3573         than print.src_line.
3574
3575         PR debug/40521
3576         * dwarf2out.c (dwarf2out_init): Test whether
3577         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3578         it is defined.
3579
3580         PR rtl-optimization/41646
3581         * calls.c (expand_call): For BLKmode types returned in registers
3582         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3583         insns.
3584
3585 2009-10-09  Richard Guenther  <rguenther@suse.de>
3586
3587         PR tree-optimization/41634
3588         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3589         we remove the correct elements.
3590         (optimize_stmt): Make sure to update stmt operands before
3591         optimizing redundancies.
3592
3593 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3594
3595         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3596
3597 2009-10-09  Richard Guenther  <rguenther@suse.de>
3598
3599         PR driver/41637
3600         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3601         globals.
3602         (lto_wrapper_exit): New function.
3603         (fatal): Use it.
3604         (fatal_perror): Likewise.
3605         (fork_execute): Use global args_name, do not free it.
3606         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3607         * lto-streamer.h: Remove duplicate prototypes.
3608
3609 2009-10-09  Richard Guenther  <rguenther@suse.de>
3610
3611         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3612         before calling stmt_can_throw_external.
3613
3614 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3615
3616         PR tree-optimization/40071
3617         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3618         pointer if the original data reference doesn't conflict with the
3619         created vector data reference.  Fix long line.
3620
3621 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3622
3623         * config/i386/i386.md (any_div): New code iterator.
3624         (u): Handle div and udiv.
3625         (sgnprefix): Ditto.
3626         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3627         code iterator.
3628         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3629         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3630         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3631         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3632
3633 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3634
3635         * gcc.c (main): Remove trailing "." from diagnostics.
3636
3637 2009-10-08  Cary Coutant  <ccoutant@google.com>
3638
3639         Add support for debugging with ICF (Identical Code Folding).
3640         * calls.c (debug.h): New #include.
3641         (emit_call_1): Call virtual_call_token debug hook.
3642         * common.opt (-fenable-icf-debug): New option.
3643         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3644         locations in the source).
3645         (poc_label_num): New variable.
3646         (dcall_entry, vcall_entry): New typedefs.
3647         (dcall_table, vcall_table): New variables.
3648         (struct vcall_insn): New type.
3649         (vcall_insn_table): New variable.
3650         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3651         (size_of_dcall_table): New function.
3652         (output_dcall_table): New function.
3653         (size_of_vcall_table): New function.
3654         (output_vcall_table): New function.
3655         (dwarf2out_direct_call): New function.
3656         (vcall_insn_table_hash): New function.
3657         (vcall_insn_table_eq): New function.
3658         (dwarf2out_virtual_call_token): New function.
3659         (dwarf2out_virtual_call): New function.
3660         (dwarf2out_init): Allocate new tables and sections.
3661         (prune_unused_types): Mark DIEs referenced from direct call table.
3662         (dwarf2out_finish): Output direct and virtual call tables.
3663         * final.c (final_scan_insn): Call direct_call and virtual_call
3664         debug hooks.
3665         * debug.h (struct gcc_debug_hooks): Add direct_call,
3666         virtual_call_token, virtual_call hooks.
3667         (debug_nothing_uid): New function.
3668         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3669         (debug_nothing_uid): New function.
3670         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3671         (xcoff_debug_hooks): Likewise.
3672         * sdbout.c (sdb_debug_hooks): Likewise.
3673         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3674         * doc/invoke.texi (-fenable-icf-debug): New option.
3675
3676 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
3677
3678         PR debug/41353
3679         * regmove.c (regmove_backward_pass): Replace src with dst in the
3680         debug insn, and check for dst before rather than after.
3681
3682 2009-10-08  Janis Johnson <janis187@us.ibm.com>
3683
3684         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
3685         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
3686
3687 2009-10-08  Jan Hubicka  <jh@suse.cz>
3688
3689         PR middle-end/41626
3690         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
3691         do not mark cgraph nodes as needed.
3692         (record_references_in_initializer): Add new only_vars parameter.
3693         * cgraph.h (record_references_in_initializer): New parameter.
3694         * varasm.c (assemble_variable): Update call.
3695         * varpool.c (varpool_analyze_pending_decls): Always look for
3696         referenced vars.
3697
3698 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
3699
3700         * config/avr/avr.c (last_insn_address) Remove variable.
3701         (expand_prologue): Don't initialise last_insn_address variable.
3702         (final_prescan_insn): Don't output insn size.
3703         * config/avr/avr.opt (msize): Remove switch.
3704         * doc/invoke.texi (AVR Options): Remove documentation of -msize
3705         switch.
3706
3707 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
3708
3709         * combine.c (label_tick_ebb_start): Fix comment.
3710         (combine_instructions): Set label_tick and label_tick_ebb_start before
3711         calling setup_incoming_promotions.  Start them from 1.  Increment
3712         label_tick instead of deriving it from the BB index.  Rather than
3713         comparing ticks use the block from the previous iteration to decide
3714         whether to start a new EBB.  Remove empty lines before function.
3715
3716 2009-10-08  Michael Matz  <matz@suse.de>
3717
3718         PR middle-end/41573
3719         * builtins.c (fold_builtin_isascii): Use fold_build2.
3720         (fold_builtin_isdigit): Ditto.
3721         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
3722         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
3723         remove_useless_stmts_cond, remove_useless_stmts_tf,
3724         remove_useless_stmts_tc, remove_useless_stmts_bind,
3725         remove_useless_stmts_goto, remove_useless_stmts_label,
3726         remove_useless_stmts_1, remove_useless_stmts,
3727         pass_remove_useless_stmts): Remove.
3728         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
3729         * passes.c (init_optimization_passes): Don't add
3730         pass_remove_useless_stmts.
3731         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
3732         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
3733         static constants.
3734         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
3735         for static constants.
3736         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
3737         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
3738
3739 2009-10-08  Richard Guenther  <rguenther@suse.de>
3740
3741         * gimple.c (free_gimple_type_tables): New function.
3742         * gimple.h (free_gimple_type_tables): Declare.
3743
3744 2009-10-07  Mark Heffernan  <meheff@google.com>
3745
3746         * ipa-prop.c (ipa_print_node_params) Only print
3747         names of named arguments.
3748
3749 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
3750
3751         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
3752         being statically linked.
3753
3754 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3755
3756         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
3757
3758 2009-10-08  Jan Hubicka  <jh@suse.cz>
3759
3760         PR bootstrap/41620
3761         * ipa.c (cgraph_externally_visible_p,
3762         function_and_variable_visibility,
3763         whole_program_function_and_variable_visibility): Skip non-finalized
3764         nodes.
3765
3766 2009-10-08  Nick Clifton  <nickc@redhat.com>
3767
3768         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
3769         CONST_DOUBLEs.
3770
3771 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3772
3773         PR bootstrap/37739
3774         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3775
3776 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3777
3778         PR c/41182
3779         * c-common.c (c_fully_fold_internal): Strip nops from the result
3780         of recursive calls to c_fully_fold_internal.
3781         (c_wrap_maybe_const): New.
3782         (c_save_expr): Use c_wrap_maybe_const.
3783         * c-common.h (c_wrap_maybe_const): Declare.
3784         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3785         build_binary_op): Use c_wrap_maybe_const.
3786
3787 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3788
3789         * real.c: Fix comment to reflect actual exponent size.
3790
3791 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3792
3793         * config/rs6000/a2.md: Add FSF comment header.
3794
3795 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3796
3797         * config/i386/i386.md (any_extend): New code iterator.
3798         (u, s): New code attributes.
3799         (sgnprefix): Ditto.
3800         (DWIH): Rewrite as code iterator for SI and DI modes.
3801         (DWI): Rewrite as mode attribute.
3802         (dwi): New mode attribute.
3803         (di): Depend on SI mode and DI mode.
3804         (doubleint_general_operand): Remove mode attribute.
3805
3806         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3807         DWIH mode iterator.
3808
3809         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3810         (*sub<mode>3_doubleword): Ditto.
3811
3812         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3813         using SWIM248 mode iterator.
3814         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3815         using SWI48 mode iterator.
3816         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3817         patterns using DWIH mode iterator and any_extend code iterator.
3818         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3819         using any_extend code iterator.
3820         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3821         patterns using DWIH mode iterator and any_extend code iterator.
3822         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3823         using any_extend code iterator.
3824         (<s>mul<mode>3_highpart): Macroize expander from
3825         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3826         and any_extend code iterator.
3827         (*<s>muldi3_highpart_1): Macroize insn from
3828         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3829         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3830         patterns using any_extend code iterator.
3831         (*<s>mulsi3_highpart_zext): Macroize insn from
3832         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3833
3834 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3835
3836         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3837         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3838         refering to a DIE with DW_AT_const_value.
3839
3840 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3841
3842         PR middle-end/22072
3843         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3844
3845 2009-10-06  Jan Hubicka  <jh@suse.cz>
3846
3847         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3848         correctly.
3849
3850 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3851
3852         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3853         *lea_2_rex64): Move before *add<mode>_1 pattern.
3854
3855 2009-10-07  Jan Hubicka  <jh@suse.cz>
3856
3857         * collect2.c (main): Add -fno-whole-program.
3858         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3859
3860 2009-10-07  Jan Hubicka  <jh@suse.cz>
3861
3862         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3863         has no address taken.
3864         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3865         never needed.
3866         (cgraph_clone_node): Clear externally_visible flag for clones.
3867         * cgraph.h (cgraph_only_called_directly_p,
3868         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3869         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3870         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3871         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3872         ipcp_insert_stage): Likwise.
3873         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3874         externally_visible flag.
3875         (verify_cgraph_node): Verify that inline clones look right.
3876         (process_function_and_variable_attributes): Do not set
3877         externally_visible flags.
3878         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3879         been already run.
3880         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3881         boundaries.
3882         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3883         clear externally_visible when turning into inline clones
3884         (cgraph_mark_inline_edge): Use new predicates.
3885         (cgraph_estimate_growth): Likewise.
3886         (cgraph_decide_inlining): Likewise.
3887         * ipa.c (cgraph_postorder): Likewise.
3888         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3889         that inline clones are not needed.
3890         (cgraph_externally_visible_p): New predicate.
3891         (function_and_variable_visibility): Add whole_program parameter;
3892         always set externally_visible flag; handle COMDAT function
3893         privatization.
3894         (local_function_and_variable_visibility): New function.
3895         (gate_whole_program_function_and_variable_visibility): New function.
3896         (whole_program_function_and_variable_visibility): New function.
3897         (pass_ipa_whole_program_visibility): New function.
3898         * passes.c  (init_optimization_passes): Add whole program visibility
3899         pass.
3900         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3901         not care about needed/reachable flags.
3902         * varpool.c: Include flags.h
3903         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3904         (varpool_finalize_decl): When we are in LTO read-back, all variables
3905         are analyzed.
3906         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3907
3908 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3909
3910         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3911         add MASK_HARD_DFP.
3912
3913 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3914
3915         * config.gcc: Don't include the makefile fragments intended for
3916         libgcc.
3917         * config/s390/fixdfdi.h: File removed.
3918         * config/s390/libgcc-glibc.ver: File removed.
3919         * config/s390/s390.h: Remove the fixdfdi.h hack.
3920         * config/s390/t-crtstuff: File moved to libgcc dir.
3921         * config/s390/t-linux: Likewise.
3922         * config/s390/t-tpf: libgcc specific parts removed.
3923         * config/s390/t-linux64: Likewise.
3924
3925 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3926
3927         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
3928         (lto-compress.o): Likewise.
3929
3930 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
3931
3932         PR target/41512
3933         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
3934         dllexport to class members here.
3935         (i386_pe_determine_dllimport_p): Only check static class data for
3936         definition.
3937         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
3938         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
3939         functions for vague linkage.
3940         (i386_pe_type_dllexport_p): Fix formatting.
3941         (maybe_add_dllexport) New function.
3942         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
3943         to class members.
3944
3945 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3946
3947         * config/rs6000/a2.md: Remove duplicated lines.
3948
3949 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3950
3951         * config.gcc (powerpc*-*-*): Handle a2.
3952         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
3953         * config/rs6000/a2.md: New file.
3954         * config/rs6000/rs6000.opt (mno-update): New.
3955         (mupdate): Return to using a mask, not a var.
3956         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
3957         (enum processor_type): Add PROCESSOR_PPCA2.
3958         * config/rs6000/rs6000.c (ppca2_cost): New costs.
3959         (rs6000_override_options): Add "a2" to processor_target_table.
3960         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
3961         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
3962
3963 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3964
3965         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3966         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
3967         reference to nonexistent gen_truncxfxf2 function.
3968
3969 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3970
3971         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
3972         (DWIH, g, di, doubleint_general_operand): New mode attributes.
3973         (general_operand): Handle TI mode.
3974         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
3975         using SDWIM mode iterator.
3976         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
3977         pattern from *add{di,ti}3_1 patterns and corresponding splitters
3978         using DWI mode iterator.
3979         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
3980         patterns using SWI mode iterator.
3981         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
3982         using SWI48 mode iterator.
3983         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
3984         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
3985         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
3986         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
3987         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
3988         using SDWIM mode iterator.
3989         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
3990         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
3991         using DWI mode iterator.
3992         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
3993         patterns using SWI mode iterator.
3994         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
3995         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
3996         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
3997         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
3998         patterns using plusminus code iterator.
3999         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
4000         sub<mode>3 patterns using plusminus code iterator.
4001         * config/i386/i386.c (override_options): Update the call to
4002         gen_subdi_carry_rex64 for renamed function.
4003         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
4004         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
4005         calls to instruction expanders.
4006
4007 2009-10-06  Martin Jambor  <mjambor@suse.cz>
4008
4009         PR bootstrap/41395
4010         * opts.c (decode_options): Run IPA-SRA at -O2.
4011
4012 2009-10-06  Richard Guenther  <rguenther@suse.de>
4013
4014         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
4015
4016 2009-10-06  Tobias Burnus  <burnus@net-b.de>
4017
4018         PR lto/41591
4019         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
4020         -flto and -fwhole-program flags can be combined.
4021
4022 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
4023
4024         PR driver/41217
4025         * gcc.c (process_command): Check that -o argument was specified.
4026
4027 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4028
4029         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
4030
4031 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4032
4033         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
4034         * doc/invoke.texi (Warning Options): Annotate allowed languages
4035         for -Wunsuffixed-float-constants.
4036
4037 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
4038
4039         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
4040         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
4041         same name and isn't the main variant.
4042
4043         PR debug/41558
4044         * dwarf2out.c (loc_by_reference): Removed.
4045         (dw_loc_list_1): New function.
4046         (dw_loc_list): Remove toplev argument, add want_address argument.
4047         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
4048         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
4049         want_address == 2 to dw_loc_list.  For successful dw_loc_list
4050         set have_address to 1 only if want_address is not 0.
4051
4052 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4053
4054         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
4055         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
4056         a code block followed by two pointers.
4057         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
4058         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
4059         (MIPS_MOVE): Likewise.
4060         (MIPS_LUI): Likewise.
4061         (MIPS_JR): Likewise.
4062         (MIPS_BAL): Likewise.
4063         (MIPS_NOP): Likewise.
4064         (mips_asm_trampoline_template): Delete.
4065         (mips_trampoline_code_size): New function.
4066         (mips_trampoline_init): Add shorter sequences for all cases
4067         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
4068         Calculate the opcodes directly, rather than copying from a template.
4069         Only flush the code part of the trampoline.
4070         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
4071
4072 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4073
4074         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
4075         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
4076         (INCOMING_RETURN_ADDR_RTX): Likewise.
4077         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
4078         with AT_REGNUM.
4079         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
4080         with RETURN_ADDR_REGNUM.
4081         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
4082         * config/mips/mips.c (mips16_build_call_stub): Replace
4083         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
4084         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
4085         (mips_print_operand_punctuation): Likewise.
4086         (mips_frame_set): Likewise.
4087         (mips16e_output_save_restore): Likewise.
4088         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
4089         (mips_save_reg_p): Likewise.
4090         (mips_return_addr): Likewise.
4091         (mips_set_return_address): Likewise.
4092         (mips_direct_save_slot_move_p): Likewise.
4093         (mips_output_function_prologue): Likewise.
4094         (mips_restore_reg): Likewise.
4095         (mips_expand_epilogue): Likewise.
4096         (mips_epilogue_uses): Likewise.
4097         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
4098         (*mov<mode>_ra): Use it instead of a hard-coded 31.
4099         (clear_hazard_<mode>): Likewise.
4100         (call_internal): Likewise.
4101         (call_internal_direct): Likewise.
4102         (call_direct_split): Likewise.
4103         (call_value_internal): Likewise.
4104         (call_value_split): Likewise.
4105         (call_value_internal_direct): Likewise.
4106         (call_value_direct_split): Likewise.
4107         (call_value_multiple_internal): Likewise.
4108         (call_value_multiple_split): Likewise.
4109
4110 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
4111             Jakub Jelinek  <jakub@redhat.com>
4112
4113         PR rtl-optimization/41511
4114         * combine.c (record_value_for_reg): Pass explicit values as argument
4115         to get_last_value_validate.
4116         (get_last_value_validate): Document INSN parameter.
4117         For non-readonly MEMs, assume they might have been modified if INSN
4118         was in another basic block.
4119         (get_last_value): Minor reformatting.
4120
4121 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4122
4123         PR tree-opt/40992
4124         * final.c (asm_str_count): Split out from asm_insn_count.
4125         * rtl.h (asm_str_count): New prototype.
4126         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
4127         asm_str_count.
4128
4129 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
4130
4131         * doc/plugins.texi: Change plugin_pass to register_pass_info.
4132
4133 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
4134             Rafael Espindola  <espindola@google.com>
4135
4136         * gengtype.c (write_types): Moved call to write_func_for_structure
4137         into seperate loops.
4138
4139 2009-10-05  Richard Guenther  <rguenther@suse.de>
4140
4141         PR lto/41281
4142         * lto-cgraph.c (output_cgraph): Output toplevel asms.
4143         (input_cgraph_1): Input toplevel asms.
4144
4145 2009-10-05  Richard Guenther  <rguenther@suse.de>
4146
4147         PR lto/40902
4148         * lto-symtab.c (lto_compatible_attributes_p): Remove.
4149         (external_aggregate_decl_p): Likewise.
4150         (lto_symtab_compatible): Re-structure.  Remove dead code.
4151         For variables ignore toplevel qualifiers when comparing types.
4152         Issue warnings, not errors for mismatched user-alignment.
4153
4154 2009-10-05  Richard Guenther  <rguenther@suse.de>
4155
4156         PR lto/41552
4157         PR lto/41487
4158         * lto-symtab.c (struct lto_symtab_base_def): Remove.
4159         (struct lto_symtab_identifier_def): Likewise.
4160         (struct lto_symtab_decl_def): Likewise.
4161         (struct lto_symtab_entry_def): New.
4162         (lto_symtab_identifier_t): Rename to ...
4163         (lto_symtab_entry_t): ... this.
4164         (lto_symtab_decls): Remove.
4165         (lto_symtab_base_hash): Rename to ...
4166         (lto_symtab_entry_hash): ... this.
4167         (lto_symtab_base_eq): Rename to ...
4168         (lto_symtab_entry_eq): ... this.
4169         (lto_symtab_base_marked_p): Rename to ...
4170         (lto_symtab_entry_marked_p): ... this.
4171         (lto_symtab_identifier_marked_p): Remove.
4172         (lto_symtab_decl_marked_p): Likewise.
4173         (lto_symtab_maybe_init_hash_tables): Rename to ...
4174         (lto_symtab_maybe_init_hash_table): ... this.
4175         (lto_symtab_set_resolution_and_file_data): Remove.
4176         (lto_symtab_register_decl): New function.
4177         (lto_symtab_get_identifier): Remove.
4178         (lto_symtab_get): New function.
4179         (lto_symtab_get_resolution): Adjust.
4180         (lto_symtab_get_identifier_decl): Remove.
4181         (lto_symtab_set_identifier_decl): Likewise.
4182         (lto_symtab_merge_decl): Rename to ...
4183         (lto_symtab_merge): ... this.  Rewrite.
4184         (lto_symtab_merge_var): Remove.
4185         (lto_symtab_merge_fn): Likewise.
4186         (lto_symtab_prevailing_decl): Adjust.
4187         (lto_cgraph_replace_node): New function.
4188         (lto_symtab_merge_decls_2): Likewise.
4189         (lto_symtab_merge_decls_1): Likewise.
4190         (lto_symtab_fixup_var_decls): Likewise.
4191         (lto_symtab_resolve_symbols): Likewise.
4192         (lto_symtab_merge_decls): Likewise.
4193         (lto_symtab_prevailing_decl): Adjust.
4194         (lto_symtab_get_symtab_def): Remove.
4195         (lto_symtab_get_file_data): Likewise.
4196         (lto_symtab_clear_resolution): Adjust.
4197         (lto_symtab_clear_resolution): Likewise.
4198         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4199         (input_cgraph_1): Likewise.
4200         * lto-streamer-in.c (get_resolution): Do not provide fake
4201         symbol resolutions here.
4202         (deferred_global_decls): Remove.
4203         (lto_register_deferred_decls_in_symtab): Likewise.
4204         (lto_register_var_decl_in_symtab): Change signature, register
4205         variable via lto_symtab_register_decl.
4206         (lto_register_function_decl_in_symtab): Likewise.
4207         (lto_read_tree): Adjust.
4208         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4209         (lto_symtab_merge_var): Likewise.
4210         (lto_symtab_merge_fn): Likewise.
4211         (lto_symtab_register_decl): Declare.
4212         (lto_symtab_merge_decls): Likewise.
4213
4214 2009-10-05  Richard Guenther  <rguenther@suse.de>
4215
4216         PR tree-optimization/23821
4217         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4218         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4219         simple IV increments.
4220
4221 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4222
4223         * config/arm/arm.c (arm_override_options): Really initialize
4224         flag_dwarf2_cfi_asm to 0.
4225
4226 2009-10-05  Doug Kwan  <dougkwan@google.com>
4227
4228         PR rtl-optimization/41574
4229         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4230         floating point and we are not doing unsafe math optimizations.
4231
4232 2009-10-03  Simon Baldwin  <simonb@google.com>
4233             Cary Coutant  <ccoutant@google.com>
4234             Rafael Espindola  <espindola@google.com>
4235             Richard Guenther  <rguenther@suse.de>
4236             Jan Hubicka  <jh@suse.cz>
4237             Doug Kwan <dougkwan@google.com>
4238             H.J. Lu  <hongjiu.lu@intel.com>
4239             Bill Maddox  <maddox@google.com>
4240             Ryan Mansfield  <rmansfield@qnx.com>
4241             Diego Novillo  <dnovillo@google.com>
4242             Ollie Wild  <aaw@google.com>
4243             Kenneth Zadeck <zadeck@naturalbridge.com>
4244
4245         * lto-cgraph.c: New file.
4246         * lto-compress.c: New file.
4247         * lto-compress.h: New file.
4248         * lto-opts.c: New file.
4249         * lto-section-in.c: New file.
4250         * lto-section-out.c: New file.
4251         * lto-streamer-in.c: New file.
4252         * lto-streamer-out.c: New file.
4253         * lto-streamer.c: New file.
4254         * lto-streamer.h: New file.
4255         * lto-symtab.c: New file.
4256         * lto-wpa-fixup.c: New file.
4257         * lto-wrapper.c: New file.
4258
4259 2009-10-03  Simon Baldwin  <baldwin@google.com>
4260             Ben Elliston  <bje@au.ibm.com>
4261             Rafael Espindola  <espindola@google.com>
4262             Nathan Froyd  <froydnj@codesourcery.com>
4263             Jan Hubicka  <jh@suse.cz>
4264             Doug Kwan  <dougkwan@google.com>
4265             Diego Novillo  <dnovillo@google.com>
4266             Kenneth Zadeck  <zadeck@naturalbridge.com>
4267
4268         * Makefile.in (enable_lto): New.
4269         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4270         (LINKER_PLUGIN_API_H): Define.
4271         (LTO_SYMTAB_H): Define.
4272         (LTO_STREAMER_H): Define.
4273         (TREE_VECTORIZER_H): Define.
4274         (INCLUDES): Add LIBELFINC.
4275         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4276         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4277         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4278         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4279         (native): Add lto-wrapper$(exeext)
4280         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4281         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4282         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4283         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4284         (varasm.o): Add dependency on tree-iterator.h.
4285         (cgraph.o): Add dependency on cif-code.def.
4286         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4287         (ipa-pure-const.o): Likewise.
4288         (GTFILES): Add lto-symtab.c.
4289         (install-lto-wrapper): New.
4290         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4291         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4292         * config.in: Regenerate.
4293
4294 2009-10-03  Rafael Espindola  <espindola@google.com>
4295             Diego Novillo  <dnovillo@google.com>
4296
4297         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4298         ipa_write_summaries.
4299         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4300         all_lto_gen_passes.
4301         (cgraph_optimize): Make extern.
4302
4303 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4304             Kenneth Zadeck <zadeck@naturalbridge.com>
4305
4306         * toplev.c (in_lto_p): Declare.
4307         * collect2.c (scan_prog_file): Read all the output when reading
4308         information for LTO.
4309         (enum lto_mode_d): Declare.
4310
4311 2009-10-03  Richard Guenther  <rguenther@suse.de>
4312             Diego Novillo  <dnovillo@google.com>
4313
4314         * gimple.c: Include target.h and alias.h.
4315         (gimple_types): Declare.
4316         (type_hash_cache): Declare.
4317         (gimple_alloc_stat): Make extern.
4318         (gimple_build_eh_must_not_throw): Call
4319         gimple_eh_must_not_throw_set_fndecl.
4320         (struct type_pair_d): Declare.
4321         (type_pair_t): Declare.
4322         (type_pair_hash): New.
4323         (type_pair_eq): New.
4324         (lookup_type_pair): New.
4325         (gimple_force_type_merge): New.
4326         (compare_type_names_p): New.
4327         (compare_field_offset): New.
4328         (gimple_types_compatible_p): New.
4329         (struct sccs): Declare.
4330         (next_dfs_num): Declare.
4331         (iterative_hash_gimple_type): New.
4332         (visit): New.
4333         (iterative_hash_type_name): New.
4334         (iterative_hash_gimple_type): New.
4335         (gimple_type_hash): New.
4336         (gimple_type_eq): New.
4337         (gimple_register_type): New.
4338         (print_gimple_types_stats): New.
4339         (gimple_signed_or_unsigned_type): New.
4340         (gimple_unsigned_type): New.
4341         (gimple_signed_type): New.
4342         (gimple_get_alias_set): New.
4343         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4344         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4345         (gimple_force_type_merge): Declare.
4346         (gimple_types_compatible_p): Declare.
4347         (gimple_register_type): Declare.
4348         (print_gimple_types_stats): Declare.
4349         (gimple_unsigned_type): Declare.
4350         (gimple_signed_type): Declare.
4351         (gimple_get_alias_set): Declare.
4352         (gimple_eh_must_not_throw_set_fndecl): New.
4353
4354 2009-10-03  Jan Hubicka  <jh@suse.cz>
4355             Kenneth Zadeck <zadeck@naturalbridge.com>
4356
4357         * ipa-pure-const.c: Include lto-streamer.h.
4358         (register_hooks): Factor out of ...
4359         (generate_summary): ... here.
4360         (pure_const_write_summary): New.
4361         (pure_const_read_summary): New.
4362         (pass_ipa_pure_const): Add pure_const_write_summary and
4363         pure_const_read_summary.
4364         * ipa-reference.c: Include lto-streamer.h.
4365         (add_new_function): New.
4366         (remove_node_data): New.
4367         (duplicate_node_data): New.
4368         (ipa_init): Guard against multiple calls.
4369         Move hook setup from analyze_function.
4370         (write_node_summary_p): New.
4371         (ipa_reference_write_summary): New.
4372         (ipa_reference_read_summary): New.
4373         (pass_ipa_reference): Add ipa_reference_write_summary and
4374         ipa_reference_read_summary.
4375         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4376         (struct cgraph_edge): Add fields lto_stmt_uid and
4377         call_stmt_cannot_inline_p.
4378         (cgraph_optimize): Declare.
4379         (cgraph_decide_is_function_needed): Declare.
4380         (reset_inline_failed): Declare.
4381         (enum LTO_cgraph_tags): Declare.
4382         (LTO_cgraph_tag_names): Declare.
4383         (LCC_NOT_FOUND): Define.
4384
4385 2009-10-03  Doug Kwan  <dougkwan@google.com>
4386             Rafael Espindola  <espindola@google.com>
4387             Jan Hubicka  <jh@suse.cz>
4388             Diego Novillo  <dnovillo@google.com>
4389             Kenneth Zadeck  <zadeck@naturalbridge.com>
4390
4391         * passes.c (all_regular_ipa_passes): New.
4392         (all_ipa_passes): Rename to all_small_ipa_passes.
4393         (init_optimization_passes): Init all_regular_ipa_passes.
4394         * tree-pass.h (all_regular_ipa_passes): New.
4395         (all_ipa_passes): Rename to all_small_ipa_passes.
4396         * passes.c (all_lto_gen_passes): New.
4397         (init_optimization_passes): Initialize all_lto_gen_passes.
4398         (execute_ipa_summary_passes): Make non-static.
4399         (ipa_write_summaries_1): New.
4400         (ipa_write_summaries_2): New.
4401         (ipa_write_summaries): New.
4402         (ipa_write_summaries_of_cgraph_node_set): New.
4403         (ipa_read_summaries_1): New.
4404         (ipa_read_summaries): New.
4405         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4406         (execute_regular_ipa_pass_list): Remove.
4407         (init_optimization_passes): Schedule
4408         pass_rebuild_cgraph_edges and pass_early_inline outside
4409         of pass_all_early_optimizations.  Document reason.
4410         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4411         pass_ipa_lto_finish_out): New pass.
4412         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4413         (execute_all_ipa_transforms): New.
4414         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4415         (dump_properties, debug_properties): New.
4416         * tree-optimize.c (gate_all_early_local_passes): Return
4417         false if we are in lto1.
4418         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4419         * tree-pass.h (execute_all_ipa_transforms): Declare.
4420         (pass_ipa_function_and_variable_visibility): Declare.
4421         (pass_ipa_early_inline): Declare.
4422         (pass_ipa_lto_gimple_out): Declare.
4423         (pass_ipa_lto_wpa_fixup): Declare.
4424         (pass_ipa_lto_finish_out): Declare.
4425         (all_small_ipa_passes, all_regular_ipa_passes,
4426         all_lto_gen_passes): Declare.
4427         (execute_ipa_summary_passes): Declare.
4428         (execute_all_ipa_transforms): Declare.
4429         (ipa_write_summaries): Declare
4430         (ipa_write_summaries_of_cgraph_node_set): Declare.
4431         (ipa_read_summaries): Declare.
4432
4433 2009-10-03  Doug Kwan  <dougkwan@google.com>
4434             Ollie Wild  <aaw@google.com>
4435
4436         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4437
4438         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4439         (lto_mode): New variable.
4440         (maybe_run_lto_and_relink): Handle the -fwpa option.
4441         (main): Handle the -fwpa option.
4442         (maybe_unlink_list): New function.
4443         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4444         * common.opt (flto): New flag.
4445         * toplev.c (flag_generate_lto): Declare.
4446
4447 2009-10-03  Simon Baldwin  <simonb@google.com>
4448
4449         * common.opt (flto-compression-level): New flag.
4450
4451         * opts.c: Include lto-opts.h.
4452         (handle_option): Call lto_register_user_option for each
4453         valid option handled.
4454         (decode_options): Clear registered options before the options
4455         handling loop.
4456
4457 2009-10-03  Cary Coutant  <ccoutant@google.com>
4458
4459         * collect2.c (is_elf): New function.
4460         (scan_prog_file): Require LTO object to be in ELF format.
4461
4462 2009-10-03  Rafael Espindola  <espindola@google.com>
4463
4464         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4465         libgcc to the linker.
4466
4467         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4468
4469         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4470         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4471         all callers.
4472         * collect2.h (collect_execute): Add flags argument.
4473         * tlink.c (tlink_execute): Update call to collect_execute.
4474         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4475         (use_linker_plugin): New.
4476         (use_linker_plugin_spec_function): New.
4477         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4478         (linker_plugin_file_spec): New.
4479         (lto_wrapper_spec): New.
4480         (lto_gcc_spec): New.
4481         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4482         (static_spec_functions): Add use-linker-plugin.
4483         (process_command): Handle -use-linker-plugin.
4484         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4485         linker_plugin_file_spec and lto_gcc_spec.
4486         (use_linker_plugin_spec_function): New.
4487
4488 2009-10-03  Richard Guenther  <rguenther@suse.de>
4489
4490         PR lto/41547
4491         PR lto/41548
4492         * tree.h (is_lang_specific): Include LANG_TYPE.
4493         * tree.c (find_decls_types_r): Manually add interesting parts
4494         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4495
4496         * gimple.c (type_pair_hash): Make symmetric.
4497         (type_pair_eq): Likewise.
4498         (lookup_type_pair): Increase initial hashtable size.
4499         (gimple_force_type_merge): Rely on type-pair symmetry.
4500         (visit): Remove excessive checking code.
4501         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4502         (gimple_register_type): Remove getenv calls, shrink initial
4503         hashtable size.
4504
4505         PR middle-end/41502
4506         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4507         inline functions if not generating lto output.
4508
4509         PR lto/41379
4510         * toplev.c (finalize): In WPA mode remove the asm file.
4511
4512 2009-10-03  Doug Kwan  <dougkwan@google.com>
4513
4514         * ipa-inline.c (cgraph_mark_inline): Check
4515         edge->call_stmt_cannot_inline_p instead of calling
4516         gimple_call_cannot_inline_p.
4517         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4518         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4519         (inline_generate_summary): Do nothing in LTRANS.
4520         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4521         exists before calling gimple_call_cannot_inline_p.
4522         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4523         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4524         Update new_edge->lto_stmt_uid.
4525         * cgraphbuild.c (reset_inline_failed): New.
4526
4527         * common.opt (fwpa): New flag.
4528         (fltrans): New option.
4529         * gcc.c (gcc_lto_option_t): New type.
4530         (current_lto_option): New variable.
4531         (lto_single_spec_function): Remove and is replaced by ..
4532         (lto_option_spec_function): New function.
4533         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4534         passing the -flto flag.
4535         (cc1_options): Separate non-LTO related parts into ..
4536         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4537         (lto1_options): New spec for lto FE.
4538         (link_lto_options): New spec for handling LTO flags in linker.
4539         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4540         lto-single with lto-option.
4541         (static_specs): Add cc1_non_lto_options, lto1_options and
4542         link_lto_options.
4543         (static_spec_function): Replace lto-single with lto-option.
4544         (process_command): Handle -flto, -fwpa and -fltran by setting
4545         current_lto_option and not passing it to subprocess unconditionally.
4546
4547 2009-10-03  Bill Maddox  <maddox@google.com>
4548
4549         Add `gcc' driver support for link-time code generation (LTO).
4550
4551         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4552         (lto_flag, lto_objects, lto_o_file): New variables.
4553         (struct lto_object, struct lto_object_list): New structures.
4554         (collect_exit, handler): Remove LTO temporary output file on exit.
4555         (add_lto_object): New function.
4556         (maybe_run_lto_and_relink): New function. Perform link time code
4557         generation and relinking for object files containing LTO information.
4558         (main): Invoke maybe_run_lto_and_relink().
4559         (dump_argv): New function.  For debugging, currently disabled.
4560         (scan_prog_file): Add LTO information pass.
4561         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4562         collect2.
4563         * toplev.c (compile_file): Emit assembler directive to create
4564         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4565
4566 2009-10-03  Diego Novillo  <dnovillo@google.com>
4567
4568         * c.opt: Add LTO to warn_abi and warn_psabi.
4569
4570         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4571         inline function.  Ignore language-specific nodes.  Update all users.
4572         (find_decls_types_r): Do not traverse the subtrees of
4573         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4574         * tree.h (is_lang_specific): New.
4575         * langhooks.h (struct lang_hooks_for_decls): Remove
4576         may_need_assembler_name_p.  Update all users.
4577
4578         * c-common.c (set_builtin_user_assembler_name): Move ...
4579         * builtins.c (set_builtin_user_assembler_name): ... here.
4580         (is_builtin_name): Add comment
4581         (is_builtin_fn): New.
4582         * except.c (output_ttype): Only call
4583         lookup_type_for_runtime if TYPE is not a runtime type.
4584
4585         * passes.c (register_pass): Call position_pass on
4586         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4587         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4588         (TV_IPA_LTO_DECL_IO): Define.
4589         (TV_IPA_LTO_CGRAPH_IO): Define.
4590         (TV_LTO): Define.
4591         (TV_WHOPR_WPA): Define.
4592         (TV_WHOPR_WPA_IO): Define.
4593         (TV_WHOPR_LTRANS): Define.
4594         (TV_WHOPR_WPA_FIXUP): Define.
4595         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4596         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4597         * tree-flow.h (tree_node_can_be_shared): Declare.
4598         * tree-inline.c (tree_can_inline_p): Check that E has a
4599         statement associated with it.
4600         * tree.c (free_lang_data_in_binf): Factor out of ...
4601         (free_lang_data_in_type): ... here.
4602         Call RECORD_OR_UNION_TYPE_P.
4603         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4604         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4605         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4606         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4607         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4608         (gate_free_lang_data): Return true if flag_generate_lto is set.
4609         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4610         * c-common.h (set_builtin_user_assembler_name): Move ...
4611         * tree.h (set_builtin_user_assembler_name): ... here.
4612
4613         * common.opt (flto-report): New flag.
4614         * opts.c (complain_wrong_lang): Do not complain if running lto1.
4615         * collect2.c (scan_prog_file): Send the error output of
4616         'nm' to HOST_BIT_BUCKET.
4617
4618 2009-10-03  Ollie Wild  <aaw@google.com>
4619
4620         * langhooks-def.h (lhd_begin_section): New function declaration.
4621         (lhd_write_section): New function declaration.
4622         (lhd_end_section): New function declaration.
4623         (LANG_HOOKS_BEGIN_SECTION): New macro.
4624         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
4625         (LANG_HOOKS_END_SECTION): New macro.
4626         (LANG_HOOKS_LTO): New macro.
4627         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
4628         * langhooks.c (output.h): Add include.
4629         (saved_section): New static variable.
4630         (lhd_begin_section): New function.
4631         (lhd_write_section_data): New function.
4632         (lhd_end_section): New function.
4633         * langhooks.h (struct lang_hooks_for_lto): New structure.
4634         (struct lang_hooks): Add member lto.
4635         * Makefile.in (langhooks.o): Add dependency on output.h.
4636
4637         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
4638
4639 2009-10-03  Richard Guenther  <rguenther@suse.de>
4640
4641         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
4642         Handle LTO.
4643
4644 2009-10-03  Simon Baldwin  <simonb@google.com>
4645             Richard Guenther  <rguenther@suse.de>
4646             Janis Johnson  <janis187@us.ibm.com>
4647             Doug Kwan  <dougkwan@google.com>
4648             Diego Novillo  <dnovillo@google.com>
4649             Ramana Radhakrishnan  <ramana.r@gmail.com>
4650             Ollie Wild  <aaw@google.com>
4651
4652         * doc/install.texi: Add documentation for libelf and --enable-lto.
4653         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
4654         -flto-report, -flto-compression-level and -use-linker-plugin.
4655         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
4656         Add section for LTO Testing.
4657
4658 2009-10-02  Cary Coutant  <ccoutant@google.com>
4659
4660         Add support for comdat type sections for DWARF v4.
4661         Merge from dwarf4 branch.
4662
4663         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
4664         (dw_die_ref): Define vector type.
4665         (enum dw_val_class): Add dw_val_class_data8.
4666         (struct dw_val_struct): Add v.val_data8.
4667         (comdat_type_node_ref): New type.
4668         (struct die_struct): Move die_symbol into a union; add new field
4669         die_type_node.  Change all uses.
4670         (comdat_type_node): New type.
4671         (skeleton_chain_node): New type.
4672         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
4673         (comdat_type_list): New variable.
4674         (dwarf_tag_name): Add DW_TAG_type_unit.
4675         (dwarf_attr_name): Add DW_AT_signature.
4676         (add_AT_data8): New function.
4677         (replace_child): New function.
4678         (move_all_children): New function.
4679         (print_signature): New function.
4680         (print_die): Print signature information; add dw_val_class_data8.
4681         (attr_checksum): Support dw_val_class_data8.
4682         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
4683         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
4684         (checksum_sleb128, checksum_uleb128): New functions.
4685         (checksum_die_context): New function.
4686         (loc_checksum_ordered): New function.
4687         (attr_checksum_ordered): New function.
4688         (struct checksum_attributes): New structure.
4689         (collect_checksum_attributes): New function.
4690         (die_checksum_ordered): New function.
4691         (generate_type_signature): New function.
4692         (same_dw_val_p): Add dw_val_class_data8.
4693         (is_symbol_die): Use new is_declaration_die function.
4694         (is_declaration_die): New function.
4695         (should_move_die_to_comdat): New function.
4696         (clone_die): New function.
4697         (clone_tree): New function.
4698         (clone_as_declaration): New function.
4699         (copy_declaration_context): New function.
4700         (generate_skeleton_ancestor_tree): New function.
4701         (generate_skeleton_bottom_up): New function.
4702         (generate_skeleton): New function.
4703         (remove_child_or_replace_with_skeleton): New function.
4704         (break_out_comdat_types): New function.
4705         (struct decl_table_entry): New type.
4706         (htab_decl_hash): New function.
4707         (htab_decl_eq): New function.
4708         (htab_decl_del): New function.
4709         (copy_ancestor_tree): New function.
4710         (copy_decls_walk): New function.
4711         (copy_decls_for_unworthy_types): New function.
4712         (build_abbrev_table): Don't assert on missing die_symbol when doing
4713         comdat type sections.
4714         (size_of_die): Use DW_FORM_sig8 for external references.  Add
4715         dw_val_class_data8.
4716         (unmark_dies): Don't assert for unmarked dies when doing comdat
4717         type sections.
4718         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
4719         (output_signature): New function.
4720         (output_die): Likewise.
4721         (output_compilation_unit_header): Mark output as DWARF version 3
4722         even if generating DWARF 4.
4723         (output_comdat_type_unit): New function.
4724         (output_line_info): Mark output as DWARF version 3 even if generating
4725         DWARF 4.
4726         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
4727         DWARF-4.
4728         (dwarf2out_end_source_file): Likewise.
4729         (prune_unused_types_walk_attribs): Don't follow references into
4730         comdat type sections.
4731         (prune_unused_types_mark): When generating type units, do not mark
4732         children of non-defining declarations of types; do mark children of
4733         type entries.
4734         (prune_unused_types): Process comdat type sections.
4735         (htab_ct_hash): New function.
4736         (htab_ct_eq): New function.
4737         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
4738         Add a pointer to the line table from type unit entries so
4739         DW_AT_decl_file has meaning.
4740         * varasm.c (default_elf_asm_named_section): Use identifier name as
4741         comdat key instead of lang hook.
4742
4743 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
4744
4745         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
4746
4747 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
4748
4749         * config/i386/i386.md (SWIM248): New mode iterator.
4750         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
4751         divmodhi4 patterns using SWIM248 macro.
4752         (*divmod<mode>4): Macroize insn_and_split pattern from
4753         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
4754         and their corresponding splitters usign SWIM248 macro.  Split SImode
4755         insn to generate cltd and DImode insn to generate cqto instead of
4756         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
4757         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
4758         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
4759         *divmodsi_noext patterns using SWIM248 macro.
4760         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
4761         udivmodhi4 patterns using SWIM248 macro.
4762         (*udivmod<mode>4): Macroize insn_and_split pattern from
4763         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
4764         corresponding splitters using SWIM248 macro.
4765         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
4766         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
4767
4768 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
4769
4770         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
4771         of zero-sized element is zero-sized regardless of its extent.
4772
4773 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
4774
4775         PR debug/40521
4776         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
4777         * configure: Regenerated.
4778         * config.in: Regenerated.
4779         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
4780         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
4781         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
4782         not emitting .eh_frame, emit .cfi_sections .debug_frame
4783         directive.
4784
4785         PR debug/41404
4786         PR debug/41353
4787         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
4788         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
4789         with '\0'.
4790         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
4791         vars use DECL_RTL with resetting it back to NULL afterwards.
4792         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
4793         rtx_equal_p instead of asserting it is a SYMBOL_REF.
4794         (value_format): For dw_val_class_addr only use DW_FORM_addr if
4795         the attribute type allows it, otherwise use DW_FORM_dataN.
4796         (mem_loc_descriptor): Handle CONST_STRING.
4797         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
4798         Handle MEM with CONST_STRING address using add_AT_string.
4799         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
4800         CONST_STRING for const arrays initialized with a string literal.
4801         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
4802         (dwarf2out_finish): Call resolve_addr.
4803
4804 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
4805             Maxim Kuvyrkov  <maxim@codesourcery.com>
4806
4807         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
4808
4809 2009-10-02  Nick Clifton  <nickc@redhat.com>
4810
4811         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
4812         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
4813
4814 2009-10-01  Jan Hubicka  <jh@suse.cz>
4815
4816         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
4817         (cgraph_create_virtual_clone): Just pass redirect_callers
4818         around.
4819         * cgraph.h (cgraph_clone_node): Update prototype.
4820         * ipa-pure-const.c (self_recursive_p): New function.
4821         (propagate): Use it.
4822         * ipa-inline.c (cgraph_clone_inlined_nodes,
4823         cgraph_decide_recursive_inlining): Update.
4824
4825 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
4826
4827         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
4828         instructions for TARGET_OCTEON.
4829
4830 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4831
4832         * config/arm/arm.c (arm_override_options): Turn off
4833         flag_dwarf2_cfi_asm for AAPCS variants.
4834
4835 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4836
4837         PR middle-end/12392
4838         * tree-sra.c (convert_callers): Do not call
4839         compute_inline_parameters on one caller more than once.
4840
4841 2009-10-01  Nick Clifton  <nickc@redhat.com>
4842
4843         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
4844         an empty string if not already defined.
4845
4846 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4847
4848         PR bootstrap/41395
4849         * tree-sra.c (is_va_list_type): New function.
4850         (find_var_candidates): Call is_va_list_type.
4851         (find_param_candidates): Check that the type or the type pointed
4852         to are not va_list types.
4853
4854 2009-10-01  Martin Jambor  <mjambor@suse.cz>
4855
4856         PR c++/41503
4857         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
4858         DECL_ARTIFICIAL (param_decl) is true.
4859
4860 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
4861
4862         * tree.h (tree_decl_common::lang_flag_8): New.
4863         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
4864         keyword.
4865         * c-common.h (RID_CONSTEXPR): New.
4866
4867 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4868
4869         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
4870         Use ref-all pointers.
4871         (alpha_gimplify_va_arg): Ditto.
4872
4873 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
4874
4875         PR target/41279
4876         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
4877         before insn counting loop now that BB_END (bb) is counted.  Ensure
4878         the return value isn't zero.
4879
4880 2009-09-30  Nick Clifton  <nickc@redhat.com>
4881
4882         * config.gcc (sh-symbianelf): Replace definition of extra_objs
4883         with separate definitions of c_target_objs and cxx_target_objs.
4884         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
4885         and symbian-base.o.
4886         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
4887         sh_symbian_import_export_class.
4888         * config/sh/sh-protos.h: Fix names of exported symbian functions.
4889         * config/sh/symbian.c: Delete, moving code into...
4890         * config/sh/symbian-base.c: ... here
4891         * config/sh/symbian-c.c: ... and here
4892         * config/sh/symbian-cxx.c: ... and here.
4893
4894 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
4895
4896         PR target/22093
4897         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
4898         of plus RTX into register.
4899
4900 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4901
4902         * doc/install.texi: Linguistic and markup fixes.
4903         (Configuration) <--disable-cpp>: Remove description.
4904         <--enable-maintainer-mode>: Autotools files are affected, too.
4905         <--with-sysroot>: Improve description.
4906         (Building): Bump required GNU make version.
4907
4908 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
4909
4910         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
4911         (x86_64-*-*): Ditto.
4912
4913         * config/i386/fma4intrin.h: New file, provide common x86 compiler
4914         intrinisics for FMA4.
4915         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
4916         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
4917         Add FMA4 check and fma4intrin.h.
4918         * config/i386/i386-c.c(ix86_target_macros_internal): Check
4919         ISA_FLAG for FMA4.
4920         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
4921         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
4922         constant for FMA4 support.
4923         (UNSPEC_FMA4_FMADDSUB): Ditto.
4924         (UNSPEC_FMA4_FMSUBADD): Ditto.
4925         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
4926         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
4927         (ix86_expand_fma4_multiple_memory): Ditto.
4928         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
4929         (OPTION_MASK_ISA_FMA4_UNSET): New.
4930         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
4931         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
4932         (ix86_handle_option): Handle -mfma4.
4933         (isa_opts): Handle -mfma4.
4934         (enum pta_flags): Add PTA_FMA4.
4935         (override_options): Add FMA4 support.
4936         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
4937         (IX86_BUILTIN_VFMADDSD): Ditto.
4938         (IX86_BUILTIN_VFMADDPS): Ditto.
4939         (IX86_BUILTIN_VFMADDPD): Ditto.
4940         (IX86_BUILTIN_VFMSUBSS): Ditto.
4941         (IX86_BUILTIN_VFMSUBSD): Ditto.
4942         (IX86_BUILTIN_VFMSUBPS): Ditto.
4943         (IX86_BUILTIN_VFMSUBPD): Ditto.
4944         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
4945         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
4946         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
4947         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
4948         (IX86_BUILTIN_VFNMADDSS): Ditto.
4949         (IX86_BUILTIN_VFNMADDSD): Ditto.
4950         (IX86_BUILTIN_VFNMADDPS): Ditto.
4951         (IX86_BUILTIN_VFNMADDPD): Ditto.
4952         (IX86_BUILTIN_VFNMSUBSS): Ditto.
4953         (IX86_BUILTIN_VFNMSUBSD): Ditto.
4954         (IX86_BUILTIN_VFNMSUBPS): Ditto.
4955         (IX86_BUILTIN_VFNMSUBPD): Ditto.
4956         (IX86_BUILTIN_VFMADDPS256): Ditto.
4957         (IX86_BUILTIN_VFMADDPD256): Ditto.
4958         (IX86_BUILTIN_VFMSUBPS256): Ditto.
4959         (IX86_BUILTIN_VFMSUBPD256): Ditto.
4960         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
4961         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
4962         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
4963         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
4964         (IX86_BUILTIN_VFNMADDPS256): Ditto.
4965         (IX86_BUILTIN_VFNMADDPD256): Ditto.
4966         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
4967         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
4968         (enum multi_arg_type): New enum for describing the various FMA4
4969         intrinsic argument types.
4970         (bdesc_multi_arg): New table for FMA4 intrinsics.
4971         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
4972         (ix86_expand_multi_arg_builtin): New function for creating FMA4
4973         intrinsics.
4974         (ix86_expand_builtin): Add FMA4 intrinsic support.
4975         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
4976         operand instructions.
4977         (ix86_expand_fma4_multiple_memory): New function to split the
4978         second memory reference from FMA4 instructions.
4979         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
4980         (ssemodesuffixf2s): Ditto.
4981         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
4982         instructions.
4983         (fma4_fmsub<mode>4): Ditto.
4984         (fma4_fnmadd<mode>4): Ditto.
4985         (fma4_fnmsub<mode>4): Ditto.
4986         (fma4_vmfmadd<mode>4): Ditto.
4987         (fma4_vmfmsub<mode>4): Ditto.
4988         (fma4_vmfnmadd<mode>4): Ditto.
4989         (fma4_vmfnmsub<mode>4): Ditto.
4990         (fma4_fmadd<mode>4256): Ditto.
4991         (fma4_fmsub<mode>4256): Ditto.
4992         (fma4_fnmadd<mode>4256): Ditto.
4993         (fma4_fnmsub<mode>4256): Ditto.
4994         (fma4_fmaddsubv8sf4): Ditto.
4995         (fma4_fmaddsubv4sf4): Ditto.
4996         (fma4_fmaddsubv4df4): Ditto.
4997         (fma4_fmaddsubv2df4): Ditto.
4998         (fma4_fmsubaddv8sf4): Ditto.
4999         (fma4_fmsubaddv4sf4): Ditto.
5000         (fma4_fmsubaddv4df4): Ditto.
5001         (fma4_fmsubaddv2df4): Ditto.
5002         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
5003         instructions for intrinsics.
5004         (fma4i_fmsub<mode>4): Ditto.
5005         (fma4i_fnmadd<mode>4): Ditto.
5006         (fma4i_fnmsub<mode>4): Ditto.
5007         (fma4i_vmfmadd<mode>4): Ditto.
5008         (fma4i_vmfmsub<mode>4): Ditto.
5009         (fma4i_vmfnmadd<mode>4): Ditto.
5010         (fma4i_vmfnmsub<mode>4): Ditto.
5011         (fma4i_fmadd<mode>4256): Ditto.
5012         (fma4i_fmsub<mode>4256): Ditto.
5013         (fma4i_fnmadd<mode>4256): Ditto.
5014         (fma4i_fnmsub<mode>4256): Ditto.
5015         (fma4i_fmaddsubv8sf4): Ditto.
5016         (fma4i_fmaddsubv4sf4): Ditto.
5017         (fma4i_fmaddsubv4df4): Ditto.
5018         (fma4i_fmaddsubv2df4): Ditto.
5019         (fma4i_fmsubaddv8sf4): Ditto.
5020         (fma4i_fmsubaddv4sf4): Ditto.
5021         (fma4i_fmsubaddv4df4): Ditto.
5022         (fma4i_fmsubaddv2df4): Ditto.
5023
5024         * doc/invoke.texi (-mfma4): Add documentation.
5025         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
5026
5027 2009-09-29  Richard Henderson  <rth@redhat.com>
5028
5029         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
5030         an edge to the new destination block.
5031
5032 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5033
5034         PR target/41393
5035         * pa.c (hppa_profile_hook): Use
5036         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
5037
5038 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
5039             Alexander Monakov  <amonakov@ispras.ru>
5040
5041         PR target/41365
5042         * config/ia64/predicates.md (not_postinc_destination_operand): New.
5043         (not_postinc_memory_operand): New.
5044         (not_postinc_move_operand): New.
5045         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
5046         (*cmovsi_internal): Ditto.
5047
5048 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
5049
5050         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
5051         restrict issue_rate in first pass when scheduling for register
5052         pressure.
5053
5054 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
5055             Rafael Avila de Espindola  <espindola@google.com>
5056
5057         * gengtype.c (plugin_output): New.
5058         (get_output_file_with_visibility): Return plugin_output for plugins.
5059         (main): Parse and use the -P option.
5060         * gty.texi: Update the command line format.
5061
5062 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
5063
5064         PR debug/41438
5065         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
5066         functions.
5067         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
5068         out if !const_ok_for_output.
5069
5070         PR debug/41474
5071         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
5072         case VAR_LOCATION>: Remove gcc_unreachable ().
5073
5074 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5075
5076         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
5077         (x86_64-*-*): Ditto.
5078         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
5079         back to smmintrin.h.
5080         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
5081         * config/i386/x86intrin.h: Remove SSE5.
5082         * config/i386/mmintrin-common.h: Delete file.
5083         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
5084
5085 2009-09-29  Richard Guenther  <rguenther@suse.de>
5086
5087         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
5088         resulting from stack temporaries on STRICT_ALIGNMENT targets.
5089
5090 2009-09-29  Nick Clifton  <nickc@redhat.com>
5091
5092         * function.c (current_function_name): If there is no current
5093         function just return "<none>".
5094
5095 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
5096
5097         * tree-pass.h (register_pass_info): New structure.
5098         (pass_positioning_ops): Move enum from gcc-plugin.h.
5099         (register_pass): New function.
5100         * gcc-plugin.h (plugin_pass): Delete structure.
5101         (pass_positioning_ops): Delete enum.
5102         * plugin.c (regsiter_pass): Delete function.
5103         (position_pass): Delete function.
5104         (added_pass_nodes): Delete variable.
5105         (prev_added_pass_nodes): Delete variable.
5106         (pass_list_node): Delete structure.
5107         * passes.c (make_pass_instance): New function.
5108         (next_pass_1): Change to call make_pass_instance.
5109         (pass_list_node): Move structure from gcc-plugin.h.
5110         (added_pass_nodes): Move variable from plugin.c.
5111         (prev_added_pass_nodes): Move variable from plugin.c.
5112         (position_pass): New function.
5113         (register_pass): New function.
5114
5115 2009-09-28  Easwaran Raman  <eraman@google.com>
5116
5117         * ifcvt.c (noce_try_abs): Recognize pattern and call
5118         expand_one_cmpl_abs_nojump.
5119         * optabs.c (expand_one_cmpl_abs_nojump): New function.
5120         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
5121
5122 2009-09-28  Ian Lance Taylor  <iant@google.com>
5123
5124         PR middle-end/40500
5125         * c-opts.c (c_common_handle_option): Don't set
5126         warn_jump_misses_init for -Wall.
5127         * doc/invoke.texi (Warning Options): Update documentation.
5128
5129 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5130
5131         * Makefile.in ($(out_object_file)): Depend on
5132         gt-$(basename $(notdir $(out_file))).h.
5133
5134 2009-09-28  Richard Henderson  <rth@redhat.com>
5135
5136         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
5137         * except.c (gen_eh_region): Set it.
5138         (duplicate_eh_regions_1): Copy it.
5139         * tree-eh.c (lower_resx): Use it to determine which function
5140         to call to resume.
5141
5142         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
5143         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
5144         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
5145         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
5146         BUILT_IN_CXA_END_CLEANUP if necessary.
5147
5148         * c-common.c (c_define_builtins): Update call to
5149         build_common_builtin_nodes.
5150
5151 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5152
5153         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
5154
5155 2009-09-28  Michael Matz  <matz@suse.de>
5156
5157         * builtins.c (interclass_mathfn_icode): New helper.
5158         (expand_builtin_interclass_mathfn): Use it here, and split folding
5159         into ...
5160         (fold_builtin_interclass_mathfn): ... this new folder.
5161         (build_call_nofold_loc): New static helper.
5162         (build_call_nofold): New wrapper macro for above.
5163         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
5164         (expand_builtin_pow): Ditto.
5165         (expand_builtin_memset_args): Ditto.
5166         (expand_builtin_printf): Ditto.
5167         (expand_builtin_fprintf): Ditto.
5168         (expand_builtin_sprintf): Ditto.
5169         (expand_builtin_memory_chk): Ditto.
5170         (expand_builtin_mempcpy_args): Ditto and don't call folders.
5171         (expand_builtin_stpcpy): Ditto.
5172         (expand_builtin_strcmp): Ditto.
5173         (expand_builtin_strncmp): Ditto.
5174         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
5175         (expand_builtin_strcpy_args): Don't call folders.
5176         (expand_builtin_memcmp): Ditto.
5177         (expand_builtin_strncpy): Ditto, and use target.
5178         (expand_builtin_memcpy): Ditto.
5179         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
5180         expand_builtin_strpbrk, expand_builtin_memmove,
5181         expand_builtin_memmove_args, expand_builtin_bcopy,
5182         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
5183         expand_builtin_strspn, expand_builtin_strcspn,
5184         expand_builtin_fputs): Remove these.
5185         (expand_builtin): Don't call the above, change calls to other
5186         expanders that changed prototype.
5187         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5188         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5189         fold_builtin_interclass_mathfn.
5190         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5191         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5192
5193         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5194         * passes.c (init_optimization_passes): Move pass_fold_builtins
5195         after last phiopt pass.
5196         * tree-inline.c (fold_marked_statements): When folding builtins
5197         iterate over all instruction potentially generated.
5198         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5199         earlier.
5200         (fold_gimple_call): Use it to always fold calls (into potentially
5201         multiple instructions).
5202         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5203         calls into zero at this time.
5204         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5205         statements generated by builtin folding.
5206
5207 2009-09-28  Nick Clifton  <nickc@redhat.com>
5208
5209         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5210
5211 2009-09-28  Duncan Sands  <baldrick@free.fr>
5212
5213         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5214         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5215         (register_callback): Dispatch it.
5216         (invoke_plugin_callbacks): Incorporate in sanity check.
5217         * ggc.h (ggc_register_cache_tab): Add declaration.
5218         * ggc-common.c (ggc_register_root_tab): Simplify.
5219         (const_ggc_cache_tab_t): New typedef.
5220         (extra_cache_vec): New vector of dynamically added cache tables.
5221         (ggc_register_cache_tab): New function.
5222         (ggc_scan_cache_tab): New function.
5223         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5224         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5225
5226 2009-09-27  Richard Henderson  <rth@redhat.com>
5227
5228         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5229         which we remove __builtin_stack_restore.
5230
5231 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5232
5233         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5234         to test for GRD_INVARIANT.
5235         (simple_rhs_p): Anything that's function_invariant_p is fine.
5236
5237 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5238
5239         * gengtype.c (main): Use plunge_files instead of plugin_output.
5240
5241 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5242             Rafael Avila de Espindola  <espindola@google.com>
5243
5244         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5245         Don't print pch related info if it is false.
5246         (main): Don't print pch info in plugin mode.
5247
5248 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5249
5250         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5251         with dw_val_class_const_double.
5252         (struct dw_val_struct): Replace val_long_long with val_double and
5253         adjust for above change.
5254         (output_loc_operands): Likewise.
5255         (add_AT_long_long): Rename into...
5256         (add_AT_double): ...this.
5257         (print_die): Replace dw_val_class_long_long with
5258         dw_val_class_const_double and adjust.
5259         (attr_checksum): Likewise.
5260         (same_dw_val_p): Likewise.
5261         (size_of_die): Likewise.
5262         (value_format): Likewise.
5263         (output_die): Likewise.
5264         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5265         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5266         instead of add_AT_long_long.
5267         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5268         value with the precision of its type.
5269
5270 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5271
5272         PR c/41476
5273         * c-typeck.c (build_conditional_expr): Use the readonly and
5274         volatile flags of the operand types, not of the operands itself.
5275
5276 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5277
5278         * collect2.c (main): Look for -brtl before adding libraries.
5279
5280 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5281
5282         * config.gcc: Update OpenBSD targets.
5283         * config/openbsd-stdint.h: New file.
5284         * config/openbsd-libpthread.h: New file.
5285         * config/openbsd.h: Update and break out LIB_SPEC definition.
5286         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5287         * config/i386/openbsdelf.h: Correct types.
5288         * config/m68k/openbsd.h: Likewise.
5289         * config/mips/openbsd.h: Likewise.
5290         * config/vax/openbsd.h: Likewise.
5291
5292 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5293
5294         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5295         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5296         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5297         of the length and zero.
5298
5299 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5300
5301         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5302         (FLAGS_H): Add options.h $(REAL_H).
5303         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5304         (TREE_VECTORIZER_H): New.
5305         (EBITMAP_H): Renamed from EBIMAP_H.
5306         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5307         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5308         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5309         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5310         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5311         (graphite-clast-to-gimple.o, graphite-dependences.o)
5312         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5313         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5314         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5315         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5316         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5317         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5318         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5319         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5320         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5321         updated and fixed as per above changes and per
5322         check_makefile_deps.sh output.
5323
5324         PR bootstrap/40928
5325         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5326         * configure: Regenerate.
5327
5328 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5329
5330         * doc/install.texi: Update minimum MPC version to 0.7.
5331
5332 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5333
5334         * doc/install.texi (Binaries): Remove reference to the binary
5335         distribution CD-ROM from the FSF.
5336
5337 2009-09-26  Michael Matz  <matz@suse.de>
5338
5339         PR lto/40758
5340         PR middle-end/41470
5341         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5342         that are mentioned in the body.
5343
5344 2009-09-26  Michael Matz  <matz@suse.de>
5345
5346         PR tree-optimization/41454
5347         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5348         (tree_ssa_dominator_optimize): Don't allocate and free it.
5349         (dom_opt_leave_block): Don't iterate over it.
5350         (eliminate_redundant_computations): Don't return a value.
5351         (cprop_operand, cprop_into_stmt): Ditto.
5352         (optimize_stmt): Don't defer updating stmts.
5353
5354 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5355
5356         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5357         generic_parameter_die, template_parameter_pack_die,
5358         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5359         renaming DW_TAG_formal_parameter_pack and
5360         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5361         and DW_TAG_GNU_template_parameter_pack.
5362
5363 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5364
5365         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5366         * config/v850/v850.c (v850_function_value): New function.
5367         (TARGET_FUNCTION_VALUE): Define.
5368
5369 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5370
5371         * tree-vect-stmts.c (vectorizable_call): Call
5372         mark_symbols_for_renaming after vect_finish_stmt_generation.
5373
5374         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5375         to loc_descriptor_from_tree.
5376         (add_location_or_const_value_attribute): Pass 0 instead of 2
5377         for decl_by_reference_p decls.
5378
5379 2009-09-25  Richard Guenther  <rguenther@suse.de>
5380
5381         PR middle-end/41463
5382         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5383         arrays again.
5384
5385 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5386
5387         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5388         after `power7'.
5389
5390 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5391
5392         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5393         form of instruction.
5394
5395 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5396
5397         PR middle-end/41435
5398         * fold-const.c (const_binop): Handle complex int division.
5399         * tree-complex.c (expand_complex_div_straight,
5400         expand_complex_div_wide): Update comments.
5401
5402 2009-09-24  DJ Delorie  <dj@redhat.com>
5403
5404         PR target/41456
5405         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5406         (reg_class): Likewise.
5407         (REG_CLASS_NAMES): Likewise.
5408         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5409         (m32c_override_options): Disable -fivopts for M32C.
5410
5411 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5412
5413         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5414         Delete VSX load/store with update support.
5415         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5416         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5417         (vsx_movti): Ditto.
5418         (VSX_U): Delete.
5419         (VSbit): Ditto.
5420         (VStype_load_update): Ditto.
5421         (VStype_store_update): Ditto.
5422         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5423         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5424
5425         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5426         load/store with update builtins.
5427
5428 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5429
5430         * libgcc2.c (L_trampoline): Prototype for getpagesize
5431         and mprotect in WINNT case.
5432
5433 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5434
5435         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5436         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5437         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5438         'outgoing' argument.
5439         (TARGET_FUNCTION_VALUE): Define.
5440
5441 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5442
5443         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5444
5445 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5446
5447         PR bootstrap/41405
5448         * common.opt: Initialize dwarf_strict to -1.
5449         * toplev.c (process_options): Catch unset dwarf_strict
5450         and set to 0 for all targets not overriding.
5451         * config/darwin.c (darwin_override_options): Catch unset
5452         dwarf_strict and override to 1.
5453
5454 2009-09-24  Jeff Law  <law@redhat.com>
5455
5456         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5457
5458 2009-09-24  Richard Guenther  <rguenther@suse.de>
5459
5460         PR tree-optimization/36143
5461         PR tree-optimization/38747
5462         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5463         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5464
5465 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5466
5467         PR bootstrap/41457
5468         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5469         return false instead of gcc_unreachable ().  For CONST return the
5470         value returned by recursive call instead of always returning true.
5471         (tree_add_const_value_attribute): Return the value returned by
5472         add_const_value_attribute instead of always returning true if rtl
5473         is non-NULL.
5474
5475 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5476
5477         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5478
5479 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5480
5481         * cgraphunit.c (cgraph_lower_function): Revert last change.
5482         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5483         instead of DECL_NO_STATIC_CHAIN.
5484         * tree-cfg.c (verify_gimple_call): Likewise.
5485         * tree-nested.c (get_chain_decl, get_chain_field,
5486         convert_tramp_reference_op, convert_gimple_call): Likewise.
5487         (convert_all_function_calls): Likewise.  Always set or clear
5488         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5489         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5490         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5491         if nested.
5492         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5493         DECL_NO_STATIC_CHAIN.
5494         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5495         instead of DECL_NO_STATIC_CHAIN.
5496         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5497         decl_function_context.
5498         * varasm.c (initializer_constant_valid_p): Likewise.
5499         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5500         (DECL_STATIC_CHAIN): ... this.
5501         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5502         instead of DECL_NO_STATIC_CHAIN.
5503
5504 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5505             Rafael Avila de Espindola  <espindola@google.com>
5506
5507         * gengtype.c (nb_plugin_files): Make it unsigned to match
5508         num_gt_files. Adjust other variables to avoid warnings.
5509         (main): Allocate an all zero lang_bitmap before each plugin file name
5510         to match regular file names.
5511
5512 2009-09-23  Richard Henderson  <rth@redhat.com>
5513
5514         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5515         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5516         static chain passed in memory.
5517         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5518         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5519         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5520         STATIC_CHAIN_REGNUM defined.
5521
5522         * config/picochip/picochip-protos.h: s/class/klass/.
5523         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5524         (picochip_static_chain): New.
5525         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5526         (STATIC_CHAIN_INCOMING): Remove.
5527
5528         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5529         (xtensa_static_chain): New.
5530         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5531         (STATIC_CHAIN_INCOMING): Remove.
5532
5533 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5534
5535         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5536         * config/pa/pa-protos.h (function_value): Remove.
5537         * config/pa/pa.c (pa_function_value): Rename from function_value.
5538         Make static, add 'outgoing' argument.
5539         (TARGET_FUNCTION_VALUE): Define.
5540
5541 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5542
5543         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5544         instead of cfun->machine->is_leaf.
5545         * config/avr/avr.h (machine_function): Remove is_leaf field.
5546
5547 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5548
5549         PR debug/41439
5550         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5551         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5552         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5553         the same size, prefer DW_OP_stack_value.
5554         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5555         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5556
5557 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5558
5559         PR debug/41353
5560         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5561
5562 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5563
5564         PR debug/41248
5565         * cfgexpand.c (convert_debug_memory_address): New.
5566         (expand_debug_expr): Convert base address and offset to the same
5567         mode.  Use it to convert addresses to other modes.  Accept
5568         ptr_mode addresses.
5569
5570 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5571
5572         PR debug/41065
5573         * function.h (types_used_by_vars_hash): Declare new hash table.
5574         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5575         equality and hash function for the hash table.
5576         (types_used_by_cur_var_decl): Declare a new global chained list.
5577         (types_used_by_var_decl_insert): Declare new function.
5578         * function.c (types_used_by_vars_hash): Define the hashtable ...
5579         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5580         its equality and hash functions.
5581         (hash_types_used_by_vars_entry): New hash helper.
5582         (types_used_by_cur_var_decl): Define the global chained list.
5583         (used_types_insert): Update the list of types used by the global
5584         variable being parsed.
5585         (types_used_by_var_decl_insert): Define new function.
5586         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5587         * c-common.c (record_types_used_by_current_var_decl): ... new
5588         function.
5589         * c-decl.c (finish_decl): Record the types used by the global
5590         variable declaration we've just parsed.
5591         * dwarf2out.c (premark_used_types): Insert a new line between
5592         comment and function.
5593         (premark_used_types_helper): Fix comment.
5594         (premark_types_used_by_global_vars_helper,
5595         premark_types_used_by_global_vars): New functions.
5596         (prune_unused_types): Do not prune types used by global variables.
5597
5598 2009-09-23  Richard Guenther  <rguenther@suse.de>
5599
5600         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5601         produced for bigendian targets with promoted subregs.
5602
5603 2009-09-23  Richard Guenther  <rguenther@suse.de>
5604
5605         * value-prof.c (gimple_ic): Purge old EH edges only after building
5606         the new ones.
5607
5608 2009-09-23  Nick Clifton  <nickc@redhat.com>
5609
5610         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5611
5612 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5613
5614         PR bootstrap/41405
5615         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
5616
5617         PR bootstrap/41436
5618         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
5619         on non-nested functions.
5620
5621 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5622             Jan Hubicka  <jh@suse.cz>
5623
5624         * dwarf2out.c (loc_list_plus_const): Only define if
5625         DWARF2_DEBUGGING_INFO.
5626         (address_of_int_loc_descriptor): Likewise.
5627
5628         PR debug/41411
5629         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
5630
5631 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
5632
5633         PR c/39779
5634         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
5635         constant is more than zero.
5636
5637 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
5638
5639         PR target/40473
5640         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
5641         call final to emit non-scheduled prologue, instead insert at entry.
5642
5643 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5644             Joseph S. Myers  <joseph@codesourcery.com>
5645
5646         * doc/install.texi (*-*-freebsd*): Add proper format codes.
5647
5648 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5649             Rafael Avila de Espindola  <espindola@google.com>
5650
5651         * gengtype.c (is_file_equal): New function.
5652         (close_output_files): Use is_file_equal. Free of->buf.
5653
5654 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
5655             Rafael Avila de Espindola  <espindola@google.com>
5656
5657         * gengtype.c (write_types, write_local): Add the output_header
5658         argument. Update all callers.
5659
5660 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
5661
5662         * dwarf2out.c (template_parameter_pack_die,
5663         gen_formal_parameter_pack_die ): New functions.
5664         (make_ith_pack_parameter_name): Remove this function.
5665         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
5666         DW_TAG_formal_parameter_pack.
5667         (gen_generic_params_dies): Represent each template parameter pack
5668         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
5669         represented by usual DW_TAG_template_*_parameter DIEs that are
5670         children of the DW_TAG_template_parameter_pack element DIE.
5671         (generic_parameter_die): This doesn't deal with parameter pack
5672         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
5673         of parameter pack DIEs.
5674         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
5675         in certain cases, e.g. for pack elements.
5676         (gen_formal_types_die, gen_decl_die): Adjust usage of
5677         gen_formal_parameter_die.
5678         (gen_subprogram_die): Represent each function parameter pack by a
5679         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
5680         represented by usual DW_TAG_formal_parameter DIEs that are children
5681         of the DW_TAG_formal_parameter_pack DIE. Remove references to
5682         ____builtin_va_alist decls as no part of the compiler uses those
5683         anymore.
5684         * langhooks.h (struct lang_hooks_for_decls): Add
5685         function_parm_expanded_from_pack_p, get_generic_function_decl
5686         and function_parameter_pack_p hooks.  Fix comment for
5687         get_innermost_generic_parms hook.
5688         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
5689         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
5690         macros and use them to initialize lang_hook.
5691
5692 2009-09-22  Richard Henderson  <rth@redhat.com>
5693
5694         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
5695         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
5696         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
5697         on TRAMPOLINE_TEMPLATE.
5698         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
5699         TRAMPOLINE_ADJUST_ADDRESS.
5700         * targhooks.c (default_asm_trampoline_template): Remove.
5701         (default_trampoline_adjust_address): Remove.
5702         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
5703         * targhooks.h: Update decls.
5704
5705 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5706
5707         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
5708         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
5709         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
5710
5711 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
5712
5713         PR debug/41295
5714         * reload1.c (reload): Reset debug insns with pseudos without
5715         equivalences.
5716
5717 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
5718
5719         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
5720         unconditional true for decimal float modes.
5721         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
5722         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
5723
5724 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
5725
5726         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
5727         Enable a new case for __FreeBSD__ >= 7.
5728         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
5729         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
5730         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
5731         and USE_LD_AS_NEEDED.
5732
5733         * doc/install.texi (*-*-freebsd*): Update target information.
5734
5735 2009-09-22  Richard Guenther  <rguenther@suse.de>
5736
5737         PR middle-end/41395
5738         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
5739         arrays really properly.
5740
5741 2009-09-22  Richard Henderson  <rth@redhat.com>
5742
5743         PR target/41246
5744         * target.h (struct gcc_target): Add asm_out.trampoline_template,
5745         calls.static_chain, calls.trampoline_init,
5746         calls.trampoline_adjust_address.
5747         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5748         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
5749         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5750         * builtins.c (expand_builtin_setjmp_receiver): Use
5751         targetm.calls.static_chain; only clobber registers.
5752         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
5753         set up memory attributes properly for the trampoline block.
5754         (expand_builtin_adjust_trampoline): Use
5755         targetm.calls.trampoline_adjust_address.
5756         * calls.c (prepare_call_address): Add fndecl argument.  Use
5757         targetm.calls.static_chain.
5758         * df-scan.c (df_need_static_chain_reg): Remove.
5759         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
5760         consolodate static chain handling.
5761         * doc/tm.texi: Document new hooks.
5762         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
5763         (init_emit_regs): Don't initialize them.
5764         * expr.h (prepare_call_address): Update decl.
5765         * final.c (profile_function): Use targetm.calls.static_chain.
5766         * function.c (expand_function_start): Likewise.
5767         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
5768         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
5769         only clobber registers.
5770         * targhooks.c (default_static_chain): New.
5771         (default_asm_trampoline_template, default_trampoline_init): New.
5772         (default_trampoline_adjust_address): New.
5773         * targhooks.h: Declare them.
5774         * varasm.c (assemble_trampoline_template): Use
5775         targetm.asm_out.trampoline_template.  Make the memory block const
5776         and set its size.
5777
5778         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
5779         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
5780         differences into the TARGET_ABI_OPEN_VMS code block.
5781         (TARGET_TRAMPOLINE_INIT): New.
5782         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
5783         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
5784         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
5785         (INITIALIZE_TRAMPOLINE): Remove.
5786
5787         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
5788         (TRAMPOLINE_TEMPLATE): Merge with ...
5789         (INITIALIZE_TRAMPOLINE): ... this and move ...
5790         * config/arc/arc.c (arc_trampoline_init): ... here.
5791         (TARGET_TRAMPOLINE_INIT): New.
5792
5793         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5794         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5795         (arm_asm_trampoline_template): New.
5796         (arm_trampoline_init, arm_trampoline_adjust_address): New.
5797         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
5798         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
5799         code to arm_asm_trampoline_template.
5800         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
5801         arm_trampoline_adjust_address.
5802         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
5803         adjust for target hook parameters.
5804
5805         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
5806         Remove.
5807
5808         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
5809         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
5810         (bfin_trampoline_init): Rename from initialize_trampoline;
5811         make static; update for target hook parameters.
5812         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5813         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
5814         bfin_asm_trampoline_template.
5815         (INITIALIZE_TRAMPOLINE): Remove.
5816
5817         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5818         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
5819         cris_trampoline_init): New.
5820         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
5821         cris_asm_trampoline_template.
5822         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
5823         adjust for target hook parameters.
5824
5825         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
5826
5827         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5828         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
5829         fr30_trampoline_init): New.
5830         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
5831         fr30_asm_trampoline_template.
5832         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
5833         adjust for target hook parameters.
5834
5835         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
5836         (frv_trampoline_init): Rename from frv_initialize_trampoline;
5837         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
5838         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
5839         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
5840
5841         * config/h8300/h8300.c (h8300_trampoline_init): New.
5842         (TARGET_TRAMPOLINE_INIT): New.
5843         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
5844         to h8300_trampoline_init and adjust for hook parameters.
5845
5846         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
5847         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
5848         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
5849         make static; adjust for hook parameters.
5850         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
5851
5852         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5853         (TARGET_TRAMPOLINE_INIT): New.
5854         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
5855         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
5856         iq2000_asm_trampoline_template.
5857         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
5858         (TRAMPOLINE_CODE_SIZE): New.
5859         (TRAMPOLINE_SIZE): Use it.
5860         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
5861
5862         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
5863         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
5864         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
5865         adjust for hook parameters.
5866         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
5867
5868         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
5869         (m32r_trampoline_init): New.
5870         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
5871         m32r_trampoline_init.
5872
5873         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
5874         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
5875         make static; update for hook parameters.
5876         * config/m68hc11/m68hc11-protos.h: Update.
5877         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
5878
5879         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5880         (TARGET_TRAMPOLINE_INIT): New.
5881         (mcore_function_value): Fix typo.
5882         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
5883         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
5884         to mcore_asm_trampoline_template.
5885         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
5886
5887         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
5888         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
5889         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
5890         update for hook parameters.
5891         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
5892
5893         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5894         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5895         mips_trampoline_init): New.
5896         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
5897         mips_asm_trampoline_template.
5898         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
5899         update for hook parameters.
5900
5901         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5902         (TARGET_TRAMPOLINE_INIT): New.
5903         (mmix_trampoline_size): Remove.
5904         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
5905         make static.  Remove out-of-date tetra vs octa comment.
5906         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
5907         make static; update for hook parameters.
5908         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
5909         (INITIALIZE_TRAMPOLINE): Remove.
5910         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
5911         (TRAMPOLINE_ALIGNMENT): New.
5912         * gcc/config/mmix/mmix-protos.h: Update.
5913
5914         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5915         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5916         mn10300_trampoline_init): New.
5917         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
5918         mn10300_asm_trampoline_template.
5919         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
5920
5921         * config/moxie/moxie.c (moxie_static_chain,
5922         moxie_asm_trampoline_template, moxie_trampoline_init,
5923         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
5924         TARGET_TRAMPOLINE_INIT): New.
5925         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
5926         moxie_trampoline_init.
5927         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
5928         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5929
5930         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
5931         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
5932         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
5933         pa_trampoline_adjust_address): New.
5934         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
5935         pa_asm_trampoline_template.
5936         (TRAMPOLINE_ALIGNMENT): New.
5937         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
5938         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
5939         adjust for hook parameters.
5940         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
5941
5942         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
5943         (TARGET_TRAMPOLINE_INIT): New.
5944         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
5945         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
5946
5947         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
5948
5949         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
5950         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
5951         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
5952         make static; adjust parameters for the hook.
5953         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
5954
5955         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
5956         s390_trampoline_template; make static.
5957         (s390_trampoline_init): Rename from s390_initialize_trampoline;
5958         make static; adjust for target hook.
5959         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
5960         * config/s390/s390-protos.h: Remove trampoline decls.
5961         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
5962         (TRAMPOLINE_TEMPLATE): Remove.
5963         (TRAMPOLINE_ALIGNMENT): New.
5964
5965         * config/score/score-protos.h (score_initialize_trampoline): Remove.
5966         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
5967         (TARGET_TRAMPOLINE_INIT): New.
5968         (score_asm_trampoline_template): New.
5969         (score_trampoline_init): Rename from score_initialize_trampoline;
5970         make static; adjust for hook parameters.
5971         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
5972         score[37]_asm_trampoline_template.
5973         (INITIALIZE_TRAMPOLINE): Remove.
5974         * config/score/score3.c (score3_asm_trampoline_template): New.
5975         (score3_trampoline_init): Rename from score3_initialize_trampoline;
5976         adjust for target hook.
5977         * config/score/score7.c (score7_asm_trampoline_template): New.
5978         (score7_trampoline_init): Rename from score7_initialize_trampoline;
5979         adjust for target hook.
5980         * config/score/score3.h, config/score/score7.h: Update.
5981
5982         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
5983         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
5984         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
5985         (sh_trampoline_init): Rename from sh_initialize_trampoline;
5986         make static; adjust for target hook parameters.
5987         (sh_trampoline_adjust_address): New.
5988         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
5989         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
5990
5991         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
5992         (sparc32_initialize_trampoline): Rename from
5993         sparc_initialize_trampoline; make static; replace tramp parameter
5994         with m_tramp and update memory accesses.
5995         (sparc64_initialize_trampoline): Similarly.
5996         (sparc_trampoline_init): New.
5997         * config/sparc/sparc-protos.h: Remove trampoline decls.
5998         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
5999         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
6000
6001         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
6002         (array_to_constant): Make ARR parameter const.
6003         (spu_trampoline_init): Rename from spu_initialize_trampoline;
6004         make static; update for hook parameters.
6005         * config/spu/spu-protos.h: Update decls.
6006         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
6007
6008         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
6009         from xstormy16_initialize_trampoline; make static; update for
6010         hook parameters.
6011         (TARGET_TRAMPOLINE_INIT): New.
6012         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
6013
6014         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6015         (TARGET_TRAMPOLINE_INIT): New.
6016         (v850_can_eliminate): Make static.
6017         (v850_asm_trampoline_template, v850_trampoline_init): New.
6018         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
6019         v850_asm_trampoline_template.
6020         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
6021         and adjust for target hook parameters.
6022
6023         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6024         (TARGET_TRAMPOLINE_INIT): New.
6025         (vax_asm_trampoline_template, vax_trampoline_init): New.
6026         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
6027         vax_asm_trampoline_template.
6028         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
6029
6030         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6031         (TARGET_TRAMPOLINE_INIT): New.
6032         (xtensa_asm_trampoline_template): Rename from
6033         xtensa_trampoline_template; make static.
6034         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
6035         make static; update for hook parameters.
6036         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
6037         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
6038         (INITIALIZE_TRAMPOLINE): Remove.
6039
6040         * config/i386/i386.c (ix86_function_regparm): Do not issue an
6041         error for nested functions with regparm=3.
6042         (ix86_compute_frame_layout): Adjust frame pointer offset for
6043         ix86_static_chain_on_stack.
6044         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
6045         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
6046         don't reset to UNITS_PER_WORD.
6047         (ix86_emit_leave): Adjust ix86_cfa_state.
6048         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
6049         (ix86_static_chain): New.
6050         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
6051         make static; update for target hook parameters; use ix86_static_chain.
6052         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6053         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
6054         (INITIALIZE_TRAMPOLINE): Remove.
6055         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
6056         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
6057         to the end.  Add static_chain_on_stack.
6058         (ix86_static_chain_on_stack): New.
6059
6060         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
6061         (m68k_output_mi_thunk): Don't use static_chain_rtx.
6062         (m68k_trampoline_init): New.
6063         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
6064         m68k_trampoline_init and adjust for hook parameters.
6065         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
6066         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
6067
6068 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6069
6070         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
6071         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
6072
6073         * reload1.c (reload): Call wrap_constant when substituting
6074         reg for equiv inside of DEBUG_INSNs.
6075
6076         PR bootstrap/41405
6077         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
6078         add_call_src_coords_attributes, add_high_low_attributes,
6079         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
6080         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
6081         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
6082         when -gdwarf-2 -gstrict-dwarf.
6083         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
6084         -gdwarf-[23] -gstrict-dwarf.
6085         (address_of_int_loc_descriptor, loc_descriptor,
6086         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
6087         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
6088         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
6089
6090 2009-09-22  Richard Guenther  <rguenther@suse.de>
6091
6092         PR tree-optimization/41428
6093         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
6094         (ccp_finalize): Pass it to substitute_and_fold.
6095
6096 2009-09-22  Richard Guenther  <rguenther@suse.de>
6097
6098         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
6099         (substitute_and_fold): Adjust prototype.
6100         * tree-vrp.c (vrp_evaluate_conditional): Make static.
6101         (simplify_stmt_using_ranges): Likewise.
6102         (fold_predicate_in): Move here from tree-ssa-propagate.c.
6103         (vrp_fold_stmt): New function.
6104         (vrp_finalize): Pass it to substitute_and_fold.
6105         * tree-flow.h (vrp_evaluate_conditional): Remove.
6106         (simplify_stmt_using_ranges): Likewise.
6107         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
6108         * tree-ssa-copy.c (fini_copy_prop): Likewise.
6109         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
6110         member.
6111         (fold_predicate_in): Move to tree-vrp.c.
6112         (substitute_and_fold): Use the callback instead of calling into
6113         tree-vrp.c functions directly.
6114
6115 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6116
6117         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
6118         comparison warning on rs6000.
6119
6120         PR middle-end/41429
6121         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
6122         GIMPLE_EH_MUST_NOT_THROW cleanup.
6123         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6124
6125 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
6126
6127         PR middle-end/41260
6128         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
6129         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
6130         LIB_SPEC for darwin10 and later since it always uses the unwinder in
6131         libSystem which is derived from the gcc 4.2.1 unwinder.
6132
6133 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6134
6135         PR middle-end/41357
6136         * varasm.c (default_encode_section_info): Copy TLS model into
6137         sym_ref flags regardless of backend support for TLS, for all
6138         model types except TLS_MODEL_EMULATED.
6139
6140 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6141
6142         PR bootstrap/41404
6143         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
6144         we can handle it correctly.
6145
6146 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6147
6148         * doc/install.texi (os2): Remove section.
6149
6150 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6151
6152         * doc/standards.texi (Objective-C): Adjust two URLs.
6153
6154 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
6155
6156         * tree-tailcall.c (process_assignment): Don't check if a
6157         multiplication or an addition are already present.
6158         (find_tail_calls): Combine multiple additions and multiplications.
6159         (adjust_accumulator_values): Emit accumulators.
6160
6161 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
6162
6163         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
6164         xmm register restore.
6165
6166 2009-09-21  Jan Hubicka  <jh@suse.cz>
6167
6168         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
6169         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
6170         restore at the end.
6171
6172 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
6173
6174         * stor-layout.c (layout_type): Remove obsolete code.
6175
6176 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
6177
6178         PR middle-end/41395
6179         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
6180
6181 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6182
6183         PR middle-end/30789
6184         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6185         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6186         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6187         * fold-const.c (const_binop): Likewise.
6188         * real.h (do_mpc_arg2): Update prototype.
6189
6190 2009-09-20  Jan Hubicka  <jh@suse.cz>
6191
6192         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6193         (add_location_or_const_value_attribute): Rewrite using
6194         loc_list_from_tree.
6195         (tree_add_const_value_attribute): Return true if successful.
6196         (tree_add_const_value_attribute_for_decl): Likewise.
6197
6198         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6199         (loc_descriptor): ... here;
6200         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6201         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6202         pool items that was not marked for output.
6203         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6204         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6205         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6206         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6207         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6208         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6209         DW_OP_stack_value to get address of items that are not available
6210         as addresses.
6211         (dw_loc_list): Handle single element lists correctly.
6212
6213 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6214             Pascal Obry  <obry@adacore.com>
6215
6216         * unwind-dw2-fde.c (classify_object_over_fdes):
6217         Cast the constant 1 to _Unwind_Ptr.
6218         (add_fdes): Likewise.
6219         (linear_search_fdes): Likewise.
6220
6221 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6222
6223         * stor-layout.c (set_sizetype): Avoid useless type copy.
6224
6225 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6226
6227         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6228         feature check.
6229         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6230         * configure, config.in: Regenerate.
6231         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6232         DW_EH_PE_absptr.
6233         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6234         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6235         for global data if the output could be used in a shared library.
6236         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6237         to 0 if TARGET_WRITABLE_EH_FRAME.
6238
6239 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6240
6241         PR rtl-optimization/39886
6242         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6243         just when insn is equal to BB_END (bb).
6244
6245 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6246
6247         * config/mips/mips.opt (mrelax-pic-calls): New option.
6248         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6249         the file.
6250         (mips_unspec_call): Change "unspec_call" expander into this.
6251         (mips_strip_unspec_call): New function.
6252         (mips_got_load): Call mips_unspec_call instead of
6253         gen_unspec_call<mode>.
6254         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6255         MIPS_CALL.
6256         (mips_cfg_in_reorg): New function.
6257         (mips16_lay_out_constants): Use it to decide whether to call
6258         CFG-aware insn splitting.
6259         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6260         mips_reorg.  Move DF set-up code from here ...
6261         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6262         from here.
6263         (mips_reorg): Call mips_df_reorg instead of
6264         r10k_insert_cache_barriers.  Move CFG set-up code here from
6265         r10k_insert_cache_barriers.
6266         (mips_call_expr_from_insn): New function.
6267         (mips_pic_call_symbol_from_set): Likewise.
6268         (mips_find_pic_call_symbol): Likewise.
6269         (mips_annotate_pic_call_expr): Likewise.
6270         (mips_get_pic_call_symbol): Likewise.
6271         (mips_annotate_pic_calls): Likewise.
6272         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6273         calls are used.
6274         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6275         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6276         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6277         directive.
6278         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6279         (unspec_call<mode>): Remove it.
6280         (sibcall_internal, sibcall_value_internal,
6281         sibcall_value_multiple_internal, call_internal, call_split,
6282         call_value_internal, call_value_split,
6283         call_value_multiple_internal, call_value_multiple_split): Pass
6284         SIZE_OPNO to MIPS_CALL.
6285         (call_internal_direct, call_direct_split,
6286         call_value_internal_direct, call_value_direct_split): Pass -1 as
6287         SIZE_OPNO to MIPS_CALL.
6288         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6289         * configure: Regenerate.
6290         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6291         and -mno-relax-pic-calls.
6292         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6293
6294 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6295
6296         PR bootstrap/35619
6297         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6298         in the directory this rule is called from, rather than the
6299         toplevel 'gcc' directory, to fix in-tree build.
6300
6301 2009-09-19  Chris Demetriou  <cgd@google.com>
6302
6303         PR preprocessor/28435:
6304         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6305         to cpplib that the preprocessor output is needed.
6306
6307 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6308
6309         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6310         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6311         *return_and_restore_fpregs_<mode>,
6312         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6313
6314         PR bootstrap/41397
6315         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6316         instead of assuming it has always a REG inside of it.
6317
6318 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6319
6320         * config/freebsd.h: Update comment on types.
6321         (WINT_TYPE): Define.
6322
6323 2009-09-18  Jason Merrill  <jason@redhat.com>
6324
6325         * c.opt: Add -fno-deduce-init-list.
6326
6327 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6328
6329         * value-prof.c (interesting_stringop_to_profile_p): Added output
6330         argument to indicate which parameter is the size parameter.
6331         * value-prof.c (gimple_stringop_fixed_value): Use
6332         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6333         * value-prof.c (gimple_stringops_transform): Update call sites to
6334         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6335
6336 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6337
6338         PR target/38288
6339         From David Binderman <dcb314@hotmail.com>:
6340         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6341         local variable f.  Remove stale comments.
6342         (ix86_compute_frame_layout): Remove useless local variable total_size.
6343         Remove #if 0'd code.
6344         (legitimate_address_p): Remove useless local variables
6345         reason_rtx and reason.
6346         (ix86_split_copysign_const): Remove useless local variable op1.
6347         (scale_counter): Remove useless local variable piece_size_mask.
6348
6349 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6350
6351         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6352         output decl.
6353
6354 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6355
6356         PR target/40913
6357         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6358
6359 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6360
6361         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6362         TYPE_STUB_DECL.
6363
6364 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6365
6366         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6367         DW_OP_implicit_value even without dwarf_version 4.
6368
6369 2009-09-17  Jan Hubicka  <jh@suse.cz>
6370
6371         * dwarf2out.c: Include tree-pass.h and gimple.h.
6372         (loc_list_plus_const): New function.
6373         (loc_descriptor_from_tree_1): Rename to ...
6374         (loc_descriptor_from_tree): ... remove original.
6375         (loc_list_from_tree): New function.
6376         (add_AT_location_description): Accept location list.
6377         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6378         (concatn_mem_loc_descriptor): Remove.
6379         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6380         returning NULL.
6381         (secname_for_decl): Move up.
6382         (hidden_reference_p): New function; break out from ...
6383         (loc_by_refernece): ... here; move up.
6384         (dw_loc_list): New function.
6385         (single_element_loc_list): New function.
6386         (single_element_loc_list_p): New function.
6387         (add_loc_descr_to_each): New function.
6388         (add_loc_list): New function.
6389         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6390         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6391         add diagnostics why expansion failed.
6392         (add_location_or_const_value_attribute): Support location lists.
6393         (add_bound_info): Likewise.
6394         (descr_info_loc): Update call of loc_descriptor_from_tree.
6395         (gen_variable_die): Work on location lists.
6396         * final.c (pass_final): Add dump file.
6397         * Makefile.in (dwarf2out.o): Add new dependencies.
6398
6399 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6400
6401         PR c/41049
6402         * real.c decimal_from_integer, decimal_integer_string): New.
6403         (real_from_integer): Use them as special case for decimal float.
6404         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6405         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6406         Do not append zero after the decimal point in string to convert.
6407
6408 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6409
6410         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6411         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6412
6413 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6414
6415         * common.opt (fipa-sra): New switch.
6416         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6417         * timevar.def (TV_IPA_SRA): New timevar.
6418         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6419         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6420         * tree-sra.c: Include cgraph.c.
6421         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6422         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6423         and grp_not_necessarilly_dereferenced.
6424         (func_param_count): New variable.
6425         (encountered_apply_args): New variable.
6426         (bb_dereferences): New variable.
6427         (final_bbs): New variable.
6428         (no_accesses_representant): New variable.
6429         (no_accesses_p): New function.
6430         (dump_access): Dump the new fields.
6431         (sra_initialize): Set encountered_apply_args to false.
6432         (get_ssa_base_param): New function.
6433         (mark_parm_dereference): New function.
6434         (create_access): Caring for INIDRECT_REFs and different handling of
6435         varialble length accesses in early IPA SRA.  Store the stmt - a new
6436         parameter - to the new access.
6437         (build_access_from_expr_1): New parameter stmt, passed to
6438         create_access.  Handle INDIRECT_REFs.
6439         (build_access_from_expr): Pass the current statement to
6440         build_access_from_expr_1.
6441         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6442         passes.
6443         (build_accesses_from_assign): Pass the current statement to
6444         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6445         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6446         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6447         Fixup EH info if anythng was changed.
6448         (is_unused_scalar_param): New function.
6449         (ptr_parm_has_direct_uses): New function.
6450         (find_param_candidates): New function.
6451         (mark_maybe_modified): New function.
6452         (analyze_modified_params): New function.
6453         (propagate_dereference_distances): New function.
6454         (dump_dereferences_table): New function.
6455         (analyze_caller_dereference_legality): New function.
6456         (unmodified_by_ref_scalar_representative): New function.
6457         (splice_param_accesses): New function.
6458         (decide_one_param_reduction): New function.
6459         (enum ipa_splicing_result): New type.
6460         (splice_all_param_accesses): New function.
6461         (get_param_index): New function.
6462         (turn_representatives_into_adjustments): New function.
6463         (analyze_all_param_acesses): New function.
6464         (get_replaced_param_substitute): New function.
6465         (get_adjustment_for_base): New function.
6466         (replace_removed_params_ssa_names): New function.
6467         (sra_ipa_reset_debug_stmts): New function.
6468         (sra_ipa_modify_expr): New function.
6469         (sra_ipa_modify_assign): New function.
6470         (convert_callers): New function.
6471         (modify_function): New function.
6472         (ipa_sra_preliminary_function_checks): New function.
6473         (ipa_early_sra): New function.
6474         (ipa_early_sra_gate): New function.
6475         (pass_early_ipa_sra): New variable.
6476         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6477
6478 2009-09-17  Michael Matz  <matz@suse.de>
6479
6480         PR middle-end/41347
6481         * tree.c (build_type_attribute_qual_variant): Export.
6482         * tree.h (build_type_attribute_qual_variant): Declare.
6483         * tree-inline.c (remap_type_1): Use it to build variants with
6484         the original qualifiers and attributes.
6485
6486 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6487
6488         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6489         without a fallthrough edge.
6490
6491 2009-09-16  DJ Delorie  <dj@redhat.com>
6492
6493         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6494         chip and ignore the "fast_interrupt" attribute if so.
6495
6496 2009-09-16  Richard Henderson  <rth@redhat.com>
6497
6498         PR middle-end/41360
6499         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6500         barrier fix.
6501
6502 2009-09-16  Richard Henderson  <rth@redhat.com>
6503
6504         PR target/41246
6505         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6506         is set only if DECL_NO_STATIC_CHAIN is unset.
6507         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6508         (FOR_EACH_NEST_INFO): New.
6509         (walk_all_functions): Use it.
6510         (finalize_nesting_tree): Likewise.
6511         (unnest_nesting_tree): Likewise.
6512         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6513         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6514         (convert_gimple_call): Early out if gimple_call_chain already set.
6515         (convert_all_function_calls): Iterate until no new functions
6516         require a static chain.
6517         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6518         when building a trampoline.  Use dump_function_to_file instead
6519         of dump_function.
6520         (lower_nested_functions): Open dump_file.  Validate that decls
6521         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6522         bit reset by this pass.
6523
6524 2009-09-16  Michael Matz  <matz@suse.de>
6525
6526         PR fortran/41212
6527         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6528         shorten decl_common_unused.
6529         (DECL_RESTRICTED_P): New accessor.
6530         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6531         to disambiguate marked decls and restrict pointers.
6532
6533 2009-09-16  Richard Henderson  <rth@redhat.com>
6534
6535         PR middle-end/41360
6536         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6537
6538 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6539
6540         * integrate.c (set_block_abstract_flags): Call
6541         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6542
6543 2009-09-16  Richard Guenther  <rguenther@suse.de>
6544
6545         PR middle-end/34011
6546         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6547         as non-aliased.
6548
6549 2009-09-16  DJ Delorie  <dj@redhat.com>
6550             Kaz Kojima  <kkojima@gcc.gnu.org>
6551
6552         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6553         (sh_expand_prologue): Update calls to output_stack_adjust.
6554         (sh_expand_epilogue): Likewise.
6555
6556 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6557
6558         PR bootstrap/41349
6559         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6560         trying to limit the extent of searches in the insn stream.
6561
6562 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6563             Jakub Jelinek  <jakub@redhat.com>
6564
6565         PR target/41175
6566         PR target/40677
6567         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6568         problem.
6569         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6570         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6571         (rs6000_savres_strategy): Always save FP registers inline if the
6572         target doesn't support hardware double-precision.  Set the above
6573         bits in return value when needed.
6574         (rs6000_savres_routine_sym): Fix computation for cache selector.
6575         Mark the generated symbol as a function.  Rename exitp argument to
6576         lr.  Move code for determining the name of the symbol...
6577         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6578         getting the names right on AIX and 64-bit Linux.
6579         (savres_routine_name): New variable.
6580         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6581         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6582         on what the target routine uses as a base register.  If savep && lr
6583         describe saving of r0 into memory slot.
6584         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6585         line calls for AIX ABI.
6586         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6587         determine FP save/restore functions.
6588         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6589         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6590         gen_addsi3.
6591         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6592         Duplicate restoration of LR and execute the appropriate one
6593         depending on whether GPRs are being restored inline.  Set r11 from
6594         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6595         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6596         Fix out of line calls for AIX ABI.
6597         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6598         New insn.
6599         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6600         register 11.
6601         (*restore_gpregs_spe): Likewise.
6602         (*return_and_restore_gpregs_spe): Likewise.
6603         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6604         Define to empty string unconditionally.
6605         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6606         Define to empty string unconditionally.
6607         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6608         !TARGET_64BIT.
6609
6610 2009-09-15  Jan Hubicka  <jh@suse.cz>
6611
6612         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6613         * params.def (inline-insns-auto): Likewise.
6614
6615 2009-09-15  Martin Jambor  <mjambor@suse.cz>
6616
6617         * ipa-inline.c (estimate_function_body_sizes): Dump info about
6618         individual statements only at TDF_DETAILS dump level.  Format
6619         source for 80 characters per line.
6620
6621 2009-09-15  Christian Bruel  <christian.bruel@st.com>
6622
6623         * regrename.c (do_replace): Update REG_DEAD notes.
6624
6625 2009-09-15  Revital Eres  <eres@il.ibm.com>
6626
6627         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
6628         * targhooks.c (default_builtin_support_vector_misalignment):
6629         New builtin function.
6630         * targhooks.h (default_builtin_support_vector_misalignment):
6631         Declare.
6632         * target.h (builtin_support_vector_misalignment):
6633         New field in struct gcc_target.
6634         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
6635         new builtin function.
6636         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
6637         Define.
6638         * config/rs6000/rs6000.c
6639         (rs6000_builtin_support_vector_misalignment): New function.
6640         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
6641
6642 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
6643
6644         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
6645         instead of INSN_P.
6646         (bfin_optimize_loop): Likewise.
6647         (bfin_gen_bundles): Likewise.
6648         (workaround_speculation): Likewise.
6649         (find_load): Return NULL_RTX for debug_insn.
6650
6651 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
6652
6653         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
6654         (sminsf3): Ditto.
6655
6656 2009-09-14  DJ Delorie  <dj@redhat.com>
6657
6658         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
6659         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
6660         VLIW mode.
6661
6662 2009-09-14  Richard Henderson  <rth@redhat.com>
6663             Jakub Jelinek  <jakub@redhat.com>
6664
6665         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
6666         * cfgbuild.c (make_edges): Handle asm goto.
6667         * cfglayout.c (fixup_reorder_chain): Likewise.
6668         * cfgrtl.c (patch_jump_insn): Likewise.
6669         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
6670         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
6671         (gimple_build_asm_vec): Add and use labels parameter.
6672         (gimple_build_asm): Remove.
6673         (walk_gimple_asm): Walk labels too.
6674         * gimple.def (GIMPLE_ASM): Update docs.
6675         * gimple.h: Update decls.
6676         (struct gimple_statement_asm): Change nc to use unsigned char;
6677         add nl member.
6678         (gimple_asm_nlabels): New.
6679         (gimple_asm_label_op, gimple_asm_set_label_op): New.
6680         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
6681         into gimple_build_asm_vec.
6682         * jump.c (mark_jump_label_asm): New.
6683         (mark_jump_label): Use it.
6684         (redirect_jump_1): Handle asm goto.
6685         (invert_jump_1): Soft fail if X is null.
6686         * recog.c (extract_asm_operands): New.
6687         (asm_noperands): Use it; handle asm labels.
6688         (decode_asm_operands): Use extract_asm_operands.
6689         (asm_operand_ok): Properly handle empty string.
6690         * reg-stack.c (get_asm_operands_in_out): Rename from
6691         get_asm_operand_n_inputs; use extract_asm_operands; return both
6692         inputs and outputs by reference; update all callers.
6693         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
6694         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
6695         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
6696         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
6697         (extract_asm_operands): Declare.
6698         * stmt.c (expand_asm_operands): Add and use labels parameter.
6699         (check_unique_operand_names): Likewise.
6700         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
6701         (expand_asm_stmt): Handle asm labels.
6702         * tree-cfg.c (make_gimple_asm_edges): New.
6703         (make_edges): Use it.
6704         (cleanup_dead_labels): Handle asm labels.
6705         (is_ctrl_altering_stmt): Likewise.
6706         (gimple_redirect_edge_and_branch): Likewise.
6707         * tree.def (ASM_EXPR): Add 5th operand.
6708         * tree.h (ASM_LABELS): New.
6709         (resolve_asm_operand_names): Update decl.
6710
6711         * c-parser.c (c_parser_asm_statement): Parse asm goto.
6712         (c_parser_asm_goto_operands): New.
6713         * c-tree.h (build_asm_expr): Update decl.
6714         * c-typeck.c (build_asm_expr): Add and use labels parameter.
6715         * doc/extend.texi: Document asm goto.
6716
6717 2009-09-14  Richard Henderson  <rth@redhat.com>
6718
6719         * except.h: Update declarations.
6720         (struct pointer_map_t): Forward declare.
6721         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
6722         (struct eh_landing_pad_d, eh_landing_pad): New.
6723         (struct eh_catch_d, eh_catch): New.
6724         (struct eh_region_d): Remove next_region_sharing_label, aka,
6725         label, tree_label, landing_pad, post_landing_pad, resume,
6726         may_contain_throw.  Rename region_number to index.  Remove
6727         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
6728         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
6729         (VEC(eh_landing_pad,gc)): New.
6730         (struct eh_status): Remove last_region_number.  Add lp_array,
6731         throw_stmt_table, ttype_data, ehspec_data.
6732         (ehr_next, FOR_ALL_EH_REGION_AT): New.
6733         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
6734         * except.c (lang_protect_cleanup_actions): Return tree.
6735         (struct ehl_map_entry): Remove.
6736         (init_eh_for_function): Push zero entries for region and lp_array.
6737         (gen_eh_region): Add to region_array immediately.
6738         (gen_eh_region_catch): Operate on eh_catch objects.
6739         (gen_eh_landing_pad): New.
6740         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
6741         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
6742         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
6743         (get_eh_landing_pad_from_number_fn): New.
6744         (get_eh_landing_pad_from_number): New.
6745         (get_eh_region_from_lp_number_fn): New.
6746         (get_eh_region_from_lp_number): New.
6747         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
6748         (get_exception_pointer, get_exception_filter): Remove.
6749         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
6750         (current_function_has_exception_handlers): Simplify.
6751         (bring_to_root, eh_region_replaceable_by_p): Remove.
6752         (replace_region, hash_type_list, hash_eh_region): Remove.
6753         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
6754         (label_to_region_map, num_eh_regions): Remove.
6755         (get_next_region_sharing_label, must_not_throw_labels): Remove.
6756         (find_exception_handler_labels): Remove.
6757         (duplicate_eh_regions_0, find_prev_try): Remove.
6758         (struct duplicate_eh_regions_data): New.
6759         (duplicate_eh_regions_1): Rewrite.
6760         (duplicate_eh_regions): Return a pointer map instead of an
6761         integer offset.
6762         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
6763         (redirect_eh_edge_to_label): Remove.
6764         (eh_region_outermost): Rewrite using eh_region pointers
6765         instead of integers.
6766         (add_ttypes_entry): Update for ttype_data move to eh_status.
6767         (add_ehspec_entry): Rewrite with VEC instead of varray.
6768         (assign_filter_values): Likewise.  Export.
6769         (build_post_landing_pads, connect_post_landing_pads): Remove.
6770         (dw2_build_landing_pads): Rewrite to use lp_array.
6771         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
6772         (sjlj_assign_call_site_values): Rewrite to use lp_array.
6773         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
6774         (sjlj_mark_call_sites): Update for landing pad numbers.
6775         (finish_eh_generation): Rewrite.
6776         (gate_handle_eh): Do nothing for no eh tree.
6777         (pass_rtl_eh): Move up near finish_eh_generation.
6778         (remove_eh_landing_pad): New.
6779         (remove_eh_handler): Export.
6780         (remove_eh_region, remove_eh_handler_and_replace): Remove.
6781         (for_each_eh_label): Rewrite to use lp_array.
6782         (make_reg_eh_region_note): New.
6783         (make_reg_eh_region_note_nothrow_nononlocal): New.
6784         (insn_could_throw_p): New.
6785         (copy_reg_eh_region_note_forward): New.
6786         (copy_reg_eh_region_note_backward): New.
6787         (check_handled, add_reachable_handler): Remove.
6788         (reachable_next_level, foreach_reachable_handler): Remove.
6789         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
6790         (get_eh_region_and_lp_from_rtx): New.
6791         (get_eh_region_from_rtx): New.
6792         (can_throw_internal_1, can_throw_external_1): Remove.
6793         (can_throw_internal): Use get_eh_region_from_rtx.
6794         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
6795         (insn_nothrow_p, can_nonlocal_goto): New.
6796         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
6797         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
6798         (add_action_record): Use VEC not varray.
6799         (collect_one_action_chain): Update for eh_region changes.
6800         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
6801         Use get_eh_region_and_lp_from_rtx.
6802         (gate_convert_to_eh_region_ranges): New.
6803         (pass_convert_to_eh_region_ranges): Use it.
6804         (push_uleb128, push_sleb128): Use VEC not varray.
6805         (output_one_function_exception_table): Likewise.
6806         (dump_eh_tree): Update for eh_region changes.
6807         (verify_eh_tree): Likewise.
6808         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
6809         * tree-eh.c: Include target.h.
6810         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
6811         Don't disallow GIMPLE_RESX; adjust argument check.
6812         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
6813         (record_stmt_eh_region): Update for landing pad numbers;
6814         generate a landing pad if necessary.
6815         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
6816         (remove_stmt_from_eh_lp_fn): Similarly.
6817         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
6818         Update for lp numbers; don't special case missing throw_stmt_table.
6819         (lookup_expr_eh_lp): Similarly.
6820         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
6821         (eh_seq, eh_region_may_contain_throw): New.
6822         (struct leh_state): Add ehp_region.
6823         (struct leh_tf_state): Remove eh_label.
6824         (emit_post_landing_pad): New.
6825         (emit_resx, emit_eh_dispatch): New.
6826         (note_eh_region_may_contain_throw): New.
6827         (frob_into_branch_around): Take eh_region not eh label;
6828         emit eh code into eh_seq.
6829         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
6830         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
6831         lower_eh_must_not_throw.  Emit code to eh_seq.
6832         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
6833         (lower_try_finally_onedest): Likewise.
6834         (lower_try_finally_copy): Likewise.
6835         (lower_try_finally_switch): Likewise.
6836         (lower_try_finally): Initialize ehp_region.
6837         (lower_catch): Update for eh_catch objects.
6838         (lower_eh_filter): Don't handle must_not_throw.
6839         (lower_eh_must_not_throw): New.
6840         (lower_cleanup): Don't set eh_label.
6841         (lower_eh_constructs_2): Resolve eh builtins.
6842         Handle GIMPLE_EH_MUST_NOT_THROW.
6843         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
6844         Add eh_seq to the end of the function body.
6845         (make_eh_dispatch_edges): New.
6846         (make_eh_edge): Remove.
6847         (make_eh_edges): Simplify for landing pads.
6848         (redirect_eh_edge_1): New.
6849         (redirect_eh_edge): Use it.
6850         (redirect_eh_dispatch_edge): New.
6851         (stmt_could_throw_p): Use a switch.  Allow RESX.
6852         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
6853         (stmt_can_throw_internal): Likewise.
6854         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
6855         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
6856         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
6857         (gate_refactor_eh): New.
6858         (pass_refactor_eh): Use it.
6859         (lower_resx, execute_lower_resx, pass_lower_resx): New.
6860         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
6861         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
6862         (remove_unreachable_handlers): Rename from
6863         tree_remove_unreachable_handlers; rewrite for landing pads;
6864         call remove_eh_handler directly.
6865         (remove_unreachable_handlers_no_lp): New.
6866         (unsplit_eh, unsplit_all_eh): New.
6867         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
6868         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
6869         (cleanup_empty_eh_unsplit): New.
6870         (cleanup_empty_eh): Rewrite.
6871         (cleanup_all_empty_eh): New.
6872         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
6873         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
6874         (gate_cleanup_eh): New.
6875         (pass_cleanup_eh): Use it.
6876         (verify_eh_edges): Move later in file.  Expect one EH edge.
6877         (verify_eh_dispatch_edge): New.
6878
6879         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
6880         (gtype-desc.o): Add TARGET_H.
6881         (tree.o): Use EXCEPT_H, not except.h.
6882         (cfgbuild.o): Add EXPR_H.
6883         (GTFILES): Add vecprim.h.
6884         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
6885         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
6886         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
6887         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
6888         * calls.c (emit_call_1): Use make_reg_eh_region_note.
6889         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
6890         calls to can_throw_internal.
6891         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
6892         (make_edges): Don't handle RESX; use can_nonlocal_goto.
6893         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
6894         (expand_gimple_stmt): Use make_reg_eh_region_note.
6895         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
6896         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
6897         or find_exception_handler_labels.
6898         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
6899         there is exacly one EH edge.  Use can_nonlocal_goto and
6900         can_throw_internal.
6901         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
6902         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
6903         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
6904         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
6905         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
6906         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
6907         * dse.c (scan_insn): Use insn_could_throw_p.
6908         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
6909         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
6910         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
6911         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
6912         EXC_PTR_EXPR or FILTER_EXPR.
6913         (tree_expr_nonzero_warnv_p): Likewise.
6914         * function.h: Include vecprim.h, not varray.h
6915         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
6916         move ttype_data and ehspec_data members to struct eh_status; change
6917         action_record_data member to a VEC.
6918         * gcse.c (hash_scan_set): Use can_throw_internal.
6919         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
6920         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
6921         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6922         (block_may_fallthru): Don't handle RESX_EXPR.
6923         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
6924         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
6925         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
6926         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
6927         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
6928         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
6929         (gimple_size): Likewise.
6930         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
6931         (gimple_build_resx): Use gimple_build_with_ops.
6932         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
6933         (is_gimple_val): Likewise.
6934         (is_gimple_stmt): Remove RESX_EXPR.
6935         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
6936         (GIMPLE_RESX): Reorder with other EH constructs.
6937         * gimple.h (struct gimple_statement_eh_mnt): New.
6938         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
6939         (gimple_eh_filter_must_not_throw): Remove.
6940         (gimple_eh_filter_set_must_not_throw): Remove.
6941         (gimple_eh_must_not_throw_fndecl): New.
6942         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
6943         (is_gimple_resx): New.
6944         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
6945         Don't copy EH_FILTER_MUST_NOT_THROW.
6946         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
6947         * ipa-inline.c (estimate_function_body_sizes): Don't try to
6948         handle must_not_throw_labels specially.
6949         * ipa-pure-const.c (check_call): Update debug statement for LP.
6950         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
6951         * ipa-utils.c (get_base_var): Likewise.
6952         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
6953         * lower-subreg.c (move_eh_region_note): Remove.
6954         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
6955         * omp-low.c (new_omp_context): Update for eh_lp_nr.
6956         (create_task_copyfn): Likewise.
6957         (maybe_catch_exception): Use gimple_build_eh_filter.
6958         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
6959         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
6960         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
6961         and pass_lower_resx.
6962         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
6963         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
6964         can_throw_internal, can_nonlocal_goto.
6965         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
6966         copy_reg_eh_region_note_forward.
6967         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
6968         (emit_output_reload_insns): Likewise.
6969         (copy_eh_notes): Remove.
6970         * rtl.def (RESX): Remove.
6971         * rtl.h: Update declarations.
6972         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
6973         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
6974         (update_eh_label): Remove.
6975         (cleanup_dead_labels_eh): New.
6976         (cleanup_deal_labels): Use it instead of update_eh_label.
6977         (gimple_merge_blocks): Update landing pad data structure when
6978         removing a landing pad label.
6979         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
6980         test; handle GIMPLE_EH_MUST_NOT_THROW.
6981         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
6982         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
6983         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
6984         (verify_stmt): Likewise.  Verify landing pads.
6985         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
6986         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
6987         (struct move_stmt_d): Add eh_map.
6988         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
6989         (move_stmt_r): Remap eh region numbers in builtin calls,
6990         resx and eh_dispatch.
6991         (move_block_to_fn): Remove eh_offset parameter.  Use
6992         maybe_duplicate_eh_stmt_fn.
6993         (find_outermost_region_in_block): Operate on eh_region pointers
6994         instead of region numbers.
6995         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
6996         duplicate_eh_regions.
6997         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
6998         test earlier.  Disallow EH landing pads.
6999         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
7000         * tree-flow.h: Update declarations.
7001         (struct tree_ann_common_d): Replace rn with lp_nr.
7002         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
7003         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
7004         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
7005         resx and eh_dispatch.
7006         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
7007         (copy_edges_for_bb): Use make_eh_dispatch_edges.
7008         (copy_cfg_body): Expect eh_map instead of eh_region_offset
7009         from duplicate_eh_regions.
7010         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
7011         update RESX; handle EH_DISPATCH.
7012         (expand_call_inline): Set eh_lp_nr, not eh_region.
7013         (maybe_inline_call_in_expr): Likewise.
7014         * tree-inline.h (struct copy_body_data): Replace eh_region with
7015         eh_lp_nr, eh_region_offset with eh_map.
7016         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
7017         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
7018         * tree-pretty-print.c (dump_generic_node): Don't handle
7019         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
7020         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
7021         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
7022         EXC_PTR_EXPR, FILTER_EXPR.
7023         * tree-ssa-operands.c (get_expr_operands): Likewise.
7024         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
7025         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
7026         (ao_ref_init_from_vn_reference): Likewise.
7027         * tree-ssa-sink.c (statement_sink_location): Likewise.
7028         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7029         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
7030         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
7031         EXC_PTR_EXPR, FILTER_EXPR.
7032         (is_exception_related): Remove.
7033         (compute_avail): Don't call it.
7034         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
7035         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
7036         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
7037         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
7038         Build EH builtins.
7039         (build_resx): Remove.
7040         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
7041         * tree.h: Update declarations.
7042         (EH_FILTER_MUST_NOT_THROW): Remove.
7043         (struct tree_label_decl): Add eh_landing_pad_nr.
7044         (EH_LANDING_PAD_NR): New.
7045         * value-prof.c (gimple_ic): Tidy variable names.  Update for
7046         landing pad numbers.
7047         (gimple_stringop_fixed_value): Tidy variable names.  Assert
7048         that neither call stmt can throw.
7049         * vecprim.h (uchar): New.
7050         (VEC(uchar,heap), VEC(uchar,gc)): New.
7051
7052         * c-common.c (c_define_builtins): Update call to
7053         build_common_builtin_nodes.
7054         * c-parser.c (c_parse_file): Don't call
7055         default_init_unwind_resume_libfunc.
7056
7057 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
7058
7059         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
7060         (mips_cprestore_address_p): Likewise.
7061         (mips_save_gp_to_cprestore_slot): Likewise.
7062         (mips_restore_gp): Rename to...
7063         (mips_restore_gp_from_cprestore_slot): ...this.
7064         (mips_must_initialize_gp_p): Declare.
7065         (mips_emit_save_slot_move): Likewise.
7066         (mips_output_load_label): Return nothing.
7067         (mips_eh_uses): Declare.
7068         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
7069         (TARGET_CPRESTORE_DIRECTIVE): New macro.
7070         (TARGET_ABSOLUTE_JUMPS): Likewise.
7071         (EH_USES): Likewise.
7072         (FIRST_PSEUDO_REGISTER): Update comment.
7073         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
7074         (MIPS_CALL): ...here.
7075         (REGISTER_NAMES): Add $cprestore.
7076         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
7077         Add load_label_length, has_inflexible_gp_insn_p,
7078         has_flexible_gp_insn_p, must_initialize_gp_p and
7079         must_restore_gp_when_clobbered_p.
7080         (mips_expand_call): Don't generate split instructions here.
7081         (mips_split_call): Update the call to mips_restore_gp after
7082         the above name change.
7083         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
7084         (mips_find_gp_ref): New function.
7085         (mips_insn_has_inflexible_gp_ref_p): Likewise.
7086         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
7087         (mips_insn_has_flexible_gp_ref_p): Likewise.
7088         (mips_cfun_has_flexible_gp_ref_p): Likewise.
7089         (mips_function_has_gp_insn): Delete.
7090         (mips_global_pointer): Drop the df_regs_ever_live_p check.
7091         Use the new functions above.  Only return INVALID_REGNUM
7092         for TARGET_ABSOLUTE_JUMPS.
7093         (mips_must_initialize_gp_p): New function.
7094         (mips_get_cprestore_base_and_offset): New function, extracted from...
7095         (mips_cprestore_slot): ...here.  Take a bool parameter.
7096         (mips_cfun_has_cprestore_slot_p): New function.
7097         (mips_cprestore_address_p): Likewise.
7098         (mips_save_gp_to_cprestore_slot): Likewise.
7099         (mips_restore_gp): Rename to...
7100         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
7101         epilogue_completed.  Update the call to mips_cprestore_slot.
7102         Test cfun->machine->must_restore_gp_when_clobbered_p.
7103         (mips_direct_save_slot_move_p): New function.
7104         (mips_emit_save_slot_move): Likewise.
7105         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
7106         of cfun->machine->global_pointer.
7107         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
7108         (mips_save_reg): Use mips_emit_save_slot_move.
7109         (mips_expand_prologue): Set must_initialize_gp_p.
7110         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
7111         for all cprestore saves.  Emit a use_cprestore instruction after
7112         setting up the cprestore slot.
7113         (mips_restore_reg): Use mips_emit_save_slot_move.
7114         (mips_process_load_label): New function.
7115         (mips_load_label_length): Likewise.
7116         (mips_output_load_label): Don't return asm: output it here instead.
7117         Use mips_process_load_label.
7118         (mips_adjust_insn_length): Adjust the length of branch instructions
7119         that have length MAX_PIC_BRANCH_LENGTH.
7120         (mips_output_conditional_branch): Update the call to
7121         mips_output_load_label.  Assume the branch target is OPERANDS[0]
7122         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
7123         (mips_output_order_conditional_branch): Swap the meaning of
7124         OPERANDS[0] and OPERANDS[1].
7125         (mips_variable_issue): Don't count ghost instructions.
7126         (mips_expand_ghost_gp_insns): New function.
7127         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
7128         (mips_output_mi_thunk): Set must_initialize_gp_p.
7129         (mips_eh_uses): New function.
7130         * config/mips/predicates.md (cprestore_save_slot_operand)
7131         (cprestore_load_slot_operand): New predicates.
7132         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
7133         (UNSPEC_MOVE_GP): Likewise.
7134         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
7135         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
7136         (CPRESTORE_SLOT_REGNUM): New register.
7137         (MAX_PIC_BRANCH_LENGTH): New constant.
7138         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
7139         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
7140         branches.  Fix commentary.
7141         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
7142         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
7143         Change type to "ghost".
7144         (loadgp_absolute_<mode>): Likewise.
7145         (loadgp_rtp_<mode>): Likewise.
7146         (copygp_mips16): Likewise.
7147         (loadgp_blockage): Remove redundant mode attribute.
7148         (potential_cprestore): New instruction.
7149         (cprestore): Turn into an unspec set.
7150         (use_cprestore): New instruction.
7151         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
7152         (*branch_fp_inverted): Likewise.
7153         (*branch_order<mode>): Likewise.
7154         (*branch_order<mode>_inverted): Likewise.
7155         (*branch_equality<mode>): Likewise.
7156         (*branch_equality<mode>_inverted): Likewise.
7157         (*branch_bit<bbv><mode>): Likewise.
7158         (*branch_bit<bbv><mode>_inverted): Likewise.
7159         (*branch_equality<mode>_mips16): Remove redundant mode.
7160         (jump): Turn into a define_expand.
7161         (*jump_absolute): New instruction.
7162         (*jump_pic): Likewise.
7163         (*jump_mips16): Rename previously-unnamed pattern.  Remove
7164         redundant mode attribute.
7165         (restore_gp): Split on epilogue_completed rather than
7166         reload_completed.  Change type to "ghost".
7167         (move_gp<mode>): New instruction.
7168         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
7169         Remove redundant mode attribute.
7170         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
7171         (bc1any4f, bc1any2t, bc1any2f): Likewise.
7172         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
7173
7174 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
7175
7176         PR target/41210
7177         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
7178         are returned in the same register (vs34 or v2) that Altivec vector
7179         types are returned in.
7180         (rs6000_libcall_value): Ditto.
7181
7182         PR target/41331
7183         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7184         instead of explicit addsi3/adddi3 calls.
7185         (rs6000_split_multireg_move): Ditto.
7186         (rs6000_emit_allocate_stack): Ditto.
7187         (rs6000_emit_prologue): Ditto.
7188         (rs6000_output_mi_thunk): Ditto.
7189
7190         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7191         size is 64 bits if we can use 64-bit registers.
7192
7193 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7194
7195         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7196         symbols.
7197
7198         From Jie Zhang <jie.zhang@analog.com>:
7199         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7200         save FP and RETS with saveall attribute.
7201         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7202         with saveall attribute.
7203
7204         * config/bfin/bfin.c (bfin_expand_builtin,
7205         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7206         operands.
7207
7208         From Jie Zhang <jie.zhang@analog.com>:
7209         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7210         before use in two places.
7211         * config/bfin/bfin.md (AREG): Define mode iterator.
7212         (reload_in, reload_out): Use mode iterator AREG.
7213
7214 2009-09-14  Richard Guenther  <rguenther@suse.de>
7215
7216         PR middle-end/41350
7217         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7218         EH personality path.
7219
7220 2009-09-13  Richard Guenther  <rguenther@suse.de>
7221             Rafael Avila de Espindola  <espindola@google.com>
7222
7223         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7224         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7225         (LANG_HOOKS_INITIALIZER): Adjust.
7226         (lhd_pass_through_t): Declare.
7227         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7228         eh_personality.
7229         * langhooks.c (lhd_pass_through_t): New function.
7230         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7231         dwarf2out_begin_prologue): Use personality from current_function_decl.
7232         * expr.h (get_personality_function): Declare.
7233         * expr.c (get_personality_function): New function.
7234         (build_personality_function): Likewise.
7235         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7236         (eh_personality_libfunc): Remove.
7237         * optabs.c (build_libfunc_function): New function split out from ...
7238         (init_one_libfunc): ... here.
7239         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7240         (tree_function_decl): Add personality.
7241         (lhd_gcc_personality): Declare.
7242         (build_personality_function): Likewise.
7243         * tree.c (gcc_eh_personality_decl): New.
7244         (lhd_gcc_personality): New function.
7245         * except.h (lang_eh_runtime_type): Remove.
7246         (enum eh_personality_kind): New.
7247         (build_personality_function): Declare.
7248         (function_needs_eh_personality): Declare.
7249         * except.c (lang_eh_runtime_type): Remove.
7250         (function_needs_eh_personality): New function.
7251         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7252         (sjlj_emit_function_enter, output_function_exception_table):
7253         Use personality from current_function_decl.
7254         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7255         * tree-inline.c (tree_can_inline_p): Do not inline across different
7256         EH personalities.
7257         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7258         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7259         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7260         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7261         (c-parser.o): Likewise
7262         * c-tree.h (c_eh_initialized_p): Remove.
7263         (c_maybe_initialize_eh): Likewise.
7264         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7265         (finish_decl): Don't call c_maybe_initialize_eh.
7266         (c_eh_initialized_p): Remove.
7267         (c_maybe_initialize_eh): Likewise.
7268         * c-parser.c (c_parser_omp_construct): Likewise.
7269         (c_parse_file): Initialize exception handling.
7270
7271 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7272
7273         * config.gcc (tm_file): Remove i386/biarch32.h
7274         for i?86-w64-mingw* case.
7275         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7276         support.
7277         * config.host: Set for x64 mingw the option
7278         use_long_long_for_widest_fast_int to yes.
7279
7280 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7281
7282         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7283         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7284         (dbxout_begin_function): Likewise.
7285         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7286         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7287         set on the function.
7288         (final_end_function): Likewise.
7289         (final_scan_insn): Likewise.
7290         (rest_of_handle_final): Likewise.
7291         * varasm.c (assemble_start_function): Likewise.
7292         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7293
7294 2009-09-12  Jason Merrill  <jason@redhat.com>
7295
7296         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7297         * opts.c (common_handle_option): constify.
7298
7299 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7300
7301         * doc/install.texi (avr): Remove obsolete reference site.
7302
7303 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7304
7305         * doc/install.texi (Binaries): Adjust AIX link.
7306
7307 2009-09-12  Akim Demaille  <demaille@gostai.com>
7308
7309         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7310         Use an imperative sentence.
7311
7312 2009-09-11  Richard Henderson  <rth@redhat.com>
7313
7314         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7315         structure-name and has-tree-operands arguments; update all entries.
7316         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7317         update all entries.
7318         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7319         (gsstruct_code_size): New.
7320         (gss_for_code_): New.
7321         (gss_for_code): Remove.
7322         (gimple_size): Rewrite using gsstruct_code_size.
7323         (gimple_statement_structure): Move to gimple.h.
7324         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7325         (gss_for_code, gimple_statement_structure): New.
7326         (gimple_ops): Use new arrays; tidy.
7327
7328 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7329
7330         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7331         operand to be a PLUS expression.
7332         * config/pa/pa.c (pa_secondary_reload): Likewise.
7333
7334 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7335
7336         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7337
7338         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7339         XEXP (in_rtx, 8).
7340
7341 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7342
7343         From Jie Zhang <jie.zhang@analog.com>:
7344         * doc/extend.texi (node Function Attributes): Document l2
7345         function attribute.
7346         (node Blackfin Variable Attributes): Document l2 variable attributes.
7347
7348 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7349
7350         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7351         to match the system compiler's configuration at inflection point.
7352         Add comment to remark a remaining difference with system compiler.
7353
7354         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7355         * configure: Regenerate.
7356
7357 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7358
7359         From Jie Zhang <jie.zhang@analog.com>:
7360         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7361         (bfin_handle_l2_attribute): New.
7362         (bfin_attribute_table): Add l2 attribute.
7363
7364 2009-09-11  Michael Matz  <matz@suse.de>
7365
7366         PR middle-end/41275
7367         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7368         on the local_decls list.
7369
7370 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7371
7372         PR debug/41276
7373         PR debug/41307
7374         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7375         interface.
7376         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7377         for VALUEs, to implement the documented interface.
7378         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7379         Adjust for VALUEs and anything else, to implement the
7380         documented interface.
7381
7382 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7383
7384         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7385         with actual SPE/paired vector modes before using 64-bit alignment.
7386         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7387
7388 2009-09-10  DJ Delorie  <dj@redhat.com>
7389
7390         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7391         emitted.
7392
7393         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7394         * config/mep/mep.c (mep_legitimate_constant_p): New.
7395         * config/mep/mep-protos.h: Prototype it.
7396
7397 2009-09-10  Richard Henderson  <rth@redhat.com>
7398
7399         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7400
7401 2009-09-10  Jason Merrill  <jason@redhat.com>
7402
7403         * tree.c (chain_index): New fn.
7404         * tree.h: Declare it.
7405
7406 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7407
7408         * config/sol2-c.c (cmn_err_length_specs): Initialize
7409         scalar_identity_flag.
7410
7411 2009-09-10  Richard Henderson  <rth@redhat.com>
7412
7413         * tree.h (struct tree_decl_common): Move align member earlier;
7414         move label_decl_uid member ...
7415         (struct tree_label_decl): ... here.
7416         (LABEL_DECL_UID): Update to match.
7417
7418         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7419         not TDF_DETAILS.
7420
7421         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7422         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7423
7424         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7425         dest_prev if the edge is complex.
7426
7427         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7428
7429         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7430         loop latch tests earlier.
7431
7432         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7433         before GIMPLE_RETURN, not after its predecessor; insert
7434         before GIMPLE_RESX.
7435
7436         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7437         gimple_seq_empty_p to test for no PHI nodes.
7438         * tree-cfg.c (split_critical_edges): Likewise.
7439
7440         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7441
7442 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7443
7444         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7445         introduced by the VTA branch merge.
7446
7447 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7448
7449         * ira-conflicts.c: Use fputs or putc instead of fprintf
7450         where appropriate.
7451         * cfg.c: Ditto.
7452         * toplev.c: Ditto.
7453         * tree-switch-conversion.c: Ditto.
7454
7455 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7456
7457         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7458         introduced by the VTA branch merge.
7459
7460 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7461
7462         Revert:
7463         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7464
7465         PR rtl-optimization/39779
7466         * expr.c (convert_modes): Return when mode == oldmode after
7467         CONST_INTs are processed.
7468
7469 2009-09-10  Nick Clifton  <nickc@redhat.com>
7470
7471         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7472         attribute and referring decl when creating renamed symbol.
7473
7474 2009-09-10  Richard Guenther  <rguenther@suse.de>
7475
7476         PR middle-end/41257
7477         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7478         reachable nodes.
7479         (cgraph_finalize_compilation_unit): Compute reachability
7480         before emitting thunks.  Properly process aliases before
7481         possibly removing unreachable nodes.
7482
7483 2009-09-10  Richard Guenther  <rguenther@suse.de>
7484
7485         PR middle-end/41254
7486         * tree.c (struct free_lang_data_d): Add worklist member.
7487         (find_decls_types_r): Push onto the worklist instead of recursing.
7488         Handle TREE_BINFOs properly.
7489         (find_decls_types): New function wrapped around find_decls_types_r
7490         to process the worklist.
7491         (find_decls_types_in_eh_region): Use it.
7492         (find_decls_types_in_node): Likewise.
7493         (find_decls_types_in_var): Likewise.
7494         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7495         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7496         (AGGREGATE_TYPE_P): Adjust.
7497
7498 2009-09-09  Jason Merrill  <jason@redhat.com>
7499
7500         * configure.ac: Check glibc version even if we have an in-tree
7501         assembler.
7502
7503 2009-09-09  Anthony Green  <green@moxielogic.com>
7504
7505         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7506         the constant 0 when appropriate.
7507         * config/moxie/constraints.md: Add constraint O.
7508
7509         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7510         to pass up to 6 32-bit argument values in registers.
7511         (moxie_function_arg): Ditto.
7512         (moxie_arg_partial_bytes): Ditto.
7513         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7514         (REG_PARM_STACK_SPACE): Ditto.
7515         (FUNCTION_ARG_REGNO_P): Ditto.
7516
7517         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7518         instruction to allocate stack space.
7519
7520 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7521
7522         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7523         unnecessarily stringent constraints.  Fix address
7524         calculation in the splitters.
7525
7526 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7527
7528         PR rtl-optimization/39779
7529         * expr.c (convert_modes): Return when mode == oldmode after
7530         CONST_INTs are processed.
7531
7532 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7533
7534         PR/41315
7535         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7536         (ix86_expand_prologue): Take frame.padding0 into logic of
7537         to_allocate checks.
7538         (ix86_expand_epilogue): Likewise.
7539
7540 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7541
7542         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7543         New variables.
7544         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7545         * config/t-slibgcc-libgcc: New file.
7546         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7547
7548 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7549
7550         PR tree-optimization/41089
7551         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7552         early SRA.
7553
7554 2009-09-09  Richard Henderson  <rth@redhat.com>
7555
7556         * gimple.h (CASE_GIMPLE_OMP): New.
7557         (is_gimple_omp): Use it.
7558         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7559         (verify_gimple_debug): Likewise.
7560
7561 2009-09-09  Richard Guenther  <rguenther@suse.de>
7562
7563         PR tree-optimization/41101
7564         * tree-ssa-pre.c (maximal_set): Remove.
7565         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7566         Defer all blocks we didn't visit at least one successor.
7567         (add_to_exp_gen): Do not add to the maximal set.
7568         (make_values_for_phi): Likewise.
7569         (compute_avail): Likewise.
7570         (init_pre): Do not allocate the maximal set.
7571         (execute_pre): Do not dump it.
7572
7573 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7574
7575         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7576         an SSA_NAME rather than a is_gimple_variable.
7577
7578 2009-09-09  Richard Guenther  <rguenther@suse.de>
7579
7580         PR middle-end/41317
7581         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7582         code dealing with plain pointer bases.
7583         (maybe_fold_offset_to_reference): Likewise.
7584         (maybe_fold_stmt_addition): Adjust.
7585
7586 2009-09-09  Richard Guenther  <rguenther@suse.de>
7587
7588         * tree.c (free_lang_data_in_type): Do not free the type variant
7589         chains.
7590         (free_lang_data): Merge char_type_node with its properly signed
7591         variant.
7592         (pass_ipa_free): Collect after freeing language specific data.
7593
7594 2009-09-09  Michael Matz  <matz@suse.de>
7595
7596         PR middle-end/41268
7597         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7598         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7599         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7600         to reflect reality.
7601
7602 2009-09-08  DJ Delorie  <dj@redhat.com>
7603
7604         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7605
7606 2009-09-04  Jason Merrill  <jason@redhat.com>
7607
7608         * tree.c (tree_find_value): Remove.
7609         * tree.h: Remove prototype.
7610         * varasm.c (assemble_external): Use value_member instead.
7611
7612 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7613
7614         * toplev.c (process_options): Choose default debugging type when
7615         gtoggle enables debug info and type is unset.
7616
7617 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7618
7619         PR debug/41276
7620         PR debug/41307
7621         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
7622         invalid subreg.
7623
7624 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7625
7626         * configure: Rebuilt with modified libtool.m4.
7627
7628 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7629
7630         PR debug/41229
7631         PR debug/41291
7632         PR debug/41300
7633         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
7634
7635 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7636
7637         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
7638         (remove_statement): Likewise.
7639         (rewrite_use_nonlinear_expr): Adjust.
7640         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
7641         * tree-ssa.c (release_defs_bitset): ... this.  New.
7642         * tree-flow.h (release_defs_bitset): Declare.
7643
7644 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7645
7646         PR debug/41232
7647         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
7648         in the middle block.
7649
7650 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
7651
7652         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
7653         via intptr_t to long type.
7654         (insert_operand_rank): Cast long type via intptr_t to
7655         pointer type.
7656         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
7657         pointer to scalar.
7658         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
7659         from pointer to unsigned via uintptr_t.
7660
7661         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
7662         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
7663         and HAVE_INTPTR_T.
7664         * configure: Regenerated.
7665         * config.in: Regenerated
7666         * system.h (stdint.h): Add include.
7667         (inttypes.h): Likewise.
7668         * Makefile.in (aclocal): Add config/stdint.m4.
7669         * aclocal.m4: Regenerated.
7670
7671 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
7672
7673         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
7674         variables.
7675         (note_np_check_stores): New function.
7676         (harmless_null_pointer_p): New function.
7677         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
7678         changed.  Take into account whether we're in the shadow of a condjump
7679         that tested NP_REG for NULL.
7680         Lose all code that tested for SEQUENCEs.
7681         (workaround_speculation): Avoid inserting NOPs for loads that are
7682         either always executed or a NULL pointer.
7683
7684 2009-09-08  Jan Hubicka  <jh@suse.cz>
7685
7686         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
7687         * params.def (early-inlining-insns): Likewise.
7688
7689 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
7690
7691         PR rtl-optimization/41239
7692         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
7693         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
7694         lists.
7695         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
7696         across calls, as the calls might not always return normally.
7697         (call_may_noreturn_p): New function.
7698         (deps_analyze_insn): Update last_function_call_may_noreturn list.
7699         (init_deps): Initialize it.
7700         (remove_from_deps): Also remove calls from
7701         last_function_call_may_noreturn list.
7702
7703 2009-09-07  Richard Henderson  <rth@redhat.com>
7704
7705         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
7706         more VR->OPERANDS than LHS operands.  Free LHS before returning.
7707
7708 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7709
7710         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
7711         (attr "addrtype"): New member "spreg".
7712         Use it if mem_spfp_address_operand is true for the address.
7713         (attr "type"): New entry "stall".
7714         (cpu_unit "load"): New.
7715         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
7716         "load".
7717         (insn_reservation "loadsp"): New.
7718         (insn_reservation "load_stall1"): New.
7719         (insn_reservation "load_stall3"): New.
7720         (stall): New insn.
7721         * config/bfin/predicates.md (const1_operand, const3_operand): New.
7722         (mem_p_address_operand): Exclude stack and frame pointer based
7723         addresses.
7724         (mem_spfp_address_operand): New; match them here.
7725         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
7726         (bfin_reorg): Call it if scheduling insns.
7727         (bfin_gen_bundles): Remove dummy insns created by
7728         add_sched_insns_for_speculation.
7729
7730         From Jie Zhang <jie.zhang@analog.com>:
7731         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
7732         bfin_si_revision, bfin_workarounds): Move these ...
7733         * config/bfin/bfin.h: ... here.
7734
7735         From Mike Frysinger  <michael.frysinger@analog.com>
7736         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
7737         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
7738         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
7739         bf547m, bf548m, and bf549m.
7740         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
7741         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
7742         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
7743         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
7744         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
7745         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
7746         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
7747         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
7748         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
7749         bf542m, bf544m, bf547m, bf548m, and bf549m.
7750
7751         From Jie Zhang <jie.zhang@analog.com>:
7752         * config/bfin/predicates.md (p_register_operand): New predicate.
7753         (dp_register_operand): New predicate.
7754         * config/bfin/bfin-protos.h (WA_05000074): Define.
7755         (ENABLE_WA_05000074): Define.
7756         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
7757         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
7758         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
7759         (define_attr addrtype): Allow load/store register to be P register.
7760         (define_attr storereg): New.
7761         (define_cpu_unit anomaly_05000074): New.
7762         (define_insn_reservation dsp32shiftimm): New.
7763         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
7764         (define_insn_reservation loadp): Cannot use slot2.
7765         (define_insn_reservation loadsp): Cannot use slot2.
7766         (define_insn_reservation storep): Cannot use slot2. Does not
7767         apply when working around 05000074.
7768         (define_insn_reservation storep_anomaly_05000074): New.
7769         (define_insn_reservation storei): Does not apply when working
7770         around 05000074.
7771         (define_insn_reservation storei_anomaly_05000074): New.
7772         (define_attr length): Add dsp32shiftimm case.
7773         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
7774         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
7775         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
7776         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
7777         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
7778
7779 2009-09-07  Martin Jambor  <mjambor@suse.cz>
7780
7781         PR middle-end/41282
7782         * tree-sra.c (create_artificial_child_access): Return NULL if
7783         build_ref_for_offset fails.
7784         (propagate_subacesses_accross_link): Allow build_ref_for_offset
7785         and create_artificial_child_access to fail.
7786
7787 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
7788
7789         PR c++/41214
7790         * unwind-dw2.c (uw_init_context_1): Mark noinline.
7791         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
7792         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
7793
7794 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7795
7796         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
7797         block, ensure it has an exit edge.  Emit a barrier after a jump.
7798
7799 2009-09-07  Nick Clifton  <nickc@redhat.com>
7800
7801         * gcc.c (this_is_linker_script): New variable.  Like
7802         this_is_library_file but for the %T constructor.
7803         (end_going_arg): If this_is_linker_script is set then locate the
7804         script and insert a --script switch before it
7805         (do_spec_2): Initialise this_is_linker_script.
7806         (do_spec_1): Likewise.  Handle %T construct.
7807         (eval_spec_function): Preserve this_is_linker_script.
7808         * doc/invoke.texi: Document %T construct in spec files.
7809         * config/m32c/m32c.h (LIB_SPEC): Use it.
7810
7811 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7812
7813         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
7814         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
7815         when volatile flag is set.
7816         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
7817
7818 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
7819
7820         PR bootstrap/41241
7821         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
7822         (combine_stack_adjustments_for_block): Allow insns between stack
7823         adjustments and stores with corresponding pre-(dec|inc)rement or
7824         pre-modify operation.
7825
7826 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
7827
7828         PR bootstrap/41241
7829         * combine-stack-adj.c (struct csa_memlist): Rename to...
7830         (struct csa_reflist): ... this.  Rename mem field to ref.
7831         (free_csa_memlist): Rename to...
7832         (free_csa_reflist): ... this.
7833         (record_one_stack_memref): Rename to...
7834         (record_one_stack_ref): ... this.  Handle also REG_P.
7835         (try_apply_stack_adjustment): Handle also REG_P.
7836         (struct record_stack_memrefs_data): Rename to...
7837         (struct record_stack_refs_data): ... this.  Rename memlist field to
7838         reflist.
7839         (record_stack_memrefs): Rename to...
7840         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
7841         subexpressions instead of failing when a MEM contains SP references.
7842         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
7843         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
7844
7845 2009-09-06  Richard Guenther  <rguenther@suse.de>
7846
7847         PR middle-end/41144
7848         * tree.c (build_array_type): Do not record types marked
7849         with structural equality in the canonical type hashtable.
7850
7851 2009-09-06  Richard Guenther  <rguenther@suse.de>
7852
7853         PR middle-end/41261
7854         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
7855
7856 2009-09-05  Richard Guenther  <rguenther@suse.de>
7857
7858         PR middle-end/41181
7859         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
7860
7861 2009-09-05  Richard Guenther  <rguenther@suse.de>
7862
7863         PR debug/41273
7864         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
7865
7866 2009-09-05  Richard Guenther  <rguenther@suse.de>
7867
7868         PR middle-end/41271
7869         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
7870         before comparing function argument types.
7871
7872 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7873
7874         PR target/41024
7875         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
7876         the assembler.
7877
7878 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7879
7880         Revert:
7881         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
7882
7883         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
7884         locators before emit_insn is called.
7885
7886 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
7887
7888         PR bootstrap/41241
7889         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
7890         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
7891         (reginfo_init): Don't call allocate_reg_info.
7892
7893 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
7894
7895         PR target/41262
7896         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
7897         NONDEBUG_INSN_P instead of INSN_P.
7898
7899 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7900
7901         PR debug/41225
7902         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
7903
7904 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7905
7906         PR target/41252
7907         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
7908         pattern of the split.
7909
7910 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7911
7912         * toplev.c (process_options): Move setter of flag_var_tracking
7913         before other tests that depend on it.  Move down setter of
7914         flag_rename_registers.  Don't enable var-tracking-assignments
7915         by default if selective scheduling is enabled.  Warn if both
7916         are enabled.
7917
7918 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
7919
7920         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
7921         comment.  Use switch statement to catch overlaps between rtx
7922         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
7923         (IS_DECL_CODE): ... here. Remove.
7924         (check_value_is_not_decl): Remove.
7925         (dv_from_decl, dv_from_value): Check after conversion.
7926
7927 2009-09-04  Richard Guenther  <rguenther@suse.de>
7928
7929         PR middle-end/41257
7930         * (cgraph_finalize_compilation_unit): Move finalizing aliases
7931         after emitting tunks.  Move emitting thunks and ctors from ...
7932         (cgraph_optimize): ... here.  Remove redundant
7933         cgraph_analyze_functions.
7934         * varasm.c (find_decl_and_mark_needed): Remove no longer
7935         necessary check.
7936         (finish_aliases_1): Adjust check for thunk aliases.
7937
7938 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
7939
7940         * config/arm/arm.md (ctzsi2): Added braces
7941         to avoid warning that broke booststrap.
7942
7943 2009-09-04  Martin Jambor  <mjambor@suse.cz>
7944
7945         PR tree-optimization/41112
7946         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
7947         handle variable-bounded arrays.
7948         (expr_with_var_bounded_array_refs_p): New function.
7949         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
7950
7951 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
7952
7953         * config/s390/2097.md: Removed two incorrect bypasses.
7954         (z10_fsimpdf): Fixed latency.
7955         (z10_fhex): New insn_reservation.
7956         (z10_floaddf): Fixed latency.
7957         (z10_floadsf): Fixed latency.
7958         (z10_ftrunctf): Fixed latency.
7959         (z10_ftruncdf): Fixed latency.
7960         * config/s390/s390.c (z10_cost): Fixed values.
7961         (s390_adjust_priority): Added z10 path.
7962         * config/s390/s390.md (type): Added fhex.
7963         (*mov<mode>_64dfp): Updated type attribute.
7964         (*mov<mode>_64): Updated type attribute.
7965         (*mov<mode>_31): Updated type attribute.
7966         (*mov<mode>"): Likewise.
7967         * config/s390/2084.md (x_fsimpdf): Updated condition.
7968
7969 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
7970
7971         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
7972         RTXs in the predicate for operand 1.
7973
7974 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
7975
7976         * config/arm/arm.md (UNSPEC_RBIT): New constant.
7977         (rbitsi2): New insn.
7978         (ctzsi2): New expand.
7979         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
7980
7981 2009-09-03  Martin Jambor  <mjambor@suse.cz>
7982
7983         * tree-sra.c (duplicate_expr_for_different_base): Removed.
7984         (create_artificial_child_access): Use build_ref_for_offset instead
7985         of duplicate_expr_for_different_base.
7986         (propagate_subacesses_accross_link): Likewise.
7987
7988 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
7989
7990         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
7991         of INSN_P.
7992         (mips16e_collect_argument_saves): Skip debug instructions.
7993         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
7994         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
7995         (r10k_insert_cache_barriers): Likewise.
7996         (mips_reorg_process_insns): Likewise.
7997
7998 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
7999
8000         PR bootstrap/41241
8001         * ira.c (update_equiv_reg): Remove check on class likely spill.
8002
8003 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
8004
8005         PR debug/41236
8006         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
8007         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
8008         it or SUBREG.
8009
8010         PR debug/41238
8011         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
8012         the stack slot if it is passed by invisible reference.
8013         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
8014         by invisible reference.
8015
8016 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8017
8018         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8019         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8020         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
8021         0.
8022         * config/bfin/sync.md: New file.
8023         * config/bfin/bfin.md: Include it.
8024         (UNSPEC_ATOMIC): New.
8025         (UNSPEC_ONES): Provide a unique number.
8026
8027         From Jie Zhang <jie.zhang@analog.com>:
8028         * config/bfin/bfin.c (ret_regs): New.
8029         (must_save_fp_p): Don't return true because of frame_pointer_needed.
8030         (must_save_rets_p): New.
8031         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
8032         current_function_is_leaf.
8033         (do_link): Likewise.
8034         (do_unlink): Likewise.
8035         (expand_interrupt_handler_prologue): Use ret_regs array.
8036         (expand_interrupt_handler_epilogue): Use ret_regs array and
8037         pass return register to gen_return_internal.
8038         (bfin_expand_epilogue): Pass return register to
8039         gen_return_internal.
8040         (bfin_expand_call): Explicitly clobber RETS.
8041         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
8042         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
8043         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
8044         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
8045         RETS.
8046         (return_internal): Take a reg rtx rather than the register number.
8047
8048 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
8049
8050         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
8051         when comparing against estimated_loop_iterations_int return.
8052
8053 2009-09-03  Richard Guenther  <rguenther@suse.de>
8054
8055         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
8056         eh_personality_libfunc.
8057
8058 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8059
8060         * tree-parloops.c (separate_decls_in_region): Add space.
8061
8062 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8063
8064         * tree-parloops.c (separate_decls_in_region): Change the condition
8065         checking if there are reductions in the loop.
8066
8067 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8068
8069         PR tree-optimization/38275
8070         * tree-parloops.c (parallelize_loops): Replace profitability condition
8071         for expected number of iterations.
8072
8073 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8074
8075         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
8076         (bootstrap-debug): Explain conditions in which it becomes default.
8077         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
8078         make it add to it.
8079
8080 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
8081
8082         * doc/invoke.texi (Optimize Options): Move
8083         -finline-small-functions to the -O2 list.
8084
8085 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8086
8087         * toplev.c (process_options): Enable var-tracking-assignments
8088         by default if var-tracking is enabled.
8089
8090 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
8091
8092         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
8093         barrier.
8094         * emit-rtl.c (prev_nonnote_insn_bb): New function.
8095         * rtl.h (prev_nonnote_insn_bb): Declare it.
8096
8097 2009-09-03  Diego Novillo  <dnovillo@google.com>
8098
8099         * cgraph.c (cgraph_node_for_decl): New.
8100         * cgraph.h (cgraph_node_for_decl): Declare.
8101         * tree.c (host_integerp): Return 0 if T is NULL.
8102
8103 2009-09-03  Diego Novillo  <dnovillo@google.com>
8104
8105         * tree.h (struct alias_pair): Move from varasm.c.
8106         (alias_pairs): Likewise.
8107         (TYPE_MAXVAL): Define.
8108         (TYPE_MINVAL): Define.
8109         (iterative_hash_host_wide_int): Declare.
8110         (remove_unreachable_alias_pairs): Declare.
8111         * tree-pass.h (pass_ipa_free_lang_data): Declare.
8112         * diagnostic.c (default_diagnostic_starter): Make extern.
8113         (default_diagnostic_finalizer): Make extern.
8114         * diagnostic.h (default_diagnostic_starter): Declare.
8115         (default_diagnostic_finalizer): Declare.
8116         (default_tree_printer): Declare.
8117         * toplev.c (default_tree_printer): Make extern.
8118
8119 2009-09-03  Richard Guenther  <rguenther@suse.de>
8120             Diego Novillo  <dnovillo@google.com>
8121
8122         * cgraph.c (cgraph_add_new_function): Remove gimplification.
8123         * cgraphunit.c (cgraph_expand_function): Do not emit
8124         associated thunks from here.
8125         (cgraph_emit_thunks): New.
8126         (cgraph_optimize): Call it.
8127         Return if any IPA pass finds an error.
8128         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
8129         by thunks.
8130
8131 2009-09-03  Simon Baldwin  <simonb@google.com>
8132             Rafael Espindola  <espindola@google.com>
8133             Richard Guenther  <rguenther@suse.de>
8134             Doug Kwan  <dougkwan@google.com>
8135             Diego Novillo  <dnovillo@google.com>
8136
8137         * tree.c: Include tree-pass.h, langhooks-def.h,
8138         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
8139         (free_lang_data_in_type): New.
8140         (need_assembler_name_p): New.
8141         (free_lang_data_in_block): New.
8142         (free_lang_data_in_decl): New.
8143         (struct free_lang_data_d): New.
8144         (add_tree_to_fld_list): New.
8145         (find_decls_types_r): New.
8146         (get_eh_types_for_runtime): New.
8147         (find_decls_types_in_eh_region): New.
8148         (find_decls_types_in_node): New.
8149         (find_decls_types_in_var): New.
8150         (free_lang_data_in_cgraph): New.
8151         (free_lang_data): New.
8152         (gate_free_lang_data): New.
8153         (pass_ipa_free_lang_data): New.
8154
8155 2009-09-03  Diego Novillo  <dnovillo@google.com>
8156
8157         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
8158         * langhooks.h (struct lang_hooks): Add field free_lang_data.
8159         (lang_hooks): Remove const qualifier.
8160         * ipa.c (cgraph_remove_unreachable_nodes): Call
8161         remove_unreachable_alias_pairs.
8162         * except.c (add_type_for_runtime): Check if TYPE has
8163         already been converted.
8164         (lookup_type_for_runtime): Likewise.
8165         (check_handled): Handle converted types.
8166         * varasm.c (remove_unreachable_alias_pairs): New.
8167         * gimple.c: Include demangle.h.
8168         (gimple_decl_printable_name): New.
8169         (gimple_fold_obj_type_ref): New.
8170         * gimple.h (gimple_decl_printable_name): Declare.
8171         (gimple_fold_obj_type_ref): Declare.
8172         * passes.c (init_optimization_passes): Add pass
8173         pass_ipa_free_lang_data.
8174         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
8175         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
8176
8177 2009-09-03  Diego Novillo  <dnovillo@google.com>
8178
8179         * c-lang.c (lang_hooks): Remove const qualifier.
8180
8181 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
8182
8183         * doc/install.texi (*-*-freebsd*): Update target information.
8184
8185 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8186
8187         * hard-reg-set.h (call_fixed_regs): Remove.
8188         * reginfo.c (call_fixed_regs): Remove.
8189         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8190         (globalize_reg): Don't use call_fixed_regs.
8191         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8192         call_fixed_regs.
8193
8194 2009-09-01  Michael Matz  <matz@suse.de>
8195
8196         * expr.h (emit_storent_insn, expand_expr_real_1,
8197         expand_expr_real_2): Declare.
8198         * expr.c (emit_storent_insn, expand_expr_real_1,
8199         expand_expr_real_2): Export.
8200         (store_expr): Setting and evaluating dont_return_target is useless.
8201         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8202         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8203         * except.c (expand_resx_expr): Rename to ...
8204         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8205         * except.h (expand_resx_stmt): Declare.
8206         * stmt.c: Add include gimple.h
8207         (expand_asm_expr): Rename to ...
8208         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8209         (expand_case): Rewrite to take gimple statement.
8210         * tree.h (expand_asm_stmt): Declare.
8211         (expand_case): Change prototype.
8212         * Makefile.in (stmt.o): Depend on gimple.h.
8213         * builtins.c (expand_builtin_synchronize): Build gimple asm
8214         statement, not an ASM_EXPR.
8215         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8216         gimple_to_tree, release_stmt_tree): Remove.
8217         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8218         ggc_free, but hold comparison code and operands separately.
8219         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8220         (expand_call_stmt, expand_gimple_stmt_1,
8221         expand_gimple_stmt): New helpers.
8222         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8223         release_stmt_tree.  Call expand_gimple_stmt instead.
8224         (expand_gimple_basic_block): Ditto.
8225
8226         * calls.c (emit_call_1): Don't look at EH regions here, make
8227         fntree parameter useless.
8228         (expand_call): New local rettype for TREE_TYPE(exp), use it
8229         throughout.  Remove local p, use addr instead.
8230         Don't look at EH regions here.
8231
8232 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8233
8234         * doc/invoke.texi (-fsched-pressure): Document it.
8235         (-fsched-reg-pressure-heuristic): Remove it.
8236
8237         * reload.c (ira.h): Include.
8238         (find_reloads): Add choosing reload on number of small spilled
8239         classes.
8240
8241         * haifa-sched.c (ira.h): Include.
8242         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8243         saved_reg_pressure, curr_reg_live, saved_reg_live,
8244         region_ref_regs): New variables.
8245         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8246         initiate_reg_pressure_info, setup_ref_regs,
8247         initiate_bb_reg_pressure_info, save_reg_pressure,
8248         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8249         functions.
8250         (setup_insn_reg_pressure_info): New function.
8251         (rank_for_schedule): Add pressure checking and insn issue time.
8252         Remove comparison of insn reg weights.
8253         (ready_sort): Set insn reg pressure info.
8254         (update_register_pressure, setup_insn_max_reg_pressure,
8255         update_reg_and_insn_max_reg_pressure,
8256         sched_setup_bb_reg_pressure_info): New functions.
8257         (schedule_insn): Add code for printing and updating reg pressure info.
8258         (find_set_reg_weight, find_insn_reg_weight): Remove.
8259         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8260         (debug_ready_list): Print reg pressure info.
8261         (schedule_block): Ditto.  Check insn issue time.
8262         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8263         reg pressure related info.
8264         (sched_finish): Free some reg pressure related info.
8265         (fix_tick_ready): Make insn always ready if pressure_p.
8266         (init_h_i_d): Don't call find_insn_reg_weight.
8267         (haifa_finish_h_i_d): Free insn reg pressure info.
8268
8269         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8270         ira_memory_move_cost, ira_class_hard_regs,
8271         ira_class_hard_regs_num, ira_no_alloc_regs,
8272         ira_available_class_regs, ira_reg_class_cover_size,
8273         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8274
8275         * ira-lives.c (single_reg_class): Check mode to find how many
8276         registers are necessary for operand.
8277         (ira_implicitly_set_insn_hard_regs): New.
8278
8279         * common.opt (fsched-pressure): New options.
8280         (fsched-reg-pressure-heuristic): Remove.
8281
8282         * ira.c (setup_eliminable_regset): Rename to
8283         ira_setup_eliminable_regset.  Make it external.
8284         (expand_reg_info): Pass cover class to setup_reg_classes.
8285         (ira): Call resize_reg_info instead of allocate_reg_info.
8286
8287         * sched-deps.c: Include ira.h.
8288         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8289         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8290         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8291         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8292         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8293         mark_insn_reg_store, mark_insn_reg_clobber,
8294         setup_insn_reg_pressure_info): New.
8295         (sched_analyze_1): Update implicit_reg_pending_uses.
8296         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8297         Use them to create dependencies.  Set insn reg uses and pressure
8298         info.  Process reg_pending_uses in one place.
8299         (free_deps): Free implicit sets.
8300         (remove_from_deps): Remove implicit sets if necessary.  Check
8301         implicit sets when clearing reg_last_in_use.
8302         (init_deps_global): Clear implicit_reg_pending_clobbers and
8303         implicit_reg_pending_uses.
8304
8305         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8306         ira_memory_move_cost, ira_class_hard_regs,
8307         ira_class_hard_regs_num, ira_no_alloc_regs,
8308         ira_available_class_regs, ira_reg_class_cover_size,
8309         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8310         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8311         ira_implicitly_set_insn_hard_regs): New prototypes.
8312
8313         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8314         cost_elements_num): New variables.
8315         (allocno_costs, total_costs): Rename to costs and
8316         total_allocno_costs.
8317         (COSTS_OF_ALLOCNO): Rename to COSTS.
8318         (allocno_pref): Rename to pref.
8319         (allocno_pref_buffer): Rename to pref_buffer.
8320         (common_classes): Rename to regno_cover_class.
8321         (COST_INDEX): New.
8322         (record_reg_classes): Set allocno attributes only if allocno_p.
8323         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8324         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8325         and COSTS_OF_ALLOCNO.
8326         (print_costs): Rename to print_allocno_costs.
8327         (print_pseudo_costs): New.
8328         (process_bb_node_for_costs): Split into 2 functions with new
8329         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8330         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8331         new parameter dump_file.  Use cost_elements_num instead of
8332         ira_allocnos_num.  Make one iteration if preferred classes were
8333         already calculated for scheduler.  Make 2 versions of code
8334         depending on allocno_p.
8335         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8336         regno_cover_class and COSTS instead of common_classes and
8337         COSTS_OF_ALLOCNO.
8338         (init_costs, finish_costs): New.
8339         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8340         init_costs and finish_costs.
8341         (ira_set_pseudo_classes): New.
8342
8343         * rtl.h (allocate_reg_info): Remove.
8344         (resize_reg_info): Change return type.
8345         (reg_cover_class): New.
8346         (setup_reg_classes): Add new parameter.
8347
8348         * sched-int.h (struct deps_reg): New member implicit_sets.
8349         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8350         (INCREASE_BITS): New macro.
8351         (struct reg_pressure_data, struct reg_use_data): New.
8352         (struct _haifa_insn_data): Remove reg_weight.  Add members
8353         reg_pressure, reg_use_list, reg_set_list, and
8354         reg_pressure_excess_cost_change.
8355         (struct deps): New member implicit_sets.
8356         (pressure_p): New variable.
8357         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8358         (struct reg_pressure_data, struct reg_use_data): New.
8359         (INSN_REG_WEIGHT): Remove.
8360         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8361         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8362         (sched_init_region_reg_pressure_info,
8363         sched_setup_bb_reg_pressure_info): New prototypes.
8364
8365         * reginfo.c (struct reg_pref): New member coverclass.
8366         (reg_cover_class): New function.
8367         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8368         (reg_info_size): New variable.
8369         (allocate_reg_info): Make static.  Setup reg_info_size.
8370         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8371         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8372
8373         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8374         the dependencies.
8375
8376         * sched-rgn.c (deps_join): Set up implicit_sets.
8377         (schedule_region): Set up region and basic blocks pressure
8378         relative info.
8379
8380         * passes.c (init_optimization_passes): Move
8381         pass_subregs_of_mode_init before pass_sched.
8382
8383 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8384
8385         * tree-sra.c (struct access): New field grp_hint.
8386         (dump_access): Dump grp_hint.
8387         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8388         multiple times.
8389         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8390         those which have been specifically read and somehow written to.
8391         (propagate_subacesses_accross_link): Set grp_hint of right child and
8392         also possibly of the left child.
8393
8394 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8395
8396         * tree-object-size.c (addr_object_size): Always use object_size_type
8397         0 or 2 when determining the pointer pointed object size.
8398
8399 2009-09-02  Richard Guenther  <rguenther@suse.de>
8400
8401         Revert
8402         2009-08-31  Richard Guenther  <rguenther@suse.de>
8403
8404         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8405         to query if the memory regions for memmove overlap.
8406         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8407         asserts on pointers, instead deal with odd trees.
8408         (ptr_derefs_may_alias_p): Likewise.
8409         (refs_may_alias_p_1): Constructor bases also never alias.
8410
8411 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8412
8413         Revert:
8414         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8415         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8416
8417 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8418
8419         * doc/invoke.texi (-fvar-tracking-assignments): New.
8420         (-fvar-tracking-assignments-toggle): New.
8421         (-fdump-final-insns=file): Mark filename as optional.
8422         (--param min-nondebug-insn-uid): New.
8423         (-gdwarf-@{version}): Mention version 4.
8424         * opts.c (common_handle_option): Accept it.
8425         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8426         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8427         insns as uses.  Don't reject change because of debug insn.
8428         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8429         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8430         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8431         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8432         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8433         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8434         * doc/gimple.texi (is_gimple_debug): New.
8435         (gimple_debug_bind_p): New.
8436         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8437         * doc/install.texi (bootstrap-debug): More details.
8438         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8439         (bootstrap-debug-lib): More details.
8440         (bootstrap-debug-ckovw): Update.
8441         (bootstrap-time): New.
8442         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8443         (insert_phi_nodes_for): Insert debug stmts.
8444         (rewrite_stmt): Take iterator.  Insert debug stmts.
8445         (rewrite_enter_block): Adjust.
8446         (maybe_replace_use_in_debug_stmt): New.
8447         (rewrite_update_stmt): Use it.
8448         (mark_use_interesting): Return early for debug stmts.
8449         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8450         stmts before replacing stmt.
8451         (move_computations_stmt): Likewise.
8452         * ira-conflicts.c (add_copies): Skip debug insns.
8453         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8454         (regstat_bb_compute_ri): Skip debug insns.
8455         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8456         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8457         check_loop_closed_ssa_stmt): Skip debug stmts.
8458         * tree-tailcall.c (find_tail_calls): Likewise.
8459         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8460         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8461         (build_var_debug_value_stat): Declare.
8462         (build_var_debug_value): Define.
8463         (target_for_debug_bind): Declare.
8464         * reload.c (find_equiv_reg): Skip debug insns.
8465         * rtlanal.c (reg_used_between_p): Skip debug insns.
8466         (side_effects_p): Likewise.
8467         (canonicalize_condition): Likewise.
8468         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8469         insns never depend on debug insns.
8470         (create_ddg_dep_no_link): Likewise.
8471         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8472         Don't add inter-loop dependencies for debug insns.
8473         (build_intra_loop_deps): Likewise.
8474         (create_ddg): Count debug insns.
8475         * ddg.h (struct ddg::num_debug): New.
8476         (num_backargs): Pair up with previous int field.
8477         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8478         -fcompare-debug-second.
8479         * final.c (get_attr_length_1): Skip debug insns.
8480         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8481         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8482         (driver_self_specs): Map -fdump-final-insns to
8483         -fdump-final-insns=..
8484         (get_local_tick): New.
8485         (compare_debug_dump_opt_spec_function): Test for . argument and
8486         compute output name.  Compute temp output spec without flag name.
8487         Compute -frandom-seed.
8488         (OPT): Undef after use.
8489         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8490         (average_num_loop_insns): Likewise.
8491         * params.h (MIN_NONDEBUG_INSN_UID): New.
8492         * gimple.def (GIMPLE_DEBUG): New.
8493         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8494         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8495         (merge_in_block): Fix whitespace.
8496         * toplev.c (flag_var_tracking): Update comment.
8497         (flag_var_tracking_assignments): New.
8498         (flag_var_tracking_assignments_toggle): New.
8499         (process_options): Don't open final insns dump file if we're not
8500         going to write to it.  Compute defaults for var_tracking.
8501         * df-scan.c (df_insn_rescan_debug_internal): New.
8502         (df_uses_record): Handle debug insns.
8503         * haifa-sched.c (ready): Initialize n_debug.
8504         (contributes_to_priority): Skip debug insns.
8505         (dep_list_size): New.
8506         (priority): Use it.
8507         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8508         they're ready.  Disregard previous debug insns to make decisions.
8509         (queue_insn): Never queue debug insns.
8510         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8511         (schedule_insn): Don't reject debug insns because of issue rate.
8512         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8513         (queue_to_ready): Skip and discount debug insns.
8514         (choose_ready): Let debug insns through.
8515         (schedule_block): Check boundary debug insns.  Discount debug
8516         insns, schedule them early.  Adjust whitespace.
8517         (set_priorities): Check for boundary debug insns.
8518         (add_jump_dependencies): Use dep_list_size.
8519         (prev_non_location_insn): New.
8520         (check_cfg): Use it.
8521         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8522         stmts.
8523         (remove_unused_ivs): Reset debug stmts.
8524         * modulo-sched.c (const_iteration_count): Skip debug insns.
8525         (res_MII): Discount debug insns.
8526         (loop_single_full_bb_p): Skip debug insns.
8527         (sms_schedule): Likewise.
8528         (sms_schedule_by_order): Likewise.
8529         (ps_has_conflicts): Likewise.
8530         * caller-save.c (refmarker_fn): New.
8531         (save_call_clobbered_regs): Replace regs with saved mem in
8532         debug insns.
8533         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8534         Call refmarker_fn mark for hardregnos.
8535         (mark_reg_as_referenced): New.
8536         (replace_reg_with_saved_mem): New.
8537         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8538         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8539         searching back.
8540         (cse_extended_basic_block): Skip debug insns.
8541         (count_reg_usage): Likewise.
8542         (is_dead_reg): New, split out of...
8543         (set_live_p): ... here.
8544         (insn_live_p): Use it for debug insns.
8545         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8546         (execute_optimize_stdarg): Likewise.
8547         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8548         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8549         changes in debug stmts as changes.
8550         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8551         (moveup_expr): Don't move across debug insns.  Don't move
8552         debug insn if it would create a bookkeeping block.
8553         (moveup_expr_cached): Don't use cache for debug insns that
8554         are heads of blocks.
8555         (compute_av_set_inside_bb): Skip debug insns.
8556         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8557         dead code.
8558         (block_valid_for_bookkeeping_p); Support lax searches.
8559         (create_block_for_bookkeeping): Adjust block numbers when
8560         encountering debug-only blocks.
8561         (find_place_for_bookkeeping): Deal with debug-only blocks.
8562         (generate_bookkeeping_insn): Accept no place to insert.
8563         (remove_temp_moveop_nops): New argument full_tidying.
8564         (prepare_place_to_insert): Deal with debug insns.
8565         (advance_state_on_fence): Debug insns don't start cycles.
8566         (update_boundaries): Take fence as argument.  Deal with
8567         debug insns.
8568         (schedule_expr_on_boundary): No full_tidying on debug insns.
8569         (fill_insns): Deal with debug insns.
8570         (track_scheduled_insns_and_blocks): Don't count debug insns.
8571         (need_nop_to_preserve_insn_bb): New, split out of...
8572         (remove_insn_from_stream): ... this.
8573         (fur_orig_expr_not_found): Skip debug insns.
8574         * rtl.def (VALUE): Move up.
8575         (DEBUG_INSN): New.
8576         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8577         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8578         Set it if debug stmts are found.
8579         (statement_sink_location): Skip debug stmts.  Propagate
8580         moving defs into debug stmts.
8581         * ifcvt.c (first_active_insn): Skip debug insns.
8582         (last_active_insns): Likewise.
8583         (cond_exec_process_insns): Likewise.
8584         (noce_process_if_block): Likewise.
8585         (check_cond_move_block): Likewise.
8586         (cond_move_convert_if_block): Likewise.
8587         (block_jumps_and_fallthru_p): Likewise.
8588         (dead_or_predicable): Likewise.
8589         * dwarf2out.c (debug_str_hash_forced): New.
8590         (find_AT_string): Add comment.
8591         (gen_label_for_indirect_string): New.
8592         (get_debug_string_label): New.
8593         (AT_string_form): Use it.
8594         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8595         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8596         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8597         several operations that cannot be represented with DWARF opcodes.
8598         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8599         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8600         (dwarf2out_var_location): Take during-call mark into account.
8601         (output_indirect_string): Update comment.  Output if there are
8602         label and references.
8603         (prune_indirect_string): New.
8604         (prune_unused_types): Call it if debug_str_hash_forced.
8605         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8606         (dw_long_long_const): Remove.
8607         (struct dw_val_struct): Change val_long_long type to rtx.
8608         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8609         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8610         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8611         component instead of HOST_BITS_PER_LONG.
8612         (output_loc_operands): Likewise.  For const8* assert
8613         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
8614         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
8615         rather than HOST_BITS_PER_LONG is >= 64.
8616         (add_AT_long_long): Remove val_hi and val_lo arguments, add
8617         val_const_double.
8618         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
8619         HOST_BITS_PER_LONG for dw_val_class_long_long.
8620         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
8621         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
8622         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
8623         DW_OP_stack_value.
8624         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
8625         Handle DW_OP_implicit_value.
8626         (extract_int): Move prototype earlier.
8627         (mem_loc_descriptor): For SUBREG punt if inner
8628         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
8629         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
8630         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
8631         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
8632         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
8633         instead of Pmode size.
8634         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
8635         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
8636         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
8637         (concat_loc_descriptor, concatn_loc_descriptor,
8638         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
8639         (add_location_or_const_value_attribute): Likewise.  For single
8640         location loc_lists attempt to use add_const_value_attribute
8641         for constant decls.  Add DW_AT_const_value even if
8642         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
8643         in its expression.
8644         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
8645         (control_flow_insn_p): Likewise.
8646         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
8647         (separate_decls_in_region_debug_bind): New.
8648         (separate_decls_in_region): Process debug bind stmts afterwards.
8649         * recog.c (verify_changes): Handle debug insns.
8650         (extract_insn): Likewise.
8651         (peephole2_optimize): Skip debug insns.
8652         * dse.c (scan_insn): Skip debug insns.
8653         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
8654         Pass it on.
8655         (setup_id_for_insn): Handle debug insns.
8656         (maybe_tidy_empty_bb): Adjust whitespace.
8657         (tidy_control_flow): Skip debug insns.
8658         (sel_remove_insn): Adjust for debug insns.
8659         (sel_estimate_number_of_insns): Skip debug insns.
8660         (create_insn_rtx_from_pattern): Handle debug insns.
8661         (create_copy_of_insn_rtx): Likewise.
8662         * sel-sched-.h (sel_bb_end): Declare.
8663         (sel_bb_empty_or_nop_p): New.
8664         (get_all_loop_exits): Use it.
8665         (_eligible_successor_edge_p): Likewise.
8666         (return_nop_to_pool): Adjust.
8667         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
8668         * ira-lives.c (process_bb_node_lives): Skip debug insns.
8669         * gimple-pretty-print.c (dump_gimple_debug): New.
8670         (dump_gimple_stmt): Use it.
8671         (dump_bb_header): Skip gimple debug stmts.
8672         * regmove.c (optimize_reg_copy_1): Discount debug insns.
8673         (fixup_match_2): Likewise.
8674         (regmove_backward_pass): Likewise.  Simplify combined
8675         replacement.  Handle debug insns.
8676         * function.c (instantiate_virtual_regs): Handle debug insns.
8677         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
8678         * print-rtl.h: Include cselib.h.
8679         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
8680         * df.h (df_inns_rescan_debug_internal): Declare.
8681         * gcse.c (alloc_hash_table): Estimate n_insns.
8682         (cprop_insn): Don't regard debug insns as changes.
8683         (bypass_conditional_jumps): Skip debug insns.
8684         (one_pre_gcse_pass): Adjust.
8685         (one_code_hoisting_pass): Likewise.
8686         (compute_ld_motion_mems): Skip debug insns.
8687         (one_cprop_pass): Adjust.
8688         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
8689         (if_convertible_stmt_p): Handle debug stmts.
8690         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
8691         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
8692         * ira-build.c (create_bb_allocnos): Skip debug insns.
8693         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
8694         (has_single_use): Likewise.
8695         (single_imm_use): Likewise.
8696         (num_imm_uses): Likewise.
8697         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
8698         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
8699         (create_outofssa_var_map): Likewise.
8700         * lower-subreg.c (adjust_decomposed_uses): New.
8701         (resolve_debug): New.
8702         (decompose_multiword_subregs): Use it.
8703         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
8704         * emit-rtl.c: Include params.h.
8705         (cur_debug_insn_uid): Define.
8706         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
8707         (copy_rtx_if_shared_1): Handle debug insns.
8708         (reset_used_flags): Likewise.
8709         (set_used_flags): LIkewise.
8710         (get_max_insn_count): New.
8711         (next_nondebug_insn): New.
8712         (prev_nondebug_insn): New.
8713         (make_debug_insn_raw): New.
8714         (emit_insn_before_noloc): Handle debug insns.
8715         (emit_jump_insn_before_noloc): Likewise.
8716         (emit_call_insn_before_noloc): Likewise.
8717         (emit_debug_insn_before_noloc): New.
8718         (emit_insn_after_noloc): Handle debug insns.
8719         (emit_jump_insn_after_noloc): Likewise.
8720         (emit_call_insn_after_noloc): Likewise.
8721         (emit_debug_insn_after_noloc): Likewise.
8722         (emit_insn_after): Take loc from earlier non-debug insn.
8723         (emit_jump_insn_after): Likewise.
8724         (emit_call_insn_after): Likewise.
8725         (emit_debug_insn_after_setloc): New.
8726         (emit_debug_insn_after): New.
8727         (emit_insn_before): Take loc from later non-debug insn.
8728         (emit_jump_insn_before): Likewise.
8729         (emit_call_insn_before): Likewise.
8730         (emit_debug_insn_before_setloc): New.
8731         (emit_debug_insn_before): New.
8732         (emit_insn): Handle debug insns.
8733         (emit_debug_insn): New.
8734         (emit_jump_insn): Handle debug insns.
8735         (emit_call_insn): Likewise.
8736         (emit): Likewise.
8737         (init_emit): Take min-nondebug-insn-uid into account.
8738         Initialize cur_debug_insn_uid.
8739         (emit_copy_of_insn_after): Handle debug insns.
8740         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
8741         location of single rhs in place.
8742         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
8743         (floor_sdiv_adjust): New.
8744         (cell_sdiv_adjust): New.
8745         (cell_udiv_adjust): New.
8746         (round_sdiv_adjust): New.
8747         (round_udiv_adjust): New.
8748         (wrap_constant): Moved from cselib.
8749         (unwrap_constant): New.
8750         (expand_debug_expr): New.
8751         (expand_debug_locations): New.
8752         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
8753         debug bind stmts.
8754         (gimple_expand_cfg): Expand debug locations.
8755         * cselib.c: Include tree-pass.h.
8756         (struct expand_value_data): New.
8757         (cselib_record_sets_hook): New.
8758         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
8759         (cselib_clear_table): Move, and implemnet in terms of...
8760         (cselib_reset_table_with_next_value): ... this.
8761         (cselib_get_next_unknown_value): New.
8762         (discard_useless_locs): Don't discard preserved values.
8763         (cselib_preserve_value): New.
8764         (cselib_preserved_value_p): New.
8765         (cselib_preserve_definitely): New.
8766         (cselib_clear_preserve): New.
8767         (cselib_preserve_only_values): New.
8768         (new_cselib_val): Take rtx argument.  Dump it in details.
8769         (cselib_lookup_mem): Adjust.
8770         (expand_loc): Take regs_active in struct.  Adjust.  Silence
8771         dumps unless details are requested.
8772         (cselib_expand_value_rtx_cb): New.
8773         (cselib_expand_value_rtx): Rename and reimplment in terms of...
8774         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
8775         without details.  Copy more subregs.  Try to resolve values
8776         using a callback.  Wrap constants.
8777         (cselib_subst_to_values): Adjust.
8778         (cselib_log_lookup): New.
8779         (cselib_lookup): Call it.
8780         (cselib_invalidate_regno): Don't count preserved values as useless.
8781         (cselib_invalidate_mem): Likewise.
8782         (cselib_record_set): Likewise.
8783         (struct set): Renamed to cselib_set, moved to cselib.h.
8784         (cselib_record_sets): Adjust.  Call hook.
8785         (cselib_process_insn): Reset table when it would be cleared.
8786         (dump_cselib_val): New.
8787         (dump_cselib_table): New.
8788         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
8789         (remove_forwarder_block): Support moving debug stmts.
8790         * cselib.h (cselib_record_sets_hook): Declare.
8791         (cselib_expand_callback): New type.
8792         (cselib_expand_value_rtx_cb): Declare.
8793         (cselib_reset_table_with_next_value): Declare.
8794         (cselib_get_next_unknown_value): Declare.
8795         (cselib_preserve_value): Declare.
8796         (cselib_preserved_value_p): Declare.
8797         (cselib_preserve_only_values): Declare.
8798         (dump_cselib_table): Declare.
8799         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
8800         (try_crossjump_to_edge): Likewise.
8801         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
8802         dominated blocks when debug stmts are present.
8803         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
8804         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
8805         (set_var_live_on_entry): Likewise.
8806         * loop-invariant.c (find_invariants_bb): Skip debug insns.
8807         * cfglayout.c (curr_location, last_location): Make static.
8808         (set_curr_insn_source_location): Don't avoid bouncing.
8809         (get_curr_insn_source_location): New.
8810         (get_curr_insn_block): New.
8811         (duplicate_insn_chain): Handle debug insns.
8812         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
8813         into debug stmts.
8814         * common.opt (fcompare-debug): Move to sort order.
8815         (fdump-unnumbered-links): Likewise.
8816         (fvar-tracking-assignments): New.
8817         (fvar-tracking-assignments-toggle): New.
8818         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
8819         because of debug stmts.
8820         (mark_stmt_if_obviously_necessary): Mark debug stmts.
8821         (eliminate_unnecessary_stmts): Walk dominated blocks before
8822         dominators.
8823         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
8824         * ira.c (memref_used_between_p): Skip debug insns.
8825         (update_equiv_regs): Likewise.
8826         * sched-deps.c (sd_lists_size): Accept empty list.
8827         (sd_init_insn): Mark debug insns.
8828         (sd_finish_insn): Unmark them.
8829         (sd_add_dep): Reject non-debug deps on debug insns.
8830         (fixup_sched_groups): Give debug insns group treatment.
8831         Skip debug insns.
8832         (sched_analyze_reg): Don't mark debug insns for sched before call.
8833         (sched_analyze_2): Handle debug insns.
8834         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
8835         insns.
8836         (deps_analyze_insn): Handle debug insns.
8837         (deps_start_bb): Skip debug insns.
8838         (init_deps): Initialize last_debug_insn.
8839         * tree-ssa.c (target_for_debug_bind): New.
8840         (find_released_ssa_name): New.
8841         (propagate_var_def_into_debug_stmts): New.
8842         (propagate_defs_into_debug_stmts): New.
8843         (verify_ssa): Skip debug bind stmts without values.
8844         (warn_uninialized_vars): Skip debug stmts.
8845         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
8846         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
8847         (rtx_equal_p): Likewise.
8848         * ira-costs.c (scan_one_insn): Skip debug insns.
8849         (process_bb_node_for_hard_reg_moves): Likewise.
8850         * rtl.h (DEBUG_INSN_P): New.
8851         (NONDEBUG_INSN_P): New.
8852         (MAY_HAVE_DEBUG_INSNS): New.
8853         (INSN_P): Accept debug insns.
8854         (RTX_FRAME_RELATED_P): Likewise.
8855         (INSN_DELETED_P): Likewise
8856         (PAT_VAR_LOCATION_DECL): New.
8857         (PAT_VAR_LOCATION_LOC): New.
8858         (PAT_VAR_OCATION_STATUS): New.
8859         (NOTE_VAR_LOCATION_DECL): Reimplement.
8860         (NOTE_VAR_LOCATION_LOC): Likewise.
8861         (NOTE_VAR_LOCATION_STATUS): Likewise.
8862         (INSN_VAR_LOCATION): New.
8863         (INSN_VAR_LOCATION_DECL): New.
8864         (INSN_VAR_LOCATION_LOC): New.
8865         (INSN_VAR_LOCATION_STATUS): New.
8866         (gen_rtx_UNKNOWN_VAR_LOC): New.
8867         (VAR_LOC_UNKNOWN_P): New.
8868         (NOTE_DURING_CALL_P): New.
8869         (SCHED_GROUP_P): Accept debug insns.
8870         (emit_debug_insn_before): Declare.
8871         (emit_debug_insn_before_noloc): Declare.
8872         (emit_debug_insn_beore_setloc): Declare.
8873         (emit_debug_insn_after): Declare.
8874         (emit_debug_insn_after_noloc): Declare.
8875         (emit_debug_insn_after_setloc): Declare.
8876         (emit_debug_insn): Declare.
8877         (make_debug_insn_raw): Declare.
8878         (prev_nondebug_insn): Declare.
8879         (next_nondebug_insn): Declare.
8880         (delegitimize_mem_from_attrs): Declare.
8881         (get_max_insn_count): Declare.
8882         (wrap_constant): Declare.
8883         (unwrap_constant): Declare.
8884         (get_curr_insn_source_location): Declare.
8885         (get_curr_insn_block): Declare.
8886         * tree-inline.c (insert_debug_decl_map): New.
8887         (processing_debug_stmt): New.
8888         (remap_decl): Don't create new mappings in debug stmts.
8889         (remap_gimple_op_r): Don't add references in debug stmts.
8890         (copy_tree_body_r): Likewise.
8891         (remap_gimple_stmt): Handle debug bind stmts.
8892         (copy_bb): Skip debug stmts.
8893         (copy_edges_for_bb): Likewise.
8894         (copy_debug_stmt): New.
8895         (copy_debug_stmts): New.
8896         (copy_body): Copy debug stmts at the end.
8897         (insert_init_debug_bind): New.
8898         (insert_init_stmt): Take id.  Skip and emit debug stmts.
8899         (setup_one_parameter): Remap variable earlier, register debug mapping.
8900         (estimate_num_insns): Skip debug stmts.
8901         (expand_call_inline): Preserve debug_map.
8902         (optimize_inline_calls): Check for no debug_stmts left-overs.
8903         (unsave_expr_now): Preserve debug_map.
8904         (copy_gimple_seq_and_replace_locals): Likewise.
8905         (tree_function_versioning): Check for no debug_stmts left-overs.
8906         Init and destroy debug_map as needed.  Split edges unconditionally.
8907         (build_duplicate_type): Init and destroy debug_map as needed.
8908         * tree-inline.h: Include gimple.h instead of pointer-set.h.
8909         (struct copy_body_data): Add debug_stmts and debug_map.
8910         * sched-int.h (struct ready_list): Add n_debug.
8911         (struct deps): Add last_debug_insn.
8912         (DEBUG_INSN_SCHED_P): New.
8913         (BOUNDARY_DEBUG_INSN_P): New.
8914         (SCHEDULE_DEBUG_INSN_P): New.
8915         (sd_iterator_cond): Accept empty list.
8916         * combine.c (create_log_links): Skip debug insns.
8917         (combine_instructions): Likewise.
8918         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
8919         return value is always unshared.
8920         (struct rtx_subst_pair): New.
8921         (auto_adjust_pair): New.
8922         (propagate_for_debug_subst): New.
8923         (propagate_for_debug): New.
8924         (try_combine): Skip debug insns.  Propagate removed defs into
8925         debug insns.
8926         (next_nonnote_nondebug_insn): New.
8927         (distribute_notes): Use it.  Skip debug insns.
8928         (distribute_links): Skip debug insns.
8929         * tree-outof-ssa.c (set_location_for_edge): Likewise.
8930         * resource.c (mark_target_live_regs): Likewise.
8931         * var-tracking.c: Include cselib.h and target.h.
8932         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
8933         MO_VAL_SET.
8934         (micro_operation_type_name): New.
8935         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
8936         (struct micro_operation_def): Update comments.
8937         (decl_or_value): New type.  Use instead of decls.
8938         (struct emit_note_data_def): Add vars.
8939         (struct attrs_def): Use decl_or_value.
8940         (struct variable_tracking_info_def): Add permp, flooded.
8941         (struct location_chain_def): Update comment.
8942         (struct variable_part_def): Use decl_or_value.
8943         (struct variable_def): Make var_part a variable length array.
8944         (valvar_pool): New.
8945         (scratch_regs): New.
8946         (cselib_hook_called): New.
8947         (dv_is_decl_p): New.
8948         (dv_is_value_p): New.
8949         (dv_as_decl): New.
8950         (dv_as_value): New.
8951         (dv_as_opaque): New.
8952         (dv_onepart_p): New.
8953         (dv_pool): New.
8954         (IS_DECL_CODE): New.
8955         (check_value_is_not_decl): New.
8956         (dv_from_decl): New.
8957         (dv_from_value): New.
8958         (dv_htab_hash): New.
8959         (variable_htab_hash): Use it.
8960         (variable_htab_eq): Support values.
8961         (variable_htab_free): Free from the right pool.
8962         (attrs_list_member, attrs_list_insert): Use decl_or_value.
8963         (attrs_list_union): Adjust.
8964         (attrs_list_mpdv_union): New.
8965         (tie_break_pointers): New.
8966         (canon_value_cmp): New.
8967         (unshare_variable): Return possibly-modified slot.
8968         (vars_copy_1): Adjust.
8969         (var_reg_decl_set): Adjust.  Split out of...
8970         (var_reg_set): ... this.
8971         (get_init_value): Adjust.
8972         (var_reg_delete_and_set): Adjust.
8973         (var_reg_delete): Adjust.
8974         (var_regno_delete): Adjust.
8975         (var_mem_decl_set): Split out of...
8976         (var_mem_set): ... this.
8977         (var_mem_delete_and_set): Adjust.
8978         (var_mem_delete): Adjust.
8979         (val_store): New.
8980         (val_reset): New.
8981         (val_resolve): New.
8982         (variable_union): Adjust.  Speed up merge of 1-part vars.
8983         (variable_canonicalize): Use unshared slot.
8984         (VALUED_RECURSED_INTO): New.
8985         (find_loc_in_1pdv): New.
8986         (struct dfset_merge): New.
8987         (insert_into_intersection): New.
8988         (intersect_loc_chains): New.
8989         (loc_cmp): New.
8990         (canonicalize_loc_order_check): New.
8991         (canonicalize_values_mark): New.
8992         (canonicalize_values_star): New.
8993         (variable_merge_over_cur): New.
8994         (variable_merge_over_src): New.
8995         (dataflow_set_merge): New.
8996         (dataflow_set_equiv_regs): New.
8997         (remove_duplicate_values): New.
8998         (struct dfset_post_merge): New.
8999         (variable_post_merge_new_vals): New.
9000         (variable_post_merge_perm_vals): New.
9001         (dataflow_post_merge_adjust): New.
9002         (find_mem_expr_in_1pdv): New.
9003         (dataflow_set_preserve_mem_locs): New.
9004         (dataflow_set_remove_mem_locs): New.
9005         (dataflow_set_clear_at_call): New.
9006         (onepart_variable_different_p): New.
9007         (variable_different_p): Use it.
9008         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
9009         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
9010         if not needed.
9011         (track_loc_p): Pass it true.
9012         (struct count_use_info): New.
9013         (find_use_val): New.
9014         (replace_expr_with_values): New.
9015         (log_op_type): New.
9016         (use_type): New, partially split out of...
9017         (count_uses): ... this.  Count new micro-ops.
9018         (count_uses_1): Adjust.
9019         (count_stores): Adjust.
9020         (count_with_sets): New.
9021         (VAL_NEEDS_RESOLUTION): New.
9022         (VAL_HOLDS_TRACK_EXPR): New.
9023         (VAL_EXPR_IS_COPIED): New.
9024         (VAL_EXPR_IS_CLOBBERED): New.
9025         (add_uses): Adjust.  Generate new micro-ops.
9026         (add_uses_1): Adjust.
9027         (add_stores): Generate new micro-ops.
9028         (add_with_sets): New.
9029         (find_src_status): Adjust.
9030         (find_src_set_src): Adjust.
9031         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
9032         Handle new micro-ops.  Canonicalize value equivalances.
9033         (vt_find_locations): Compute total size of hash tables for
9034         dumping.  Perform merge for var-tracking-assignments.  Don't
9035         disregard single-block loops.
9036         (dump_attrs_list): Handle decl_or_value.
9037         (dump_variable): Take variable.  Deal with decl_or_value.
9038         (dump_variable_slot): New.
9039         (dump_vars): Use it.
9040         (dump_dataflow_sets): Adjust.
9041         (set_slot_part): New, extended to support one-part variables
9042         after splitting out of...
9043         (set_variable_part): ... this.
9044         (clobber_slot_part): New, split out of...
9045         (clobber_variable_part): ... this.
9046         (delete_slot_part): New, split out of...
9047         (delete_variable_part): .... this.
9048         (check_wrap_constant): New.
9049         (vt_expand_loc_callback): New.
9050         (vt_expand_loc): New.
9051         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
9052         EMIT_NOTE_AFTER_CALL_INSN.
9053         (emit_notes_for_differences_1): Adjust.  Handle values.
9054         (emit_notes_for_differences_2): Likewise.
9055         (emit_notes_for_differences): Adjust.
9056         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
9057         Adjust.  Handle new micro-ops.
9058         (vt_add_function_parameters): Adjust.  Create and bind values.
9059         (vt_initialize): Adjust.  Initialize scratch_regs and
9060         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
9061         operations.  Move some code to count_with_sets and add_with_sets.
9062         (delete_debug_insns): New.
9063         (vt_debug_insns_local): New.
9064         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
9065         cselib.
9066         (var_tracking_main): If var-tracking-assignments is enabled
9067         but var-tracking isn't, delete debug insns and leave.  Likewise
9068         if we exceed limits or fail the stack adjustments tests, and
9069         after all var-tracking processing.
9070         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
9071         (dataflow_set): Add traversed_vars.
9072         (value_chain, const_value_chain): New typedefs.
9073         (value_chain_pool, value_chains): New variables.
9074         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
9075         add_value_chains, add_cselib_value_chains, remove_value_chain,
9076         remove_value_chains, remove_cselib_value_chains): New functions.
9077         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
9078         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
9079         static inlines.
9080         (shared_hash_find_slot_unshare, shared_hash_find_slot,
9081         shared_hash_find_slot_noinsert, shared_hash_find): Update.
9082         (dst_can_be_shared): New variable.
9083         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
9084         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
9085         different from set->vars, look up slot again instead of using the
9086         passed in slot.
9087         (dataflow_set_init): Initialize traversed_vars.
9088         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
9089         lookup if set->vars is shared.  Don't keep slot cleared before
9090         calling unshare_variable.  Unshare set->vars if needed.  Adjust
9091         unshare_variable callers.  Clear dst_can_be_shared if needed.
9092         Even ->refcount == 1 vars must be unshared if set->vars is shared
9093         and var needs to be modified.
9094         (dataflow_set_union): Set traversed_vars during canonicalization.
9095         (VALUE_CHANGED, DECL_CHANGED): Define.
9096         (set_dv_changed, dv_changed_p): New static inlines.
9097         (track_expr_p): Clear DECL_CHANGED.
9098         (dump_dataflow_sets): Set it.
9099         (variable_was_changed): Call set_dv_changed.
9100         (emit_note_insn_var_location): Likewise.
9101         (changed_variables_stack): New variable.
9102         (check_changed_vars_1, check_changed_vars_2): New functions.
9103         (emit_notes_for_changes): Do nothing if changed_variables is
9104         empty.  Traverse changed_variables with check_changed_vars_1,
9105         call check_changed_vars_2 on each changed_variables_stack entry.
9106         (emit_notes_in_bb): Add SET argument.  Just clear it at the
9107         beginning, use it instead of local &set, don't destroy it at the end.
9108         (vt_emit_notes): Call dataflow_set_clear early on all
9109         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
9110         computed set, dataflow_set_clear also VTI(bb)->in when we are
9111         done with the basic block.  Initialize changed_variables_stack,
9112         free it afterwards.  If ENABLE_CHECKING verify that after noting
9113         differences to an empty set value_chains hash table is empty.
9114         (vt_initialize): Initialize value_chains and value_chain_pool.
9115         (vt_finalize): Delete value_chains htab, free value_chain_pool.
9116         (variable_tracking_main): Call dump_dataflow_sets before calling
9117         vt_emit_notes, not after it.
9118         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
9119         (propagate_var_def_into_debug_stmts): Declare.
9120         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
9121         (df_set_note): Reject debug insns.
9122         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
9123         add notes to debug insns.
9124         (df_note_bb_compute): Adjust.  Likewise.
9125         (df_simulate_uses): Skip debug insns.
9126         (df_simulate_initialize_backwards): Likewise.
9127         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
9128         (subst_stack_regs_pat): Reject debug insns.
9129         (convert_regs_1): Handle debug insns.
9130         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
9131         (print-rtl.o): Depend on cselib.h.
9132         (cselib.o): Depend on TREE_PASS_H.
9133         (var-tracking.o): Depend on cselib.h and TARGET_H.
9134         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
9135         (init_ready_list): Skip boundary debug insns.
9136         (add_branch_dependences): Skip debug insns.
9137         (free_block_dependencies): Check for blocks with only debug insns.
9138         (compute_priorities): Likewise.
9139         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
9140         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
9141         all callers.
9142         (gimple_build_debug_bind_stat): New.
9143         (empty_body_p): Skip debug stmts.
9144         (gimple_has_side_effects): Likewise.
9145         (gimple_rhs_has_side_effects): Likewise.
9146         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
9147         (gimple_build_debug_bind_stat): Declare.
9148         (gimple_build_debug_bind): Define.
9149         (is_gimple_debug): New.
9150         (gimple_debug_bind_p): New.
9151         (gimple_debug_bind_get_var): New.
9152         (gimple_debug_bind_get_value): New.
9153         (gimple_debug_bind_get_value_ptr): New.
9154         (gimple_debug_bind_set_var): New.
9155         (gimple_debug_bind_set_value): New.
9156         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
9157         (gimple_debug_bind_reset_value): New.
9158         (gimple_debug_bind_has_value_p): New.
9159         (gsi_next_nondebug): New.
9160         (gsi_prev_nondebug): New.
9161         (gsi_start_nondebug_bb): New.
9162         (gsi_last_nondebug_bb): New.
9163         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
9164         (print_insn): Handle DEBUG_INSN.
9165         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
9166         of first insn prevail.
9167         (first_stmt): Skip debug stmts.
9168         (first_non_label_stmt): Likewise.
9169         (last_stmt): Likewise.
9170         (has_zero_uses_1): New.
9171         (single_imm_use_1): New.
9172         (verify_gimple_debug): New.
9173         (verify_types_in_gimple_stmt): Handle debug stmts.
9174         (verify_stmt): Likewise.
9175         (debug_loop_num): Skip debug stmts.
9176         (remove_edge_and_dominated_blocks): Remove dominators last.
9177         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
9178         (linearize_expr): Likewise.
9179         * config/i386/i386.c (ix86_delegitimize_address): Call
9180         default implementation.
9181         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
9182         (group_barrier_needed): Skip debug insns.
9183         (emit_insn_group_barriers): Likewise.
9184         (emit_all_insn_group_barriers): Likewise.
9185         (ia64_variable_issue): Handle debug insns.
9186         (ia64_dfa_new_cycle): Likewise.
9187         (final_emit_insn_group_barriers): Skip debug insns.
9188         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9189         def cfa without frame.
9190         (process_set): Likewise.
9191         (process_for_unwind_directive): Pass frame on.
9192         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9193         (rs6000_delegitimize_address): New.
9194         (rs6000_debug_adjust_cost): Handle debug insns.
9195         (is_microcoded_insn): Likewise.
9196         (is_cracked_insn): Likewise.
9197         (is_nonpipeline_insn): Likewise.
9198         (insn_must_be_first_in_group): Likewise.
9199         (insn_must_be_last_in_group): Likewise.
9200         (force_new_group): Likewise.
9201         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9202         contains only debug insns.
9203         (rtl_merge_blocks): Skip debug insns.
9204         (purge_dead_edges): Likewise.
9205         (rtl_block_ends_with_call_p): Skip debug insns.
9206         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9207         (mark_reg_dependencies): Skip debug insns.
9208         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9209         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9210         * tree-ssa-threadedge.c
9211         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9212         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9213         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9214         (copyprop_hardreg_forward_1): Handle debug insns.
9215         * reload1.c (reload): Skip debug insns.  Replace unassigned
9216         pseudos in debug insns with their equivalences.
9217         (eliminate_regs_in_insn): Skip debug insns.
9218         (emit_input_reload_insns): Skip debug insns at first, adjust
9219         them later.
9220         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9221         (get_indirect_ref_operands): Pass opf_no_vops on.
9222         (get_expr_operands): Likewise.  Skip debug stmts.
9223         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9224
9225 2009-09-01  Richard Henderson  <rth@redhat.com>
9226
9227         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9228         stmt_ends_pp_p statements at least once.
9229         * tree-vrp.c (vrp_initialize): Likewise.
9230         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9231
9232 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9233
9234         PR bootstrap/41205
9235         Fix AIX bootstrap after PR debug/30161
9236         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9237         that is a GNU extension.
9238         (tmpl_value_parm_die_table): Move the definition of this global
9239         outside #ifdef DWARF2_DEBUGGING_INFO region.
9240
9241 2009-09-01  Richard Guenther  <rguenther@suse.de>
9242
9243         * tree.c (tree_expr_size): New function.
9244         * tree.h (tree_expr_size): Declare.
9245         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9246         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9247         * langhooks.c (lhd_expr_size): Remove.
9248         * langhooks.h (struct lang_hooks): Remove expr_size.
9249         * explow.c (expr_size): Use tree_expr_size.
9250         (int_expr_size): Likewise.
9251         * langhooks-def.h (lhd_expr_size): Remove.
9252         (LANG_HOOKS_EXPR_SIZE): Likewise.
9253         (LANG_HOOKS_INITIALIZER): Adjust.
9254
9255 2009-09-01  Richard Guenther  <rguenther@suse.de>
9256
9257         * tree-flow.h (mark_addressable): Move declaration ...
9258         * tree.h (mark_addressable): ... here.
9259         * stmt.c (expand_asm_operands): Use mark_addressable, not
9260         lang_hooks.mark_addressable.
9261         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9262         LANG_HOOKS_MARK_ADDRESSABLE.
9263         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9264         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9265
9266 2009-08-31  Chris Demetriou  <cgd@google.com>
9267
9268         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9269         vectorize if not TARGET_SSE2.
9270
9271 2009-08-31  DJ Delorie  <dj@redhat.com>
9272
9273         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9274         registers if no coprocessor is enabled.
9275
9276 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9277
9278         PR debug/30161
9279         * cgraph.h (cgraph_get_node): Declare ...
9280         * cgraph.c (cgraph_get_node): ... new function.
9281         * dwarf2out.c (gen_generic_params_dies,
9282         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9283         make_ith_pack_parameter_name,
9284         append_entry_to_tmpl_value_parm_die_table,
9285         gen_remaining_tmpl_value_param_die_attribute): New functions.
9286         (gen_subprogram_die): Generate debug info for template parameters
9287         if debug info level is higher than DINFO_LEVEL_TERSE.
9288         Use tree_add_const_value_attribute_for_decl instead of
9289         tree_add_const_value_attribute.
9290         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9291         instead of tree_add_const_value_attribute.
9292         (gen_struct_or_union_type_die): Generate debug
9293         info for template parameters if debug info level is higher than
9294         DINFO_LEVEL_TERSE.
9295         (tree_add_const_value_attribute): Handle integral and pointer
9296         constants. Update comment.
9297         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9298         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9299         (reference_to_unused): Fix thinko. Remove redundant predicates from
9300         tests.
9301         (tree_add_const_value_attribute): Make this work for constant
9302         expressions only.
9303         tree_add_const_value_attribute_for_decl is to be used for variable
9304         DECLs now.
9305         (add_location_or_const_value_attribute): Use
9306         tree_add_const_value_attribute_for_decl now.
9307         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9308         DW_TAG_template_value_param DIEs after function DIEs have been
9309         emitted.
9310         * langhooks.h (lang_hooks_for_types): Add
9311         get_argument_pack_elems.
9312         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9313         (lang_hooks): Added get_innermost_generic_parms,
9314         get_innermost_generic_args.
9315         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9316         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9317         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9318         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9319
9320 2009-08-31  DJ Delorie  <dj@redhat.com>
9321
9322         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9323         it once we start generating the prologue or epilogue.
9324         (mep_call_saves_register): If the frame is locked, re-use
9325         cached values.
9326         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9327         (mep_expand_prologue): Call it.
9328         (mep_expand_epilogue): Likewise.
9329         (mep_start_function): Use the same logic as mep_expand_prologue.
9330         (mep_pass_by_reference): Make logic more readable.
9331         (mep_return_in_memory): Zero-sized objects are passed in memory.
9332         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9333
9334 2009-08-31  Richard Guenther  <rguenther@suse.de>
9335
9336         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9337         to query if the memory regions for memmove overlap.
9338         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9339         asserts on pointers, instead deal with odd trees.
9340         (ptr_derefs_may_alias_p): Likewise.
9341         (refs_may_alias_p_1): Constructor bases also never alias.
9342
9343 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9344
9345         * doc/install.texi (Final install): Adjust reference on where to
9346         order printed manuals.
9347
9348 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9349
9350         * dwarf2out.c (switch_to_frame_table_section): Move
9351         definition prior to first use.
9352
9353 2009-08-30  Richard Guenther  <rguenther@suse.de>
9354
9355         PR tree-optimization/41186
9356         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9357         (ao_ref_init_from_ptr_and_size): New function.
9358         (ref_maybe_used_by_call_p_1): Be more precise tracking
9359         used ranges for builtin functions.
9360         (ref_maybe_used_by_call_p): Adjust.
9361         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9362         ranges for builtin functions.
9363         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9364
9365 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9366
9367         PR target/41081
9368         * fwprop.c (get_reg_use_in): Delete.
9369         (free_load_extend): New function.
9370         (forward_propagate_subreg): Use it.
9371
9372 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9373
9374         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9375
9376 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9377
9378         PR/41184
9379         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9380         padding.
9381
9382 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9383
9384         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9385         fini or fini_array section.
9386
9387 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9388
9389         * graphite-dependences.c (graphite_legal_transform_bb): Call
9390         pbb_remove_duplicate_pdrs.
9391         * graphite-poly.c (can_collapse_pdr): Removed.
9392         (pdr_find_duplicate): Removed.
9393         (can_collapse_pdrs): New.
9394         (pbb_remove_duplicate_pdrs): New.
9395         (new_poly_dr): Do not look for duplicates.
9396         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9397         (PBB_PDR_DUPLICATES_REMOVED): New.
9398         (pbb_remove_duplicate_pdrs): Declared.
9399
9400 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9401
9402         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9403         the strides by multiplying by PDR_NB_REFS.
9404         * graphite-poly.c (can_collapse_pdr): New.
9405         (pdr_find_duplicate): New.
9406         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9407         Initialize PDR_NB_REFS.
9408         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9409         (PDR_NB_REFS): New.
9410         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9411
9412 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9413
9414         PR middle-end/40965
9415         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9416         any transform.
9417
9418 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9419
9420         * graphite-dependences.c (pddr_original_scattering): Return NULL
9421         for read-read dependence relations.
9422         * graphite-poly.h (enum poly_dr_type): Fix comment.
9423         (pdr_read_p): New.
9424         (pdr_write_p): New.
9425         (pdr_may_write_p): New.
9426
9427 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9428
9429         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9430         (struct poly_dr): Same.
9431         (new_poly_dr): Same.
9432         * graphite-poly.c (new_poly_dr): Same.
9433         * graphite-dependences.c (dot_deps): Disable call to system.
9434
9435 2009-08-28  Cary Coutant  <ccoutant@google.com>
9436
9437         PR debug/41063
9438         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9439         struct/union/enum types local to a function.
9440
9441 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9442             Sebastian Pop  <sebastian.pop@amd.com>
9443
9444         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9445         pbb_strip_mine_time_depth.  Changed the implementation so that
9446         transformation is expressed as a transformation on
9447         time (scatttering) dimensions.  Also, ensures that the 2d+1
9448         scheduling format is preserved.
9449         (pbb_strip_mine_profitable_p): Profitability is based on the
9450         iteration number of a given time (scattering) dimension,
9451         and not on a original loop depth dimension.
9452         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9453         (pbb_do_strip_mine): Call psct_dynamic_dim.
9454         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9455         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9456         (pbb_nb_dynamic_scattering_transform): New.
9457         (psct_dynamic_dim): New.
9458
9459 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9460
9461         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9462         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9463         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9464         * graphite-interchange.c (build_linearized_memory_access): Same.
9465         (memory_stride_in_loop): Same.
9466
9467 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9468
9469         * graphite-dependences.c (pddr_original_scattering): New.
9470         (graphite_legal_transform_dr): Call pddr_original_scattering.
9471         (dot_deps_1): New.
9472         (dot_deps): New.
9473         * graphite-dependences.h (dot_deps): Declared.
9474         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9475         (print_pdr): Print PDR_ID.
9476         * graphite-poly.h (struct poly_dr): Add field id.
9477         (PDR_ID): New.
9478         (pbb_index): New.
9479         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9480
9481 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9482
9483         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9484         not delete the original dependence relation.
9485
9486 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9487
9488         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9489         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9490         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9491         (free_poly_ddr): New.
9492         (pddr_is_empty): New.
9493         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9494         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9495         Remove fprintfs.
9496         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9497         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9498         * graphite-dependences.h (enum poly_dependence_kind): New.
9499         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9500         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9501         (PDRP_SINK): Renamed PDDR_SINK.
9502         (PDRP_DDP): Renamed PDDR_DDP.
9503         (PDDR_KIND): New.
9504         (free_poly_ddr): Declared.
9505         * graphite-poly.c (new_scop): Use the new hash function names.
9506         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9507         into original_pddrs.
9508         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9509
9510 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9511
9512         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9513         bounds with LT_EXPR to make niter analysis more precise on code
9514         generated by Graphite.
9515
9516 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9517
9518         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9519         (graphite_legal_transform_bb): Same.
9520         (poly_drs_may_alias_p): Same.
9521
9522 2009-08-28  Richard Guenther  <rguenther@suse.de>
9523
9524         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9525
9526 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9527
9528         * config/i386/netware.c: Include langhooks.h.
9529         (i386_nlm_encode_section_info): Simplify.
9530         (netware_override_options): Delete.
9531         * config/i386/netware.h (netware_override_options): Delete
9532         declaration.
9533         (OVERRIDE_OPTIONS): Delete definition.
9534         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9535         (ASM_COMMENT_START): Define.
9536         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9537
9538 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9539
9540         * configure.ac: For in-tree ld, do a plain version check to
9541         determine whether comdat groups are supported.
9542         * configure: Regenerate.
9543
9544 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9545
9546         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9547         always defined.  Reflect definition or absence of such for
9548         COLLECT_EXPORT_LIST.  Readability helper.
9549         (scanfilter): New enum, to help control what symbols
9550         are to be considered or ignored by scan_prog_file.
9551         (enum pass): Rename as "scanpass", moved together with scanfilter
9552         prior to scan_prog_file's prototype.
9553         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9554         Group prototype with the scanpass/scanfilter definitions, factorize
9555         head comments for the several implementations at the prototype.
9556         (main): Reorganize the first pass link control to let AIX
9557         drag only the needed frame tables in executables.  Prevent
9558         frame tables collection during the scan aimed at static ctors.
9559         Pre-link and scan for frame tables later to compensate.
9560         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9561         A C statement to issue assembly directives that create a reference
9562         to the given DWARF table identifier label from the current function
9563         section.
9564         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9565         to differentiate first time section entry.  Only emit a .data
9566         tables start identifier label the first time around.
9567         (switch_to_frame_table_section): New function.  Helper for
9568         output_call_frame_info to switch possibly BACK into the eh_frame
9569         or the debug_frame section depending on FOR_EH.
9570         (output_call_frame_info): Use helper to first enter the proper
9571         frame section.
9572         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9573         emit a link to the frame table start label from each function
9574         section.
9575         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9576         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9577         * config/rs6000/rs6000-protos.h: Declare it.
9578         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9579
9580 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9581
9582         * config/sh/sh.c (split_branches): Check the result of
9583         next_active_insn.
9584
9585 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9586
9587         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9588         using -pthread -fopenmp
9589
9590 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9591
9592         * doc/service.texi (service directory): Update URL.
9593
9594 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9595
9596         PR rtl-optimization/40861
9597         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9598         extract word from a multi-word subreg for negative byte positions.
9599
9600 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9601             Douglas B Rupp  <rupp@gnat.com>
9602
9603         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9604         (SECTION_VMS_OVERLAY): Define.
9605         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9606         attribute.
9607         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9608         for common_object.
9609         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9610         common_object declarations.
9611         (ia64_section_type_flags): Set section flag for common_object.
9612         * config/ia64/ia64-protos.h
9613         (ia64_vms_output_aligned_decl_common): Declare.
9614         (ia64_vms_elf_asm_named_section): Declare.
9615
9616 2009-08-27  Michael Matz  <matz@suse.de>
9617
9618         * expr.c (expand_expr_real_2): New function taking exploded
9619         unary or binary expression, split out from ...
9620         (expand_expr_real_1): ... here.  Move over all unary/binary
9621         switch parts to above function, in particular these codes:
9622         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
9623         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
9624         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
9625         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
9626         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
9627         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
9628         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
9629         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
9630         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
9631         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
9632         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
9633         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
9634         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
9635         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
9636         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
9637         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
9638         VEC_PACK_FIX_TRUNC_EXPR.
9639         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
9640         full expression.
9641
9642 2009-08-27  Richard Guenther  <rguenther@suse.de>
9643
9644         * gengtype.c (main): Handle uint64_t.
9645         * ipa-utils.c (get_base_var): Indent properly.
9646         * tree-ssa-live.c (debug_scope_block): New function.
9647         * tree-flow.h (debug_scope_block): Declare.
9648         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
9649         * basic-block.h (enum profile_status): Rename to
9650         enum profile_status_d.
9651         (x_profile_status): Adjust type.
9652
9653 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
9654
9655         PR debug/41170
9656         * dwarf2out.c (get_context_die): Declare this static function.
9657         (gen_type_die_with_usage): Make sure a DIE is a generated for
9658         the context of a typedef.
9659
9660 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
9661
9662         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
9663         switch.
9664
9665 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
9666
9667         * config/mips/mips-protos.h (mips_output_sync): Declare.
9668         (mips_sync_loop_insns): Likewise.
9669         (mips_output_sync_loop): Replace first two parameters with an rtx.
9670         * config/mips/mips.c (mips_multi_member): New structure.
9671         (mips_multi_members): New variable.
9672         (mips_multi_start): New function.
9673         (mips_multi_add): Likewise.
9674         (mips_multi_add_insn): Likewise.
9675         (mips_multi_add_label): Likewise.
9676         (mips_multi_last_index): Likewise.
9677         (mips_multi_copy_insn): Likewise.
9678         (mips_multi_set_operand): Likewise.
9679         (mips_multi_write): Likewise.
9680         (mips_print_operand_punctuation): Remove '%|' and '%-'.
9681         (mips_init_print_operand_punct): Update accordingly.
9682         (mips_start_ll_sc_sync_block): New function.
9683         (mips_end_ll_sc_sync_block): Likewise.
9684         (mips_output_sync): Likewise.
9685         (mips_sync_insn1_template): Likewise.
9686         (mips_sync_insn2_template): Likewise.
9687         (mips_get_sync_operand): Likewise.
9688         (mips_process_sync_loop): Likewise.
9689         (mips_output_sync_loop): Use mips_process_sync_loop.
9690         (mips_sync_loop_insns): New function.
9691         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
9692         (MIPS_COMPARE_AND_SWAP_12): Likewise.
9693         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
9694         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
9695         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
9696         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
9697         (MIPS_SYNC_OLD_OP_12): Likewise.
9698         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
9699         (MIPS_SYNC_NEW_OP_12): Likewise.
9700         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
9701         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
9702         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
9703         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
9704         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
9705         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
9706         * config/mips/mips.md (sync_mem): New attribute.
9707         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
9708         (sync_exclusive_mask, sync_required_oldval): Likewise.
9709         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
9710         (sync_release_barrier): Likewise.
9711         (length): Handle sync loops.
9712         (sync): Use mips_output_sync.
9713         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
9714         (sync_compare_and_swap<mode>): Set the new sync_* attributes
9715         and use mips_output_sync_loop.
9716         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
9717         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
9718         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
9719         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
9720         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
9721         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
9722         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
9723         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
9724         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
9725
9726 2009-08-26  Richard Guenther  <rguenther@suse.de>
9727
9728         PR middle-end/41163
9729         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
9730         the types to not match.
9731         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
9732         verification.
9733         * tree-ssa.c (useless_type_conversion_p): Conversions to
9734         pointers to unprototyped functions are useless.
9735
9736 2009-08-26  Richard Guenther  <rguenther@suse.de>
9737
9738         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
9739         whole-program condition, prepare to be called for non-globals.
9740         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
9741         params build a representative with known type and track its fields.
9742
9743 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
9744
9745         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
9746         clearing by a taken branch.
9747         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
9748         effectively after bbro pass.
9749         (sync_nand<mode>): Ditto.
9750         (sync_old_<fetchop_name><mode>): Ditto.
9751         (sync_old_nand<mode>): Ditto.
9752         (sync_new_<fetchop_name><mode>): Dito.
9753         (sync_new_nand<mode>): Ditto.
9754         (sync_compare_and_swap<mode>_1): Ditto.
9755         (*sync_compare_and_swap<mode>): Ditto.
9756         (sync_lock_test_and_set<mode>_1): Ditto.
9757         ("sync_lock_test_and_set<mode>): Ditto.
9758
9759 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
9760
9761         * hwint.h (HOST_LONG_FORMAT): New macro
9762         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
9763         Use HOST_PTR_PRINTF.
9764         * system.h (HOST_PTR_PRINTF): Resurrect old macro
9765         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
9766         (HOST_PTR_PRINTF): Document.
9767
9768 2009-08-25 Jan Hubicka  <jh@suse.cz>
9769
9770         * config/i386/bmmintrin.h: Replace by #error.
9771
9772         Revert:
9773         Michael Meissner  <michael.meissner@amd.com>
9774         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9775         Tony Linthicum  <tony.linthicum@amd.com>
9776
9777         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
9778         (TARGET_ROUND): New macro for the round/ptest instructions which
9779         are shared between SSE4.1 and SSE5.
9780         (OPTION_MASK_ISA_ROUND): Ditto.
9781         (OPTION_ISA_ROUND): Ditto.
9782         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
9783         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
9784
9785         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
9786         (-mfused-madd): New switch to give users control over whether the
9787         compiler optimizes to use the multiply/add SSE5 instructions.
9788
9789         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
9790         (ix86_handle_option): Turn off 3dnow if -msse5.
9791         (override_options): Add SSE5 support.
9792         (print_operand): %Y prints comparison codes for SSE5 com/pcom
9793         instructions.
9794         (ix86_expand_sse_movcc): Add SSE5 support.
9795         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
9796         vector type to the next largest size.
9797         (ix86_expand_sse5_pack): New function to use pperm to pack a
9798         vector type to the next smallest size.
9799         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
9800         (IX86_BUILTIN_FMADDSD): Ditto.
9801         (IX86_BUILTIN_FMADDPS): Ditto.
9802         (IX86_BUILTIN_FMADDPD): Ditto.
9803         (IX86_BUILTIN_FMSUBSS): Ditto.
9804         (IX86_BUILTIN_FMSUBSD): Ditto.
9805         (IX86_BUILTIN_FMSUBPS): Ditto.
9806         (IX86_BUILTIN_FMSUBPD): Ditto.
9807         (IX86_BUILTIN_FNMADDSS): Ditto.
9808         (IX86_BUILTIN_FNMADDSD): Ditto.
9809         (IX86_BUILTIN_FNMADDPS): Ditto.
9810         (IX86_BUILTIN_FNMADDPD): Ditto.
9811         (IX86_BUILTIN_FNMSUBSS): Ditto.
9812         (IX86_BUILTIN_FNMSUBSD): Ditto.
9813         (IX86_BUILTIN_FNMSUBPS): Ditto.
9814         (IX86_BUILTIN_FNMSUBPD): Ditto.
9815         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
9816         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
9817         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
9818         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
9819         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
9820         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
9821         (IX86_BUILTIN_PPERM): Ditto.
9822         (IX86_BUILTIN_PERMPS): Ditto.
9823         (IX86_BUILTIN_PERMPD): Ditto.
9824         (IX86_BUILTIN_PMACSSWW): Ditto.
9825         (IX86_BUILTIN_PMACSWW): Ditto.
9826         (IX86_BUILTIN_PMACSSWD): Ditto.
9827         (IX86_BUILTIN_PMACSWD): Ditto.
9828         (IX86_BUILTIN_PMACSSDD): Ditto.
9829         (IX86_BUILTIN_PMACSDD): Ditto.
9830         (IX86_BUILTIN_PMACSSDQL): Ditto.
9831         (IX86_BUILTIN_PMACSSDQH): Ditto.
9832         (IX86_BUILTIN_PMACSDQL): Ditto.
9833         (IX86_BUILTIN_PMACSDQH): Ditto.
9834         (IX86_BUILTIN_PMADCSSWD): Ditto.
9835         (IX86_BUILTIN_PMADCSWD): Ditto.
9836         (IX86_BUILTIN_PHADDBW): Ditto.
9837         (IX86_BUILTIN_PHADDBD): Ditto.
9838         (IX86_BUILTIN_PHADDBQ): Ditto.
9839         (IX86_BUILTIN_PHADDWD): Ditto.
9840         (IX86_BUILTIN_PHADDWQ): Ditto.
9841         (IX86_BUILTIN_PHADDDQ): Ditto.
9842         (IX86_BUILTIN_PHADDUBW): Ditto.
9843         (IX86_BUILTIN_PHADDUBD): Ditto.
9844         (IX86_BUILTIN_PHADDUBQ): Ditto.
9845         (IX86_BUILTIN_PHADDUWD): Ditto.
9846         (IX86_BUILTIN_PHADDUWQ): Ditto.
9847         (IX86_BUILTIN_PHADDUDQ): Ditto.
9848         (IX86_BUILTIN_PHSUBBW): Ditto.
9849         (IX86_BUILTIN_PHSUBWD): Ditto.
9850         (IX86_BUILTIN_PHSUBDQ): Ditto.
9851         (IX86_BUILTIN_PROTB): Ditto.
9852         (IX86_BUILTIN_PROTW): Ditto.
9853         (IX86_BUILTIN_PROTD): Ditto.
9854         (IX86_BUILTIN_PROTQ): Ditto.
9855         (IX86_BUILTIN_PROTB_IMM): Ditto.
9856         (IX86_BUILTIN_PROTW_IMM): Ditto.
9857         (IX86_BUILTIN_PROTD_IMM): Ditto.
9858         (IX86_BUILTIN_PROTQ_IMM): Ditto.
9859         (IX86_BUILTIN_PSHLB): Ditto.
9860         (IX86_BUILTIN_PSHLW): Ditto.
9861         (IX86_BUILTIN_PSHLD): Ditto.
9862         (IX86_BUILTIN_PSHLQ): Ditto.
9863         (IX86_BUILTIN_PSHAB): Ditto.
9864         (IX86_BUILTIN_PSHAW): Ditto.
9865         (IX86_BUILTIN_PSHAD): Ditto.
9866         (IX86_BUILTIN_PSHAQ): Ditto.
9867         (IX86_BUILTIN_FRCZSS): Ditto.
9868         (IX86_BUILTIN_FRCZSD): Ditto.
9869         (IX86_BUILTIN_FRCZPS): Ditto.
9870         (IX86_BUILTIN_FRCZPD): Ditto.
9871         (IX86_BUILTIN_CVTPH2PS): Ditto.
9872         (IX86_BUILTIN_CVTPS2PH): Ditto.
9873         (IX86_BUILTIN_COMEQSS): Ditto.
9874         (IX86_BUILTIN_COMNESS): Ditto.
9875         (IX86_BUILTIN_COMLTSS): Ditto.
9876         (IX86_BUILTIN_COMLESS): Ditto.
9877         (IX86_BUILTIN_COMGTSS): Ditto.
9878         (IX86_BUILTIN_COMGESS): Ditto.
9879         (IX86_BUILTIN_COMUEQSS): Ditto.
9880         (IX86_BUILTIN_COMUNESS): Ditto.
9881         (IX86_BUILTIN_COMULTSS): Ditto.
9882         (IX86_BUILTIN_COMULESS): Ditto.
9883         (IX86_BUILTIN_COMUGTSS): Ditto.
9884         (IX86_BUILTIN_COMUGESS): Ditto.
9885         (IX86_BUILTIN_COMORDSS): Ditto.
9886         (IX86_BUILTIN_COMUNORDSS): Ditto.
9887         (IX86_BUILTIN_COMFALSESS): Ditto.
9888         (IX86_BUILTIN_COMTRUESS): Ditto.
9889         (IX86_BUILTIN_COMEQSD): Ditto.
9890         (IX86_BUILTIN_COMNESD): Ditto.
9891         (IX86_BUILTIN_COMLTSD): Ditto.
9892         (IX86_BUILTIN_COMLESD): Ditto.
9893         (IX86_BUILTIN_COMGTSD): Ditto.
9894         (IX86_BUILTIN_COMGESD): Ditto.
9895         (IX86_BUILTIN_COMUEQSD): Ditto.
9896         (IX86_BUILTIN_COMUNESD): Ditto.
9897         (IX86_BUILTIN_COMULTSD): Ditto.
9898         (IX86_BUILTIN_COMULESD): Ditto.
9899         (IX86_BUILTIN_COMUGTSD): Ditto.
9900         (IX86_BUILTIN_COMUGESD): Ditto.
9901         (IX86_BUILTIN_COMORDSD): Ditto.
9902         (IX86_BUILTIN_COMUNORDSD): Ditto.
9903         (IX86_BUILTIN_COMFALSESD): Ditto.
9904         (IX86_BUILTIN_COMTRUESD): Ditto.
9905         (IX86_BUILTIN_COMEQPS): Ditto.
9906         (IX86_BUILTIN_COMNEPS): Ditto.
9907         (IX86_BUILTIN_COMLTPS): Ditto.
9908         (IX86_BUILTIN_COMLEPS): Ditto.
9909         (IX86_BUILTIN_COMGTPS): Ditto.
9910         (IX86_BUILTIN_COMGEPS): Ditto.
9911         (IX86_BUILTIN_COMUEQPS): Ditto.
9912         (IX86_BUILTIN_COMUNEPS): Ditto.
9913         (IX86_BUILTIN_COMULTPS): Ditto.
9914         (IX86_BUILTIN_COMULEPS): Ditto.
9915         (IX86_BUILTIN_COMUGTPS): Ditto.
9916         (IX86_BUILTIN_COMUGEPS): Ditto.
9917         (IX86_BUILTIN_COMORDPS): Ditto.
9918         (IX86_BUILTIN_COMUNORDPS): Ditto.
9919         (IX86_BUILTIN_COMFALSEPS): Ditto.
9920         (IX86_BUILTIN_COMTRUEPS): Ditto.
9921         (IX86_BUILTIN_COMEQPD): Ditto.
9922         (IX86_BUILTIN_COMNEPD): Ditto.
9923         (IX86_BUILTIN_COMLTPD): Ditto.
9924         (IX86_BUILTIN_COMLEPD): Ditto.
9925         (IX86_BUILTIN_COMGTPD): Ditto.
9926         (IX86_BUILTIN_COMGEPD): Ditto.
9927         (IX86_BUILTIN_COMUEQPD): Ditto.
9928         (IX86_BUILTIN_COMUNEPD): Ditto.
9929         (IX86_BUILTIN_COMULTPD): Ditto.
9930         (IX86_BUILTIN_COMULEPD): Ditto.
9931         (IX86_BUILTIN_COMUGTPD): Ditto.
9932         (IX86_BUILTIN_COMUGEPD): Ditto.
9933         (IX86_BUILTIN_COMORDPD): Ditto.
9934         (IX86_BUILTIN_COMUNORDPD): Ditto.
9935         (IX86_BUILTIN_COMFALSEPD): Ditto.
9936         (IX86_BUILTIN_COMTRUEPD): Ditto.
9937         (IX86_BUILTIN_PCOMEQUB): Ditto.
9938         (IX86_BUILTIN_PCOMNEUB): Ditto.
9939         (IX86_BUILTIN_PCOMLTUB): Ditto.
9940         (IX86_BUILTIN_PCOMLEUB): Ditto.
9941         (IX86_BUILTIN_PCOMGTUB): Ditto.
9942         (IX86_BUILTIN_PCOMGEUB): Ditto.
9943         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
9944         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
9945         (IX86_BUILTIN_PCOMEQUW): Ditto.
9946         (IX86_BUILTIN_PCOMNEUW): Ditto.
9947         (IX86_BUILTIN_PCOMLTUW): Ditto.
9948         (IX86_BUILTIN_PCOMLEUW): Ditto.
9949         (IX86_BUILTIN_PCOMGTUW): Ditto.
9950         (IX86_BUILTIN_PCOMGEUW): Ditto.
9951         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
9952         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
9953         (IX86_BUILTIN_PCOMEQUD): Ditto.
9954         (IX86_BUILTIN_PCOMNEUD): Ditto.
9955         (IX86_BUILTIN_PCOMLTUD): Ditto.
9956         (IX86_BUILTIN_PCOMLEUD): Ditto.
9957         (IX86_BUILTIN_PCOMGTUD): Ditto.
9958         (IX86_BUILTIN_PCOMGEUD): Ditto.
9959         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
9960         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
9961         (IX86_BUILTIN_PCOMEQUQ): Ditto.
9962         (IX86_BUILTIN_PCOMNEUQ): Ditto.
9963         (IX86_BUILTIN_PCOMLTUQ): Ditto.
9964         (IX86_BUILTIN_PCOMLEUQ): Ditto.
9965         (IX86_BUILTIN_PCOMGTUQ): Ditto.
9966         (IX86_BUILTIN_PCOMGEUQ): Ditto.
9967         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
9968         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
9969         (IX86_BUILTIN_PCOMEQB): Ditto.
9970         (IX86_BUILTIN_PCOMNEB): Ditto.
9971         (IX86_BUILTIN_PCOMLTB): Ditto.
9972         (IX86_BUILTIN_PCOMLEB): Ditto.
9973         (IX86_BUILTIN_PCOMGTB): Ditto.
9974         (IX86_BUILTIN_PCOMGEB): Ditto.
9975         (IX86_BUILTIN_PCOMFALSEB): Ditto.
9976         (IX86_BUILTIN_PCOMTRUEB): Ditto.
9977         (IX86_BUILTIN_PCOMEQW): Ditto.
9978         (IX86_BUILTIN_PCOMNEW): Ditto.
9979         (IX86_BUILTIN_PCOMLTW): Ditto.
9980         (IX86_BUILTIN_PCOMLEW): Ditto.
9981         (IX86_BUILTIN_PCOMGTW): Ditto.
9982         (IX86_BUILTIN_PCOMGEW): Ditto.
9983         (IX86_BUILTIN_PCOMFALSEW): Ditto.
9984         (IX86_BUILTIN_PCOMTRUEW): Ditto.
9985         (IX86_BUILTIN_PCOMEQD): Ditto.
9986         (IX86_BUILTIN_PCOMNED): Ditto.
9987         (IX86_BUILTIN_PCOMLTD): Ditto.
9988         (IX86_BUILTIN_PCOMLED): Ditto.
9989         (IX86_BUILTIN_PCOMGTD): Ditto.
9990         (IX86_BUILTIN_PCOMGED): Ditto.
9991         (IX86_BUILTIN_PCOMFALSED): Ditto.
9992         (IX86_BUILTIN_PCOMTRUED): Ditto.
9993         (IX86_BUILTIN_PCOMEQQ): Ditto.
9994         (IX86_BUILTIN_PCOMNEQ): Ditto.
9995         (IX86_BUILTIN_PCOMLTQ): Ditto.
9996         (IX86_BUILTIN_PCOMLEQ): Ditto.
9997         (IX86_BUILTIN_PCOMGTQ): Ditto.
9998         (IX86_BUILTIN_PCOMGEQ): Ditto.
9999         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
10000         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
10001         (enum multi_arg_type): New enum for describing the various SSE5
10002         intrinsic argument types.
10003         (bdesc_multi_arg): New table for SSE5 intrinsics.
10004         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
10005         (ix86_expand_multi_arg_builtin): New function for creating SSE5
10006         intrinsics.
10007         (ix86_expand_builtin): Add SSE5 intrinsic support.
10008         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
10009         operand instructions.
10010         (ix86_expand_sse5_multiple_memory): New function to split the
10011         second memory reference from SSE5 instructions.
10012         (type_has_variadic_args_p): Delete in favor of stdarg_p.
10013         (ix86_return_pops_args): Use stdarg_p to determine if the function
10014         has variable arguments.
10015         (ix86_setup_incoming_varargs): Ditto.
10016         (x86_this_parameter): Ditto.
10017
10018         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
10019         declaration.
10020         (ix86_expand_sse5_pack): Ditto.
10021         (ix86_sse5_valid_op_p): Ditto.
10022         (ix86_expand_sse5_multiple_memory): Ditto.
10023
10024         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
10025         constant for SSE5 support.
10026         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
10027         (UNSPEC_SSE5_TRUEFALSE): Ditto.
10028         (UNSPEC_SSE5_PERMUTE): Ditto.
10029         (UNSPEC_SSE5_ASHIFT): Ditto.
10030         (UNSPEC_SSE5_LSHIFT): Ditto.
10031         (UNSPEC_FRCZ): Ditto.
10032         (UNSPEC_CVTPH2PS): Ditto.
10033         (UNSPEC_CVTPS2PH): Ditto.
10034         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
10035         (PCOM_TRUE): Ditto.
10036         (COM_FALSE_S): Ditto.
10037         (COM_FALSE_P): Ditto.
10038         (COM_TRUE_S): Ditto.
10039         (COM_TRUE_P): Ditto.
10040         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
10041         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
10042         types.
10043         (memory attribute): Ditto.
10044         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10045         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
10046         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10047         (floor<mode>2): Ditto.
10048         (ceil<mode>2): Ditto.
10049         (btrunc<mode>2): Ditto.
10050         (nearbyintdf2): Ditto.
10051         (nearbyintsf2): Ditto.
10052         (sse_setccsf): Disable if SSE5.
10053         (sse_setccdf): Ditto.
10054         (sse5_setcc<mode>): New support for SSE5 conditional move.
10055         (sse5_pcmov_<mode>): Ditto.
10056
10057         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
10058         (SSEMODEF4): Ditto.
10059         (SSEMODEF2P): Ditto.
10060         (ssemodesuffixf4): New mode attribute for SSE5.
10061         (ssemodesuffixf2s): Ditto.
10062         (ssemodesuffixf2c): Ditto.
10063         (sserotatemax): Ditto.
10064         (ssescalarmode): Ditto.
10065         (sse_maskcmpv4sf3): Disable if SSE5.
10066         (sse_maskcmpv2df3): Ditto.
10067         (sse_vmmaskcmpv4sf3): Ditto.
10068         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
10069         (sse5_vmfmadd<mode>4): Ditto.
10070         (sse5_fmsub<mode>4): Ditto.
10071         (sse5_vmfmsub<mode>4): Ditto.
10072         (sse5_fnmadd<mode>4): Ditto.
10073         (sse5_vmfnmadd<mode>4): Ditto.
10074         (sse5_fnmsub<mode>4): Ditto.
10075         (sse5_vmfnmsub<mode>4): Ditto.
10076         (sse5i_fmadd<mode>4): Ditto.
10077         (sse5i_fmsub<mode>4): Ditto.
10078         (sse5i_fnmadd<mode>4): Ditto.
10079         (sse5i_fnmsub<mode>4): Ditto.
10080         (sse5i_vmfmadd<mode>4): Ditto.
10081         (sse5i_vmfmsub<mode>4): Ditto.
10082         (sse5i_vmfnmadd<mode>4): Ditto.
10083         (sse5i_vmfnmsub<mode>4): Ditto.
10084         (mulv16qi3): Add SSE5 support.
10085         (mulv4si3): Ditto.
10086         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
10087         (sse2_mulv4si3): Disable if SSE5.
10088         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
10089         (sse4_1_roundps): Ditto.
10090         (sse4_1_roundsd): Ditto.
10091         (sse4_1_roundss): Ditto.
10092         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
10093         be generated.
10094         (sse_maskcmpsf3): Ditto.
10095         (sse_vmmaskcmpv4sf3): Ditto.
10096         (sse2_maskcmpv2df3): Ditto.
10097         (sse2_maskcmpdf3): Ditto.
10098         (sse2_vmmaskcmpv2df3): Ditto.
10099         (sse2_eq<mode>3): Ditto.
10100         (sse2_gt<mode>3): Ditto.
10101         (sse5_pcmov_<mode>): Add SSE5 support.
10102         (vec_unpacku_hi_v16qi): Ditto.
10103         (vec_unpacks_hi_v16qi): Ditto.
10104         (vec_unpacku_lo_v16qi): Ditto.
10105         (vec_unpacks_lo_v16qi): Ditto.
10106         (vec_unpacku_hi_v8hi): Ditto.
10107         (vec_unpacks_hi_v8hi): Ditto.
10108         (vec_unpacku_lo_v8hi): Ditto.
10109         (vec_unpacks_lo_v8hi): Ditto.
10110         (vec_unpacku_hi_v4si): Ditto.
10111         (vec_unpacks_hi_v4si): Ditto.
10112         (vec_unpacku_lo_v4si): Ditto.
10113         (vec_unpacks_lo_v4si): Ditto.
10114         (sse5_pmacsww): New SSE5 intrinsic insn.
10115         (sse5_pmacssww): Ditto.
10116         (sse5_pmacsdd): Ditto.
10117         (sse5_pmacssdd): Ditto.
10118         (sse5_pmacssdql): Ditto.
10119         (sse5_pmacssdqh): Ditto.
10120         (sse5_pmacsdqh): Ditto.
10121         (sse5_pmacsswd): Ditto.
10122         (sse5_pmacswd): Ditto.
10123         (sse5_pmadcsswd): Ditto.
10124         (sse5_pmadcswd): Ditto.
10125         (sse5_pcmov_<move>): Conditional move support on SSE5.
10126         (sse5_phaddbw): New SSE5 intrinsic insn.
10127         (sse5_phaddbd): Ditto.
10128         (sse5_phaddbq): Ditto.
10129         (sse5_phaddwd): Ditto.
10130         (sse5_phaddwq): Ditto.
10131         (sse5_phadddq): Ditto.
10132         (sse5_phaddubw): Ditto.
10133         (sse5_phaddubd): Ditto.
10134         (sse5_phaddubq): Ditto.
10135         (sse5_phadduwd): Ditto.
10136         (sse5_phadduwq): Ditto.
10137         (sse5_phaddudq): Ditto.
10138         (sse5_phsubbw): Ditto.
10139         (sse5_phsubwd): Ditto.
10140         (sse5_phsubdq): Ditto.
10141         (sse5_pperm): Ditto.
10142         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
10143         (sse5_pperm_zero_v16qi_v8hi): Ditto.
10144         (sse5_pperm_sign_v8hi_v4si): Ditto.
10145         (sse5_pperm_zero_v8hi_v4si): Ditto.
10146         (sse5_pperm_sign_v4si_v2di): Ditto.
10147         (sse5_pperm_sign_v4si_v2di): Ditto.
10148         (sse5_pperm_pack_v2di_v4si): Ditto.
10149         (sse5_pperm_pack_v4si_v8hi): Ditto.
10150         (sse5_pperm_pack_v8hi_v16qi): Ditto.
10151         (sse5_perm<mode>): New SSE5 intrinsic insn.
10152         (rotl<mode>3): Ditto.
10153         (sse5_rotl<mode>3): Ditto.
10154         (sse5_ashl<mode>3): Ditto.
10155         (sse5_lshl<mode>3): Ditto.
10156         (sse5_frcz<mode>2): Ditto.
10157         (sse5s_frcz<mode>2): Ditto.
10158         (sse5_cvtph2ps): Ditto.
10159         (sse5_cvtps2ph): Ditto.
10160         (sse5_vmmaskcmp<mode>3): Ditto.
10161         (sse5_com_tf<mode>3): Ditto.
10162         (sse5_maskcmp<mode>3): Ditto.
10163         (sse5_maskcmp_uns<mode>3): Ditto.
10164         (sse5_maskcmp_uns2<mode>3): Ditto.
10165         (sse5_pcom_tf<mode>3): Ditto.
10166
10167         * config/i386/predicates.md (sse5_comparison_float_operator):
10168         New predicate to match the comparison operators supported by
10169         the SSE5 com instruction.
10170         (ix86_comparison_int_operator): New predicate to match just the
10171         signed int comparisons.
10172         (ix86_comparison_uns_operator): New predicate to match just the
10173         unsigned int comparisons.
10174
10175         * doc/invoke.texi (-msse5): Add documentation.
10176         (-mfused-madd): Ditto.
10177
10178         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
10179
10180         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
10181         mmintrin-common.h.
10182         (x86_64-*-*): Ditto.
10183
10184         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10185
10186         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10187         intrinisics for SSE5.
10188
10189         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10190         mmintrin-common.h.
10191
10192         * config/i386/mmintrin-common.h: New file, to contain common
10193         instructions between SSE4.1 and SSE5.
10194
10195         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10196         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10197         (gen_regparm_prefix): Ditto.
10198
10199         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10200         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10201         prototype_p to determine if a function is prototyped.
10202
10203 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10204
10205         * c-common.c (c_common_reswords) add the alignof keyword,
10206         with same RID as __alignof and __alignof__
10207
10208 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10209
10210         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10211         * hooks.c (hook_bool_const_int_const_int_true): New function.
10212         * target.h (struct gcc_target): Add can_eliminate field.
10213         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10214         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10215         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10216         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10217         (elim_table): Revise comment.
10218         * system.h (CAN_ELIMINATE): Poison.
10219         * defaults.h (CAN_ELIMINATE): Remove.
10220         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10221
10222         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10223         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10224         Define macro.
10225         (alpha_vms_can_eliminate): Declare as static, change return type to
10226         bool.
10227         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10228
10229         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10230         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10231         (arm_can_eliminate): New function.
10232
10233         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10234         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10235         (avr_can_eliminate): Declare as static.
10236         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10237
10238         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10239         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10240         (bfin_can_eliminate): New function.
10241
10242         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10243         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10244         (crx_can_eliminate): New function.
10245
10246         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10247         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10248         (fr30_can_eliminate): New function.
10249
10250         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10251         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10252         (frv_can_eliminate): New function.
10253
10254         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10255         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10256         (h8300_can_eliminate): New function.
10257
10258         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10259         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10260         (i386_can_eliminate): Declare as static, change return type to bool.
10261         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10262
10263         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10264         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10265         (ia64_can_eliminate): New function.
10266
10267         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10268         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10269         (iq2000_can_eliminate): New function.
10270
10271         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10272         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10273         (m32r_can_eliminate): New function.
10274
10275         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10276         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10277         (m68hc11_can_eliminate): New function.
10278
10279         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10280         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10281         (m68k_can_eliminate): New function.
10282
10283         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10284         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10285         (mep_can_eliminate): New function.
10286
10287         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10288         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10289         (mips_can_eliminate): New function.
10290
10291         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10292         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10293         (rs6000_can_eliminate): New function.
10294
10295         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10296         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10297         (s390_can_eliminate): Declare as static.
10298         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10299
10300         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10301         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10302         (score_can_eliminate): New function.
10303
10304         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10305         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10306         (sparc_can_eliminate): Declare as static.
10307         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10308
10309         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10310         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10311         (xstormy16_can_eliminate): New function.
10312
10313         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10314         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10315         (v850_can_eliminate): New function.
10316
10317 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10318
10319         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10320         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10321         (*movdfcc_ext[1234]): Disable for IEEE mode.
10322
10323 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10324
10325         * gimplify.c (prepare_gimple_addressable): New static function.
10326         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10327         it addressable.
10328         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10329         manually fiddling with it.
10330
10331 2009-08-25  Michael Matz  <matz@suse.de>
10332
10333         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10334         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10335         full expression.
10336         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10337         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10338         (do_jump): Split out code for simple binary comparisons into ...
10339         (do_jump_1): ... this, taking the individual operands and code.
10340         Change callers to helper function above accordingly.
10341         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10342         comparisons.
10343
10344 2009-08-25  Michael Matz  <matz@suse.de>
10345
10346         * expr.h (struct separate_ops, sepops): New type for passing
10347         around an exploded simple expression.
10348         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10349         Use this structure instead of expression tree.
10350         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10351         expression, only its type.
10352         (expand_vec_cond_expr): Take type and individual operands instead
10353         of full expression.
10354         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10355         expand_vec_shift_expr): Change prototype accordingly.
10356         * tree-vect-stmts.c (vectorizable_condition): Change call of
10357         expand_vec_cond_expr_p to pass only type.
10358         * expr.c (do_store_flags): Change prototype and implementation
10359         to take an exploded expression.
10360         (expand_expr_real_1): New local ops initialized with details
10361         of the full expression.  Use it instead of full
10362         expression in calls to do_store_flags, expand_vec_cond_expr,
10363         expand_widen_pattern_expr and expand_vec_shift_expr.
10364
10365 2009-08-25  Michael Matz  <matz@suse.de>
10366
10367         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10368         treeop2 initialized with first three operands of the full expression.
10369         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10370
10371 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10372
10373         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10374         (__gthread_objc_condition_allocate): Mark arguments as unused.
10375         (__gthread_objc_condition_deallocate): Likewise.
10376         (__gthread_objc_condition_wait): Likewise.
10377         (__gthread_objc_condition_broadcast): Likewise.
10378         (__gthread_objc_condition_signal): Likewise.
10379         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10380         (__gthread_objc_thread_id): Likewise.
10381
10382 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10383
10384         PR middle-end/41149
10385         * tree-pretty-print.c (print_call_name): Print the correct call name
10386         for procedure pointer components.
10387
10388 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10389
10390         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10391         default_promote_function_mode when not VMS.
10392
10393 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10394
10395         * convert.c (convert_to_integer): Don't assume an input pointer is
10396         POINTER_SIZE wide.  Fetch from the type instead.
10397
10398 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10399
10400         * configure.ac (AC_PREREQ): Bump to 2.64.
10401
10402 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10403
10404         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10405         (process_command): Don't search standard_exec_prefix_1 and
10406         standard_exec_prefix_2.
10407
10408 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10409
10410         * config/arm/arm.c (output_return_instruction): Handle for
10411         unified syntax.
10412
10413 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10414
10415         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10416
10417 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10418
10419         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10420         (*arm_movdf_vfp): Likewise.
10421
10422 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10423
10424         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10425         (vashr<mode>3): Rename from ashr<mode>3.
10426         (vlshr<mode>3): Rename from lshr<mode>3.
10427
10428 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10429
10430         PR/40786
10431         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10432         (check_format_info_main): Use scalar_identify_flag.
10433         (check_format_types): Check for scalar size identity if
10434         scalar_identify_flag is set.
10435         (printf_length_specs): Extend by new field.
10436         (asm_fprintf_length_specs): Likewise.
10437         (gcc_diag_length_specs): Likewise.
10438         (scanf_length_specs): Likewise.
10439         (strfmon_length_specs): Likewise.
10440         (gcc_gfc_length_specs): Likewise.
10441         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10442         (ms_printf_flag_specs): Likewise.
10443         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10444
10445 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10446
10447         PR target/40718
10448         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10449         (*call_value_pop_1): Ditto.
10450         (*sibcall_pop_1): New insn pattern.
10451         (*sibcall_value_pop_1): Ditto.
10452
10453 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10454
10455         PR target/41081
10456         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10457         ashrsi3_64): New.
10458
10459 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10460
10461         PR target/41081
10462         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10463         (get_reg_use_in): New function.
10464         (forward_propagate_subreg): Propagate through subreg of zero_extend
10465         or sign_extend.
10466
10467 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10468
10469         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10470         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10471
10472 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10473
10474         * configure.ac: Remove --with-datarootdir, --with-docdir,
10475         --with-htmldir switches.  No need to call AC_SUBST for
10476         datarootdir, docdir, htmldir any more.
10477         * configure: Regenerate.
10478         * doc/install.texi (Configuration): Document --datarootdir,
10479         --docdir, --htmldir, --pdfdir; update documentation for
10480         --infodir, --mandir.
10481         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10482         M4 to 1.4.6.
10483
10484         * aclocal.m4: Regenerate.
10485         * config.in: Regenerate.
10486         * configure: Regenerate.
10487
10488 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10489             Olivier Hainque  <hainque@adacore.com>
10490
10491         * config/ia64/ia64.c: Include libfuncs.h.
10492         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10493         (ia64_expand_call): Use reg 25 on VMS.
10494         (ia64_initialize_trampoline): Fix for VMS ABI.
10495         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10496         (ia64_function_arg): Initialize reg 25 on VMS.
10497         Fix OpenVMS ABI issues for varargs.
10498         For OpenVMS, emit the Argument Information register set in the
10499         incoming/sibcall case as well.
10500         (ia64_arg_type): New function.
10501         (ia64_function_arg_advance): Keep track of cum->words.
10502         Fix OpenVMS ABI issues for varargs.
10503         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10504         (ia64_override_options): Set flag_no_common on VMS.
10505         (ia64_init_builtins): Disable FWRITE builtin.
10506         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10507         (ia64_vms_init_libfuncs): Add decc$ routines.
10508         (ia64_vms_valid_pointer_mode): New function.
10509         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10510         (ia64_promote_function_mode): New function
10511         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10512         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10513         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10514         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10515         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10516         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10517         Suppress trailing '#' if VALUE is numeric.
10518         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10519         ia64_promote_function_mode.
10520         (TARGET_VALID_POINTER_MODE): Define.
10521
10522 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10523
10524         PR target/40671
10525         * config/rs6000/rs6000.c (rs6000_override_options): Use
10526         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10527
10528         PR target/41145
10529         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10530         reporting of vector + decimal/boolean/complex error.
10531
10532 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10533
10534         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10535         __vector double TYPE_DECL.
10536
10537 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10538
10539         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10540         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10541         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10542         to pointer to enum machine_mode.  Update all callers as needed.
10543
10544 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10545
10546         * config/alpha/alpha.md (exception_receiver): Emit alternative
10547         GP load sequence if flag_reorder_blocks_and_partition is set.
10548         (*exception_receiver_2): Also enable when
10549         flag_reorder_blocks_and_partition is set.
10550
10551 2009-08-20  Matt Rice  <ratmice@gmail.com>
10552             Diego Novillo  <dnovillo@google.com>
10553
10554         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10555         tree-ssa-sccvn.h.
10556
10557 2009-08-20  Richard Guenther  <rguenther@suse.de>
10558
10559         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10560         * c-tree.h (c_dup_lang_specific_decl): Remove.
10561         (struct lang_decl, struct lang_type): Move definitions ...
10562         * c-lang.h: ... here.  New file.
10563         * c-decl.c: Include c-lang.h.
10564         (c_dup_lang_specific_decl): Remove.
10565         * c-typeck.c: Include c-lang.h.
10566         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10567         (c-typeck.o): Likewise.
10568         * c-config-lang.in (gtfiles): Add c-lang.h.
10569         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10570         like c-tree.h.
10571
10572 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10573
10574         * config/alpha/alpha.c (alpha_end_function): Do not clear
10575         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10576         this is now handled in generic code.
10577
10578 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10579
10580         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10581         (s390_z10_fix_long_loop_prediction): New function.
10582         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10583         (s390_reorg): Walk over the INSNs and invoke
10584         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10585
10586 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10587
10588         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10589         "*brx_64bit", "*brx_31bit"): New patterns.
10590         * config/s390/s390.c ('E'): New output modifier.
10591
10592 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10593             Richard Earnshaw  <richard.earnshaw@arm.com>
10594
10595         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10596         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10597
10598 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10599
10600         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10601         patterns.
10602         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10603         for mode mode of operand0 when doing secondary reload for SAR.
10604
10605 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10606
10607         PR middle-end/41123
10608         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10609         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10610
10611 2009-08-19  Jason Merrill  <jason@redhat.com>
10612
10613         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
10614         supported template depth in C++0x.
10615
10616 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10617
10618         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
10619         free_after_compilation.
10620         * config/score/score7.c (score7_output_mi_thunk): Likewise.
10621         * config/score/score3.c (score3_output_mi_thunk): Likewise.
10622         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
10623         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
10624         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
10625         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
10626         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10627
10628 2009-08-19  Ian Lance Taylor  <iant@google.com>
10629
10630         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
10631         of (plus (mult (neg B) C) A).
10632
10633 2009-08-18  Michael Matz  <matz@suse.de>
10634
10635         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
10636         instead of comparing TYPE_MAIN_VARIANT for equality.
10637         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
10638         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
10639         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
10640         * gimplify.c (goa_lhs_expr_p): Ditto and use
10641         STRIP_USELESS_TYPE_CONVERSION.
10642
10643 2009-08-18  Michael Matz  <matz@suse.de>
10644
10645         * tree-ssa-structalias.c (create_variable_info_for): Also mark
10646         first field in a struct.
10647         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
10648
10649 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10650
10651         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10652         locators before emit_insn is called.  Remove assert that
10653         cfun->is_thunk.
10654         (alpha_end_function): Clear crtl->emit structure and free insn
10655         locators if cfun->is_thunk is true.
10656
10657 2009-08-18  Jason Merrill  <jason@redhat.com>
10658
10659         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
10660         type if available.
10661         * configure.ac: Test for it.
10662         * configure, config.in: Regenerate.
10663         * doc/install.texi: Document --enable-gnu-unique-object.
10664
10665 2009-08-18  Richard Guenther  <rguenther@suse.de>
10666
10667         PR middle-end/41094
10668         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
10669         pow(x,y*z) only if x is nonnegative.
10670
10671 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
10672
10673         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
10674         on jumps.
10675
10676         PR target/40971
10677         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
10678         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
10679
10680 2009-08-17  DJ Delorie  <dj@redhat.com>
10681
10682         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
10683         * config/m32c/prologue.md (epilogue_freit): New.
10684         (fset_b): New.
10685         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
10686         (bank_switch_p): Likewise.
10687         (fast_interrupt_p): Likewise.
10688         (interrupt_p): Likewise.
10689         (m32c_conditional_register_usage): Round memregs size up.
10690         (need_to_save): We only need to save $a0 when we use ENTER.
10691         (interrupt_p): Check for fast_interrupt too.
10692         (bank_switch_p): New.
10693         (fast_interrupt_p): New.
10694         (m32c_attribute_table): Add bank_switch and fast_interrupt.
10695         (m32c_emit_prolog): Support bank switching and fast interrupts.
10696         * doc/extend.texi (Function Attributes): Add bank_switch and
10697         fast_interrupt.
10698
10699 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
10700
10701         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
10702         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
10703
10704 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
10705
10706         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
10707         (menu): Add IA-64/VMS Options.
10708         (IA-64/VMS Options): Likewise.
10709
10710 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10711
10712         PR target/38599
10713         * config/mips/mips.md (*lwxs): Use :P for pointer values.
10714
10715 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
10716
10717         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
10718         (mips_pop_asm_switch): Likewise.
10719         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
10720         with...
10721         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10722         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
10723         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
10724         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
10725         instead of set_noreorder.
10726         (mips_output_function_prologue): Use the new functions.
10727         (mips_output_function_epilogue): Likewise.
10728         (mips_need_noat_wrapper_p): New function, split out from...
10729         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
10730         Use mips_push_asm_switch and mips_pop_asm_switch.
10731         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
10732         and mips_pop_asm_switch.
10733         (ASM_OUTPUT_REG_POP): Likewise.
10734         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
10735         Use mips_pop_asm_switch.
10736         (mips_asm_switch): New structure.
10737         (set_noreorder, set_nomacro): Replace with...
10738         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
10739         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
10740         instead of set_nomacro.
10741         (fix_truncsfsi2_macro): Likewise.
10742         (cprestore): Likewise.
10743         (hazard): Use mips_noreorder instead of set_noreorder.
10744         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10745
10746 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
10747
10748         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
10749         from prev_active_insn.
10750
10751 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
10752
10753         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
10754         * config/avr/avr.c (avr_override_options): Initialize
10755         avr_current_arch variable.
10756         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
10757         __AVR_HAVE_16BIT_SP__ according to the device type.
10758         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
10759         TARGET_TINY_STACK.
10760         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
10761         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
10762
10763 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
10764
10765         PR debug/37801
10766         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
10767         generating inlined subroutine die only. We shouldn't be
10768         called for anything else.
10769         (gen_block_die): Don't generate inline subroutine debug info for
10770         abstract blocks.
10771
10772 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10773
10774         * graphite-poly.c (print_pbb): Print PBB index.
10775
10776 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
10777
10778         PR middle-end/40981
10779         * graphite-interchange.c (ppl_max_for_le): Moved...
10780         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
10781         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
10782         ppl_Pointset_Powerset_C_Polyhedron_maximize.
10783         * graphite-ppl.h (ppl_max_for_le): Declared.
10784
10785 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
10786
10787         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
10788         supported on all platforms.
10789         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
10790         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
10791         * c-pragma.c: Likewise.
10792         * target-def.h (TARGET_INITIALIZER): Remove
10793         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10794         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
10795
10796 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10797
10798         * config/ia64/fde-vms.c: New file.
10799         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
10800         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
10801         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
10802         (uw_frame_state_for): Only register a personality routine if it is
10803         known to be compatible with our expectations.
10804         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
10805         Declare unw_table_entry stack variable and
10806         mod all calls to _Unwind_FindTableEntry to add arg.
10807         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
10808         (_Unwind_FindTableEntry): Add arg to prototype.
10809
10810 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
10811
10812         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
10813         field 'signal_pfs_loc'.
10814         (uw_frame_state_for): Remove duplicate code dealing with leaf
10815         procedures without unwind info.
10816         If in the frame after unwinding through a signal handler, restore
10817         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
10818         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
10819         'pfs_loc' to the AR.PFS location in the signal context; instead
10820         set 'signal_pfs_loc'.
10821         Manually generate the unwind info for the AR.PFS register.
10822         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
10823         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
10824         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
10825         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
10826         instead set 'signal_pfs_loc'.
10827         Remove code preventing the AR.PFS register from being restored
10828         from the signal context.
10829
10830 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
10831             Tristan Gingold  <gingold@adacore.com>
10832
10833         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
10834         * config/ia64/t-vms: New file.
10835         * config/ia64/vms64.h: New file.
10836         * config/ia64/vms.h: New file.
10837         * config/ia64/vms-crtinit.asm: New file.
10838         * config/ia64/vms_symvec_libgcc_s.opt: New file.
10839         * config/ia64/vms-unwind.h: New file.
10840
10841 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10842
10843         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
10844         TFmode compares.
10845
10846 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10847
10848         PR middle-end/30789
10849         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
10850         Move declaration...
10851         * real.h (do_mpc_arg2): ... here.
10852         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
10853         and RDIV_EXPR.
10854
10855 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
10856
10857         * final.c (add_debug_prefix_map): Don't use GC memory for
10858         old_prefix and new_prefix.
10859
10860 2009-08-14  Richard Guenther  <rguenther@suse.de>
10861
10862         * ipa-prop.c (compute_complex_pass_through): If we cannot
10863         compute a non-varying offset for IPA_JF_ANCESTOR punt.
10864
10865 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10866
10867         * c-lex.c (c_lex_with_flags): Increase size of local variable
10868         to avoid memory clobber.
10869
10870 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
10871
10872         PR target/40934
10873         * config/i386/i386.c (ix86_fp_comparison_strategy):
10874         Only enable/disable sahf at function granularity.
10875
10876 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
10877
10878         PR rtl-optimization/41064
10879         * reload1.c (reload_as_needed): Don't call extract_insn
10880         for known invalid replacements after calling
10881         validate_replace_rtx_group and verify_changes.
10882
10883 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
10884
10885         PR target/41019
10886         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
10887         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
10888         ix86_expand_fp_vcond.
10889         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
10890         Assert that operation is supported by ix86_expand_int_vcond.
10891         (vcondu<SSEMODE124C8:mode>): Ditto.
10892
10893 2009-08-13  DJ Delorie  <dj@redhat.com>
10894
10895         * config/i386/djgpp-stdint.h: New.
10896         * config.gcc (djgpp): Use it.
10897
10898 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10899
10900         * config/sh/sh.c (sh_override_options): When flag_exceptions or
10901         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
10902
10903 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
10904
10905         * tree-ssa-loop-prefetch.c
10906         (prune_ref_by_group_reuse): Enhance probabilistic analysis
10907         for long-stride pruning.
10908         (compute_miss_rate): New function to compute the probability
10909         that two memory references access different cache lines.
10910
10911 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
10912
10913         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
10914
10915 2009-08-13  Richard Guenther  <rguenther@suse.de>
10916
10917         PR middle-end/41047
10918         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
10919         use the constant pointer type.
10920         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
10921         of CV qualifiers on the target pointer type.
10922         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
10923         conversion check before restrict check.
10924
10925 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10926
10927         PR target/41029
10928         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
10929
10930 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10931
10932         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
10933
10934 2009-08-12  Richard Guenther  <rguenther@suse.de>
10935
10936         PR tree-optimization/41011
10937         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
10938         and reference constructing.
10939
10940 2009-08-12  Xinliang David Li  <davidxl@google.com>
10941
10942         PR tree-optimization/41012
10943         * tree-flow.h : New external interface.
10944         * gimple-low.c (check_call_arg): Change to public function.
10945         Remove argument mismatch check in lowering.
10946         * tree-inline.h (tree_can_inline_p): Interface change.
10947         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
10948         into this function.
10949         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
10950         Call change to tree_can_inline_p function.
10951         (cgraph_decide_inlining_incrementally): Ditto.
10952
10953 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
10954
10955         PR tree-optimization/41031
10956         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
10957         on the partition variable rather than promote_mode on the source
10958         type.  Assert that the partition variable's type has the same
10959         mode as the source value's.
10960
10961 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
10962
10963         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
10964         for for_return == 2.
10965         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
10966         comments.
10967         * calls.c (expand_call): Fix typo.
10968         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
10969         and PARM_DECL.
10970         * stmt.c (expand_value_return): Use promote_function_mode to copy out
10971         of pseudo.
10972         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
10973         * config/cris/cris.c (cris_promote_function_mode): Likewise.
10974         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
10975         * config/pa/pa.c (pa_promote_function_mode): Likewise.
10976
10977 2009-08-12  Andrew Haley  <aph@redhat.com>
10978
10979         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
10980
10981 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10982
10983         PR bootstrap/40103
10984         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
10985
10986 2009-08-12  Richard Guenther  <rguenther@suse.de>
10987
10988         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
10989         * gimplify.c (gimplify_modify_expr): Do not use
10990         lang_hooks.types_compatible_p.
10991         * tree-ssa.c (useless_type_conversion_p): For aggregates
10992         just return false if the canonical types differ.
10993
10994 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
10995
10996         PR middle-end/40980
10997         * sese.c (convert_for_phi_arg): New.
10998         (add_guard_exit_phis): Use convert_for_phi_arg.
10999
11000 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11001
11002         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
11003         unknown subscript upper bounds.
11004
11005 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11006             Pranav Garg  <pranav.garg2107@gmail.com>
11007
11008         * graphite-interchange.c (gather_access_strides): Removed.
11009         (ppl_max_for_le): New.
11010         (build_linearized_memory_access): New.
11011         (memory_stride_in_loop): New.
11012         (pbb_interchange_profitable_p): Reimplemented.
11013         * graphite-ppl.h (ppl_new_id_map): New.
11014         (ppl_interchange): New.
11015
11016 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11017
11018         * graphite-interchange.c (compute_subscript): Removed.
11019         (compute_array_size_cstr): Removed.
11020         (compute_array_size_poly): Removed.
11021         (compute_array_size): Removed.
11022         (gather_access_strides_poly): Removed.
11023         (gather_access_strides): Empty.
11024
11025 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11026
11027         * graphite-dependences.c (dependence_polyhedron_1): Replace
11028         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
11029         (graphite_legal_transform_dr): Same.
11030         (graphite_carried_dependence_level_k): Same.
11031         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
11032         Initialize PDR_NB_SUBSCRIPTS.
11033         (print_pdr_access_layout): Replace pdr_nb_subscripts with
11034         PDR_NB_SUBSCRIPTS.
11035         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
11036         (PDR_NB_SUBSCRIPTS): New.
11037         (pdr_nb_subscripts): Removed.
11038         (pdr_dim): Simplified.
11039         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
11040         with PDR_NB_SUBSCRIPTS.
11041
11042 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11043
11044         * graphite-interchange.c (compute_array_size): Remove use of
11045         PDR_DATA_CONTAINER.
11046         * graphite-poly.c (new_poly_dr): Remove argument data_container.
11047         Do not initialize PDR_DATA_CONTAINER.
11048         (print_pdr): Do not print PDR_DATA_CONTAINER.
11049         * graphite-poly.h (struct poly_dr): Remove data_container field.
11050         (PDR_DATA_CONTAINER): Removed.
11051         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
11052         PDR_DATA_CONTAINER.
11053         (build_poly_dr): Same.
11054
11055 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11056             Sebastian Pop  <sebastian.pop@amd.com>
11057
11058         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
11059         copy of the dependence polyhedron.  Free the temporary objects.
11060         (graphite_carried_dependence_level_k): Free unused objects before
11061         returning.
11062
11063 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11064
11065         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
11066         Early return without analyzing the data dependences if no
11067         transform has been done.  Call restore_scattering if the transform
11068         is not legal.
11069         (graphite-interchange.c): Same.
11070         * graphite-poly.c (print_scattering_function): Test for
11071         PBB_TRANSFORMED.
11072         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
11073         (apply_poly_transforms): Do not gcc_assert that
11074         the transform is legal.
11075         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
11076         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
11077         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
11078         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
11079         * graphite-poly.h (struct poly_scattering): New.
11080         (struct poly_bb): Add original, transformed, and saved fields.
11081         Remove transformed_scattering, original_scattering,
11082         nb_local_variables and nb_scattering_transform fields.
11083         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
11084         (poly_scattering_new): New.
11085         (poly_scattering_free): New.
11086         (poly_scattering_copy): New.
11087         (store_scattering_pbb): New.
11088         (store_scattering): New.
11089         (restore_scattering_pbb): New.
11090         (restore_scattering): New.
11091         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
11092         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
11093
11094 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11095
11096         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
11097         (print_scop): Same.
11098
11099 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11100
11101         * Makefile.in (graphite.o): Depends on PREDICT_H.
11102         * graphite.c: Include predict.h.
11103         (graphite_finalize): Call tree_estimate_probability.
11104         * predict.c (predict_loops): Do not call scev_initialize and
11105         scev_finalize.
11106         (tree_estimate_probability_bb): New.
11107         (tree_estimate_probability): Do not initialize loops: move that
11108         code to the driver.  Call tree_estimate_probability_bb.
11109         (tree_estimate_probability_driver): New.
11110         (pass_profile): Use tree_estimate_probability_driver.
11111         * predict.h (tree_estimate_probability): Declared.
11112
11113 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11114
11115         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
11116         * graphite-dependences.c (graphite_legal_transform): Add time to
11117         TV_GRAPHITE_DATA_DEPS.
11118         (dependency_between_pbbs_p): Same.
11119         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
11120
11121 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
11122
11123         PR rtl-optimization/41033
11124         * alias.c (nonoverlapping_component_refs_p): Punt when strict
11125         aliasing is disabled.
11126
11127 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11128
11129         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
11130         si_mask_operand, and_load_operand, low_bitmask_operand,
11131         and_reg_operand, and_operand): New predicates.
11132         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
11133         * config/mips/mips.c (and_operands_ok): New function.
11134         * config/mips/mips-protos.h (and_operands_ok): Declare it.
11135         * config/mips/mips.md (move_type): Add ext_ins and logical.
11136         (type): Handle them.
11137         (and<mode>3): Use and_reg_operand as the second operand's predicate.
11138         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
11139         shift_shift.  Remove commutative constraint modifier.
11140         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
11141         shift_shift.
11142         (*clear_upper32_dext): Remove define_insn_and_split.
11143         (*clear_upper32): Turn this define_insn_and_split ...
11144         (splitter for ANDing register with 0xffff_ffff): .. into this.
11145
11146 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11147
11148         * combine.c (try_widen_shift_mode): Factor out code to check if an
11149         integer constant is a low-order bitmask from here ...
11150         * rtlanal.c (low_bitmask_len): ... to here.
11151         * rtl.h (low_bitmask_len): Declare.
11152
11153 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
11154
11155         PR target/8603
11156         * config/alpha/alpha.md (addsi3): Remove expander.
11157         (addsi3): Rename from *addsi3_internal insn pattern.
11158         (subsi3): Remove expander.
11159         (subsi3): Rename from *subsi3_internal insn pattern.
11160
11161 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
11162
11163         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
11164         FWRITE_UNLOCKED.
11165
11166 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
11167             Eric Botcazou  <botcazou@adacore.com>
11168             Douglas B Rupp  <rupp@gnat.com>
11169
11170         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
11171         that records that fit in 64 bits are returned by immediate value,
11172         as required by OpenVMS Calling Standard.
11173         (function_value): Adjust for above modification.
11174         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
11175         virtual_incoming_args_rtx as base object, not next_arg.
11176         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
11177
11178 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11179
11180         * reload.c (find_reloads_subreg_address): Check the original
11181         req_equiv_mem address to detect the case where an address is
11182         not valid in the outer mode.
11183
11184 2009-08-11  Richard Guenther  <rguenther@suse.de>
11185
11186         PR bootstrap/40788
11187         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11188
11189 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11190
11191         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11192         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11193
11194 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11195             Douglas B Rupp  <rupp@gnat.com>
11196
11197         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11198         PT_STACK when frame_pointer_needed on OpenVMS.
11199         (alpha_pv_save_size, alpha_using_fp): Remove.
11200         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11201         with proper processing for PT_NULL.
11202         (alpha_vms_initial_elimination_offset): New function. Support for
11203         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11204         (alpha_sa_size): Force procedure type to PT_STACK when
11205         frame_pointer_needed on OpenVMS.
11206         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11207         (alpha_using_fp): Likewise.
11208         (alpha_vms_can_eliminate): Add prototype.
11209         (alpha_vms_initial_elimination_offset): Likewise.
11210         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11211         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11212
11213 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11214             Douglas B Rupp  <rupp@gnat.com>
11215
11216         * config/alpha/alpha.c (common_object_handler): New function.
11217         (vms_attribute_table): Declare a single attribute "common_object".
11218         (vms_output_aligned_decl_common): New global function.
11219         (SECTION_VMS_OVERLAY): Delete.
11220         (SECTION_VMS_GLOBAL): Likewise.
11221         (SECTION_VMS_INITIALIZE): Likewise.
11222         (vms_asm_named_section): Remove support for above flags.
11223         (vms_section_type_flags): Delete.
11224         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11225         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11226         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11227         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11228
11229 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11230
11231         PR target/41015
11232         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11233         (sub_ddmmss): Likewise.
11234
11235 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11236
11237         PR bootstrap/41018
11238         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11239         year.
11240
11241 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11242
11243         PR target/37053
11244         * reload1.c (reload_as_needed): Use cancel_changes to completely
11245         undo a failed replacement attempt.
11246
11247 2009-08-10  Richard Guenther  <rguenther@suse.de>
11248
11249         PR middle-end/41006
11250         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11251         (useless_type_conversion_p): ... here.  Require pointer targets
11252         to be compatible.
11253
11254 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11255
11256         PR c++/40866
11257         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11258         loose the original type of the statement list.
11259
11260 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11261
11262         * config/alpha/alpha.c: Include libfuncs.h
11263         (avms_asm_output_extern): New function.
11264         (alpha_init_libfuncs): Init some decc libfuncs.
11265         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11266         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11267         (DO_CRTL_NAMES): Define.
11268         (LIB_SPEC): Remove.
11269         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11270         (LONG_TYPE_SIZE): Define.
11271         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11272         (SUBTARGET_SWITCHES): Define malloc64 switch.
11273         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11274         (MASK_RETURN_ADDR): Define.
11275         doc/invoke.texi (mmalloc64): Document switch.
11276
11277 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11278             Douglas B Rupp  <rupp@gnat.com>
11279
11280         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11281         uses_condition_handler.
11282         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11283         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11284         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11285         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11286         (code_for_builtin): New insn codes for the new alpha_builtins.
11287         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11288         (alpha_sa_size): Account for uses_condition_handler.
11289         (alpha_expand_prologue): Likewise.
11290         (alpha_start_function): Likewise.
11291         (alpha_expand_epilogue): Likewise.
11292         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11293         establish/revert expanders.
11294         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11295         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11296         New expander, resorting to the alpha.c associated function.
11297         (builtin_revert_vms_condition_handler): Likewise.
11298         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11299         __gcc_shell_handler, the static VMS condition handler used as
11300         an indirection wrapper to the current dynamically established
11301         handler.
11302         * config/alpha/vms-unwind.h: Complete rewrite.
11303         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11304         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11305
11306 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11307             Douglas B Rupp  <rupp@gnat.com>
11308
11309         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11310         (alpha_need_linkage): Handle aliases.  Return function symbol.
11311         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11312         Use ultimate alias target for the linkage name.
11313         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11314         by alpha_need_linkage for the function symbol.
11315         (setmemdi): Likewise.
11316
11317 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11318
11319         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11320         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11321         (ASM_WEAKEN_LABEL): Define.
11322         (CRT_CALL_STATIC_FUNCTION): Define.
11323         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11324         (ENDFILE_SPEC): Define.
11325         (INIT_SECTION_ASM_OP): Define.
11326         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11327         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11328         crtend.o crtendS.o.
11329         (MULTILIB_OSDIRNAMES): Define.
11330         (shlib_version): Define.
11331         (SHLIB_EXT): Define.
11332         (SHLIB_OBJS): Define.
11333         (SHLIB_NAME): Define.
11334         (SHLIB_MULTILIB): Define.
11335         (SHLIB_INSTALL): Define.
11336         (SHLIB_SYMVEC): Define.
11337         (SHLIB_SYMVECX2): Define.
11338         (SHLIB_LINK): Define.
11339
11340 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11341
11342         * config/alpha/alpha.c (alpha_initialize_trampoline):
11343         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11344         (alpha_start_function): Emit transfer address on nested functions
11345         for VMS trampoline call.
11346         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11347         since no longer used.
11348         * config/alpha/vms-tramp.asm: Remove.
11349         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11350         since now only data initialized at runtime.
11351
11352 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11353
11354         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11355         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11356         (MD_EXEC_PREFIX): Remove, no longer used.
11357         (MD_STARTFILE_PREFIX): Likewise.
11358         (INCLUDE_DEFAULTS): Likewise.
11359         * config/alpha/t-vms:
11360         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11361
11362 2009-08-09  Richard Guenther  <rguenther@suse.de>
11363
11364         PR tree-optimization/41016
11365         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11366         (operand_precision): Remove.
11367         (integral_operand_p): Likewise.
11368         (recognize_single_bit_test): Adjust.
11369
11370 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11371
11372         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11373         operation overflows.  Likewise non-cast unary arithmetic.
11374         If one arm of a conditional expression is always taken,
11375         inhibit evaluation warnings for the other arm.  Likewise inhibit
11376         evaluation warnings for the second && or || operand if the first
11377         operand is enough to determine the result.
11378         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11379         rules here.
11380         (build_binary_op): Prevent duplicate evaluation warnings.
11381
11382 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11383
11384         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11385         and destination have different modes, Use promote_mode to
11386         determine the signedness of the conversion.  Assert that the
11387         promoted source mode matches the destination mode.  Don't pass
11388         the destination and destination mode to expand_expr if the source
11389         mode is different.  Simplify conversion logic.
11390
11391 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11392
11393         PR tree-optimization/41008
11394         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11395         from condition only in case it's a comparison. Adjust checks.
11396
11397 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11398
11399         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11400         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11401         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11402         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11403         (dump_cand): Handle them.
11404         (struct iv_cand): New members COST_STEP and AINC_USE.
11405         (stmt_after_increment): Likewise.
11406         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11407         callers changed.  Use gimple_uid comparison instead of scanning.
11408         (add_candidate_1): When looking for identical candidates, take
11409         AINC_USE into account.  Set it for new candidates.
11410         (force_expr_to_var_cost): Cast target_spill_cost to int.
11411         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11412         All callers changed.  Check for availability of autoinc addressing
11413         modes, both in general for a given mode, and in the specific use case.
11414         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11415         changed.
11416         (get_computation_cost): Likewise.
11417         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11418         add_autoinc_candidates): New static functions.
11419         (add_candidate): Call add_autoinc_candidates for candidates based on
11420         a USE_ADDRESS use.
11421         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11422         (determine_use_iv_cost_address): If we have an autoinc candidate at
11423         the matching use, verify autoinc is possible and subtract the cost
11424         of the candidate's step from the cost.
11425         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11426         member of the candidate.
11427         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11428         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11429
11430 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11431
11432         * config.build (ia64-hp-*vms*): New target.
11433         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11434         with ia64-hp-*vms*.
11435         * config.gcc (ia64-hp-*vms*): New target.
11436         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11437         with ia64-hp-*vms*.
11438         * config.host (ia64-hp-*vms*): New target.
11439         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11440         with ia64-hp-*vms*.
11441
11442 2009-08-08  Richard Guenther  <rguenther@suse.de>
11443
11444         PR tree-optimization/40991
11445         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11446
11447 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11448
11449         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11450         mode check.  Do truncations in an integer mode.
11451         (force_to_mode): Handle subregs for all mode types.  Only do
11452         arithmetic simplifications on integer modes.
11453
11454 2009-08-07  Richard Guenther  <rguenther@suse.de>
11455
11456         PR tree-optimization/40999
11457         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11458         (maybe_fold_reference): Lookup constant initializers.
11459         (fold_gimple_assign): Likewise.
11460
11461 2009-08-07  Richard Guenther  <rguenther@suse.de>
11462
11463         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11464         that require structural equality defer to the langhook.
11465
11466 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11467
11468         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11469         comments.
11470         (struct ipa_pass_through_data): New type.
11471         (struct ipa_ancestor_jf_data): New type.
11472         (union jump_func_value): Removed field formal_id, added fields
11473         pass_through and ancestor.
11474         (struct ipa_param_call_note): Changed type of formal_id to int from
11475         unsigned.
11476         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11477         operations jump functions and ancestor jump functions.
11478         (compute_complex_pass_through): New function.
11479         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11480         reflect changes in the jump function strucutre.
11481         (update_jump_functions_after_inlining): Ignore complex pass-through
11482         and ancestor jump functions.
11483         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11484         polynomial pass-through with operation jump functions.
11485
11486 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11487
11488         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11489         fde->dw_fde_begin as begin label instead of hot/cold label.
11490         Use LLSDAC label instead of LLSDA for second section lsda.
11491         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11492         label instead of LLSDA if it is true.
11493         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11494         callers.
11495         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11496         SECTION argument.  Use it as index into crtl->eh.call_site_record
11497         array.
11498         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11499         use it to determine how to print table entries instead of using
11500         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11501         label instead of normal begin label as base.
11502         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11503         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11504         ensure no EH range spans between sections and that landing pads
11505         are always in the corresponding section.
11506         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11507         for crtl->eh.call_site_record being an array rather than scalar.
11508         (output_one_function_exception_table): New function, copied
11509         from output_function_exception_table.  Adjust
11510         dw2_size_of_call_site_table, dw2_output_call_site_table
11511         callers.  For SECOND section use *C suffixed labels.
11512         (output_function_exception_table): Call
11513         output_one_function_exception_table and, when doing hot/cold
11514         partitioning, also another time for the second section.
11515         * opts.c: Include except.h.
11516         (decode_options): Allow -freorder-blocks-and-partition with
11517         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11518         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11519         * function.h (struct rtl_eh): Change call_site_record from
11520         scalar into array of 2 elements.
11521
11522 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11523
11524         * ipa-prop.c (count_formal_params_1): New function.
11525         (ipa_get_vector_of_formal_parms): New function.
11526         (get_vector_of_formal_parm_types): New function.
11527         (ipa_modify_formal_parameters): New function.
11528         (ipa_modify_call_arguments): New function.
11529         (index_in_adjustments_multiple_times_p): New function.
11530         (ipa_combine_adjustments): New function.
11531         (ipa_dump_param_adjustments): New function.
11532         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11533         (ipa_get_vector_of_formal_parms): Declare.
11534         (ipa_modify_formal_parameters): Declare.
11535         (ipa_modify_call_arguments): Declare.
11536         (ipa_combine_adjustments): Declare.
11537         (ipa_dump_param_adjustments): Declare.
11538         (build_ref_for_offset): Declare.
11539         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11540         * tree-sra.c: Include ipa-prop.c.
11541         (build_ref_for_offset): Make public.
11542
11543 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11544
11545         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11546
11547 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11548
11549         * gcc/doc/extend.texi (__builtin_extract_return_address)
11550         (__builtin_frob_return_address): Document.
11551
11552 2009-08-06  Paul Brook  <paul@codesourcery.com>
11553
11554         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11555         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11556         implementation on ARMv6-M.
11557
11558 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11559
11560         * doc/extend.texi (pcs): Document new attribute for ARM.
11561
11562 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11563
11564         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11565         variants.
11566
11567 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11568
11569         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11570         warning ().
11571
11572 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11573
11574         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11575
11576 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11577
11578         Merge ARM/hard_vfp_branch to trunk.
11579
11580         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11581
11582         * arm.c (libcall_eq): New function.
11583         (libcall_hash): New function.
11584         (add_libcall): New function.
11585         (arm_libcall_uses_aapcs_base): New function.
11586         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11587         libcalls using the base PCS.
11588         (arm_init_cumulative_args): Likewise.
11589
11590         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11591
11592         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11593         Use base ABI for conversion libfuncs between HFmode and SFmode.
11594
11595         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11596
11597         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11598         V4SImode as representatives of all 64-bit and 128-bit vector
11599         types.  Allow vector types without vector modes.
11600         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11601         without vector modes like BLKmode.
11602         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11603         BLKmode.  Avoid unsupported vector modes or TImode moves for
11604         non-TARGET_NEON.
11605         (aapcs_vfp_allocate_return_reg): Likewise.
11606         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11607         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11608
11609         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11610
11611         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11612         (arm_get_pcs_model): Pass attribute arguments to
11613         arm_pcs_from_attribute.
11614         (arm_init_cumulative_args): Use base AAPCS for conversions from
11615         floating-point types to DImode.
11616         (arm_attribute_table): Add pcs attribute.
11617         (arm_handle_pcs_attribute): New.
11618         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
11619         conversions from floating-point types to DImode, also declare them
11620         to use base AAPCS and declare functions they call to use base
11621         AAPCS and their RTABI names.
11622
11623         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11624
11625         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
11626         -mfloat-abi=hard not being supported for VFP.
11627
11628         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
11629
11630         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
11631         SYMBOL_REF to hard_libcall_value.
11632
11633         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11634             Richard Earnshaw  <rearnsha@arm.com>
11635
11636         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
11637         has been put on the stack, all remaining co-processory arguments for
11638         that co-processor also go on the stack.
11639
11640         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
11641
11642         * config/arm/arm.c (arm_return_in_memory): Handle returning
11643         vectors of suitable size in registers also for AAPCS case.
11644
11645         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
11646
11647         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
11648
11649         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
11650
11651         ARM Hard-VFP calling convention
11652         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
11653         * target.h (gcc_target): Add libcall_value to table of call hooks.
11654         * targhooks.h (default_libcall_value): Default implementation.
11655         * targhooks.c (default_libcall_value): Likewise.
11656         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
11657         * optabs.c (expand_unop): Use it.
11658         * expr.h (hard_libcall_value): Pass the function RTX through.
11659         * calls.c (emit_library_call_value_1): Update call to
11660         hard_libcall_value.
11661         * explow.c (hard_libcall_value): Use new target hook.
11662         * config/arm/arm.c: Include cgraph.h
11663         (TARGET_FUNCTION_VALUE): Override default hook.
11664         (arm_pcs_default): New variable.
11665         (arm_override_options): Don't fault hard calling convention with VFP.
11666         Add support for AAPCS variants.
11667         (arm_function_value): Make static.  Handle AAPCS variants.
11668         (arm_libcall_value): New function.
11669         (arm_apply_result_size): Handle VFP registers in results.
11670         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
11671         conventions.
11672         (pcs_attribute_args): New variable.
11673         (arm_pcs_from_attribute): New function.
11674         (arm_get_pcs_model): New function.
11675         (aapcs_vfp_cum_init): New function.
11676         (aapcs_vfp_sub_candidate): New function.
11677         (aapcs_vfp_is_return_candidate): New function.
11678         (aapcs_vfp_is_call_candidate): New function.
11679         (aapcs_vfp_allocate): New function.
11680         (aapcs_vfp_allocate_return_reg): New function.
11681         (aapcs_vfp_advance): New function.
11682         (aapcs_cp_arg_layout): New variable.
11683         (aapcs_select_call_coproc): New function.
11684         (aapcs_select_return_coproc): New function.
11685         (aapcs_allocate_return_reg): New function.
11686         (aapcs_libcall_value): New function.
11687         (aapcs_layout_arg): New function.
11688         (arm_init_cumulative_args): Initialize AAPCS args data.
11689         (arm_function_arg): Handle AAPCS variants using new interface.
11690         (arm_arg_parital_bytes): Likewise.
11691         (arm_function_arg_advance): New function.
11692         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
11693         calling conventions.
11694         (arm_setup_incoming_varargs): Handle new AAPCS args data.
11695         * arm.h (NUM_VFP_ARG_REGS): Define.
11696         (LIBCALL_VALUE): Update.
11697         (FUNCTION_VALUE): Delete.
11698         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
11699         (arm_pcs): New enum.
11700         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
11701         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
11702         (FUNCTION_ARG_REGNO_P): Add VFP regs.
11703         * arm-protos.h (arm_function_arg_advance): Add.
11704         (aapcs_libcall_value): Add.
11705         (arm_function_value): Delete.
11706
11707 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
11708             H.J. Lu  <hongjiu.lu@intel.com>
11709
11710         PR target/40957
11711         * config/i386/i386.c (standard_sse_mode_p): Remove.
11712         (standard_sse_constant_p): Return 2 for integer mode
11713         vector_all_ones_operand when SSE2 is enabled.
11714         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
11715         (ix86_expand_vector_move): Do not check for negative values from
11716         standard_sse_constant_p.
11717
11718 2009-08-06  Richard Guenther  <rguenther@suse.de>
11719
11720         * tree-ssa.c (useless_type_conversion_p_1): Make function and
11721         array type comparisons frontend independent.
11722         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
11723         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
11724         out array reference lower bound and element size operands.
11725         (ao_ref_init_from_vn_reference): Properly compute the offset
11726         for ARRAY_RANGE_REF.
11727         (vn_reference_fold_indirect): Fill out array reference lower
11728         bound and element size operands.
11729         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
11730         a non gimple valued reference operand which can happen for
11731         array reference lower bound or element size.
11732         (create_component_ref_by_pieces_1): Properly generate the
11733         element size operand for array references.
11734
11735 2009-08-06  Richard Guenther  <rguenther@suse.de>
11736
11737         PR tree-optimization/40964
11738         * tree.c (iterative_hash_host_wide_int): Export.
11739         * tree.h (iterative_hash_host_wide_int): Declare.
11740         * tree-ssa-structalias.c (heapvar_map): New struct.
11741         (heapvar_map_eq): New function.
11742         (heapvar_map_hash): Likewise.
11743         (heapvar_lookup): Adjust.
11744         (heapvar_insert): Likewise.
11745         (make_constraint_from_heapvar): Allow multiple heap variables
11746         per decl at different offsets.
11747         (init_alias_heapvars): Adjust.
11748
11749 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
11750
11751         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
11752         * mips_output_sync_loop (mips_output_sync_loop): Only emit
11753         trailing sync if TARGET_SYNC_AFTER_SC.
11754
11755 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
11756
11757         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
11758         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
11759         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
11760         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
11761         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
11762         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
11763         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
11764         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
11765         test_and_set_12): Rewrite calls to mips_output_sync_loop.
11766         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
11767         the prototype declaration match the definition.
11768         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
11769         instructions explicitly.  Add barrier_before and operands
11770         parameters.
11771         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
11772         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
11773         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
11774         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
11775         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
11776         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
11777
11778 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
11779
11780         * tree-ssa-alias.c: Fix intervals to use [) syntax.
11781
11782 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
11783             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
11784
11785         PR target/40906
11786         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
11787         source operand.
11788
11789 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
11790
11791         PR rtl-optimization/40924
11792         * dse.c (canon_address): Before calling cselib_expand_value_rtx
11793         make sure canon_rtx (mem_address) isn't simpler than
11794         canon_rtx (expanded_mem_address).
11795
11796 2009-08-05  Li Feng  <nemokingdom@gmail.com>
11797
11798         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
11799         for each poly_bb_p.
11800         (build_scop_drs): Build alias set for each SCoP.
11801
11802 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
11803
11804         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
11805         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
11806         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
11807         (MIPS_ARCH_FLOAT_SPEC): Likewise.
11808         (BASE_DRIVER_SELF_SPECS): Likewise.
11809
11810 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
11811
11812         * tree-ssa-alias.c: Fix some comment typos.
11813
11814 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
11815
11816         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
11817         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
11818
11819 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
11820
11821         PR c/39902
11822         * simplify-rtx.c (simplify_binary_operation_1): Disable
11823         simplifications for decimal float operations.
11824
11825 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
11826
11827         PR middle-end/40943
11828         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
11829         operand of INDIRECT_REF.
11830
11831 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
11832
11833         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
11834         constants referencing TLS symbols.
11835
11836 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11837
11838         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
11839         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
11840
11841 2009-08-03  Richard Guenther  <rguenther@suse.de>
11842
11843         * tree.c (make_vector_type): Build a main variant first,
11844         get the canonical one and then build the variant.
11845         * tree-ssa.c (useless_type_conversion_p_1): Handle
11846         fixed-point types.
11847         (useless_type_conversion_p): Conversions to pointers to
11848         incomplete record types are useless.
11849
11850 2009-08-03  Richard Guenther  <rguenther@suse.de>
11851
11852         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
11853         file will be created.
11854         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
11855         * toplev.c (compile_file): Adjust comment.
11856
11857 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
11858
11859         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
11860         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
11861         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11862         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11863         (sh_promote_function_mode): Fix typo.
11864
11865 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
11866
11867         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
11868
11869 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11870
11871         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
11872         declaration arguments.
11873
11874 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
11875
11876         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
11877         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
11878         (ix86_split_ashl): Ditto.
11879         (ix86_expand_vector_init_one_nonzero): Ditto.
11880         (ix86_expand_vector_set): Ditto.
11881         (ix86_expand_reduc_v4sf): Ditto.
11882
11883 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
11884
11885         * explow.c (promote_function_mode): Remove assert.
11886         * config/sh/sh.c (sh_promote_function_mode): Declare.
11887
11888 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11889
11890         * config/pa/pa.c (pa_promote_function_mode): Declare.
11891         Change to static.  Fix promote_mode call.
11892
11893         * gthr-dce.h (CONST_CAST2): Define if not defined.
11894         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
11895
11896         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
11897
11898 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
11899
11900         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11901         now write-only variable unsignedp.
11902         (expand_expr_real_1): Use promote_decl_mode.
11903         * expr.h (promote_function_mode, promote_decl_mode): New.
11904         (promote_mode): Remove last argument.
11905         * function.c (assign_temp): Drop last argument of promote_mode.
11906         (assign_parm_find_data_types): Use promote_function_mode.
11907         (assign_parm_setup_reg): Likewise.
11908         (expand_function_end): Use promote_function_mode.
11909         * calls.c (initialize_argument_information): Use promote_function_mode.
11910         (precompute_arguments): Use promote_mode instead of checking if
11911         only PROMOTE_FUNCTION_MODE is defined.
11912         (expand_call): When making sibcall decisions, use promote_function_mode.
11913         Below, remove an if for targetm.calls.promote_function_return and
11914         and use promote_function_mode.
11915         (emit_library_call_value_1): Use promote_function_mode, fix bug
11916         where promote_mode was passed FOR_CALL == 0 for a return value in an
11917         assertion.
11918         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11919         * explow.c (promote_function_mode, promote_decl_mode): New.
11920         (promote_mode): Keep only the FOR_CALL == 0 case.
11921         * combine.c (setup_incoming_promotion): Remove test of
11922         promote_function_args.  Use promote_function_mode.
11923         * stmt.c (expand_value_return): Use promote_decl_mode.
11924         (expand_decl): Use promote_decl_mode.
11925
11926         * expr.c (store_constructor): Use promote_decl_mode.  Remove
11927         now write-only variable unsignedp.
11928         (expand_expr_real_1): Use promote_decl_mode.
11929         * expr.h (promote_function_mode, promote_decl_mode): New.
11930         (promote_mode): Remove last argument.
11931         * function.c (assign_temp): Drop last argument of promote_mode.
11932         (assign_parm_find_data_types): Use promote_function_mode.
11933         (assign_parm_setup_reg): Likewise.
11934         (expand_function_end): Use promote_function_mode.
11935         * calls.c (initialize_argument_information): Use promote_function_mode.
11936         (precompute_arguments): Use promote_mode instead of checking if
11937         only PROMOTE_FUNCTION_MODE is defined.
11938         (expand_call): When making sibcall decisions, use promote_function_mode.
11939         Below, remove an if for targetm.calls.promote_function_return and
11940         and use promote_function_mode.
11941         (emit_library_call_value_1): Use promote_function_mode, fix bug
11942         where promote_mode was passed FOR_CALL == 0 for a return value in an
11943         assertion.
11944         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
11945         * explow.c (promote_function_mode, promote_decl_mode): New.
11946         (promote_mode): Keep only the FOR_CALL == 0 case.
11947         * combine.c (setup_incoming_promotion): Remove test of
11948         promote_function_args.  Use promote_function_mode.
11949         * stmt.c (expand_value_return): Use promote_decl_mode.
11950         (expand_decl): Use promote_decl_mode.
11951
11952         * explow.c (promote_function_mode): Just call the target hook.
11953         * targhooks.c (default_promote_function_mode,
11954         default_promote_function_mode_always_promote): New.
11955         * targhooks.h (default_promote_function_mode,
11956         default_promote_function_mode_always_promote): Declare.
11957         * target.h (promote_function_args, promote_function_return): Remove.
11958         (promote_function_mode): New.
11959         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
11960         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11961         (TARGET_PROMOTE_FUNCTION_MODE): New.
11962         (TARGET_CALLS): Adjust.
11963         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
11964         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
11965
11966         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
11967         * config/s390/s390.c (s390_promote_function_mode): ... here,
11968         with pointer handling.
11969         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11970         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11971
11972         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
11973         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
11974         with pointer handling.
11975         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11976         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11977
11978         * config/sh/sh-protos.h (sh_promote_function_mode): New.
11979         * config/sh/sh.c (sh_promote_function_mode): New.
11980         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11981         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11982
11983         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
11984         * config/cris/cris.c (cris_promote_function_mode): ... here.
11985         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11986         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11987
11988         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
11989         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
11990         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11991         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
11992
11993         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
11994         * config/arm/arm.c (arm_promote_function_mode): ... here, without
11995         complex type handling.
11996         (TARGET_PROMOTE_FUNCTION_MODE): Define.
11997         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
11998
11999         * config/pa/pa.c (pa_promote_function_mode): New.
12000         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12001         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12002
12003         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
12004         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12005         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
12006         * config/xtensa/xtensa.c: Likewise.
12007         * config/stormy16/stormy16.c: Likewise.
12008         * config/iq2000/iq2000.c: Likewise.
12009         * config/rs6000/rs6000.c: Likewise.
12010         * config/picochip/picochip.c: Likewise.
12011         * config/arc/arc.c: Likewise.
12012         * config/mcore/mcore.c: Likewise.
12013         * config/score/score.c: Likewise.
12014         * config/mips/mips.c: Likewise.
12015         * config/bfin/bfin.c: Likewise.
12016         * config/ia64/ia64.c: Likewise (disabled though).
12017
12018         * config/frv/frv.h: Remove pointless remark.
12019
12020         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
12021         TARGET_PROMOTE_FUNCTION_ARGS,
12022         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
12023         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
12024
12025 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
12026
12027         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
12028         -floop-parallelize-all.
12029         * toplev.c (process_options): Rename flag_graphite_force_parallel to
12030         flag_loop_parallelize_all.
12031         * tree-ssa-loop.c (gate_graphite_transforms): Same.
12032         * graphite.c (graphite_transform_loops): Same.
12033         * common.opt: Same.
12034         * graphite-poly.c (apply_poly_transforms): Same.
12035
12036 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
12037
12038         PR tree-optimization/40914
12039         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
12040         if set, then check the delta field of the PMF record.
12041         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
12042         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
12043         call is stored in the delta.
12044
12045 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
12046
12047         * config/mips/mips.md (*clear_upper32_dext): New pattern.
12048
12049 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
12050
12051         * config/i386/bsd.h (ASM_BYTE): New define.
12052         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
12053         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
12054         .byte.  Use fputs or putc instead of fprintf where appropriate.
12055         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
12056         fputs or putc instead of fprintf where appropriate.
12057         * config/i386/i386elf.h: Ditto.
12058         * config/i386/sysv4.h: Ditto.
12059
12060         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
12061         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
12062         (*tls_global_dynamic_64): Ditto.
12063
12064 2009-07-31  Christian Bruel  <christian.bruel@st.com>
12065
12066         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
12067
12068 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12069
12070         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
12071         Remove dead code for MINUS.
12072
12073 2009-07-31  Anthony Green  <green@moxielogic.com>
12074
12075         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
12076         $r12 in prologue.
12077         (moxie_expand_epilogue): Ditto for epilogue.
12078         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
12079         incoming arguments.
12080         (moxie_function_arg): Ditto.
12081         (moxie_pass_by_reference): Ditto.
12082         (moxie_arg_partial_bytes): Ditto.
12083         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
12084         (FUNCTION_ARG_ADVANCE) Ditto.
12085         (REG_PARM_STACK_SPACE) Ditto.
12086         (FUNCTION_ARG_REGNO_P) Dito.
12087
12088         * config.gcc: Add moxie linux config support.
12089         * gcc/config/moxie/uclinux.h: New file.
12090
12091 2009-07-31  DJ Delorie  <dj@redhat.com>
12092
12093         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
12094         (UNSPECV_SP_SWITCH_E): New.
12095         (sp_switch_1): Change to an unspec.
12096         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
12097         replace $r15.
12098         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
12099         reference the new stack's address
12100
12101 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12102
12103         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
12104         graphite-clast-to-gimple.o, graphite-dependences.o,
12105         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12106         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
12107         (graphite-blocking.o,
12108         graphite-clast-to-gimple.o, graphite-dependences.o,
12109         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12110         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
12111         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
12112         * cfgloop.h (struct loop): Add can_be_parallel field.
12113         * common.opt (fgraphite-identity): Moved up.
12114         (fgraphite-force-parallel): New flag.
12115         * graphite.c: Rewrite.
12116         * graphite.h: Rewrite.
12117         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
12118         after Graphite.
12119         * toplev.c (graphite_out_file): New file descriptor.
12120         (graphite_in_file): New.
12121         (process_options): flag_graphite_force_parallel cannot be used without
12122         Graphite.
12123         * tree-ssa-loop.c: Include toplev.h.
12124         (gate_graphite_transforms): Enable flag_graphite for
12125         flag_graphite_force_parallel.
12126
12127 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12128
12129         * ChangeLog.graphite: New.
12130         * graphite-blocking.c: New.
12131         * graphite-clast-to-gimple.c: New.
12132         * graphite-clast-to-gimple.h: New.
12133         * graphite-dependences.c: New.
12134         * graphite-dependences.h: New.
12135         * graphite-interchange.c: New.
12136         * graphite-poly.c: New.
12137         * graphite-poly.h: New.
12138         * graphite-ppl.c: New.
12139         * graphite-ppl.h: New.
12140         * graphite-scop-detection.c: New.
12141         * graphite-scop-detection.h: New.
12142         * graphite-sese-to-poly.c: New.
12143         * graphite-sese-to-poly.h: New.
12144         * sese.c: New.
12145         * sese.h: New.
12146
12147 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12148
12149         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
12150         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
12151
12152 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12153
12154         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
12155         (scev_is_linear_expression): Return false if the evolution is not
12156         affine multivariate.
12157
12158 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12159
12160         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
12161         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
12162
12163 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12164
12165         * tree-data-ref.c (debug_data_references): New.
12166         (debug_data_reference): New.
12167         * tree-data-ref.h (debug_data_references): Declared.
12168         (debug_data_reference): Declared.
12169
12170 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12171
12172         * tree-data-ref.c (stmt_simple_memref_p: Removed.
12173         * tree-data-ref.h (scop_p): Removed.
12174         (struct data_reference): Remove field scop.
12175         (DR_SCOP): Removed.
12176         (stmt_simple_memref_p): Removed.
12177
12178 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12179
12180         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
12181         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
12182         basic block empty.
12183
12184 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12185
12186         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12187
12188 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12189
12190         * doc/invoke.texi (-fgraphite-identity): Documented.
12191
12192 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12193
12194         * tree-scalar-evolution.c: Fix comment.
12195         (instantiate_scev_1): Return unknow from scev instantiation if the
12196         result is not above instantiate_below.
12197
12198 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12199
12200         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12201         static anymore.  Instantiate the symbols that may have been introduced
12202         by chrec_apply.
12203         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12204         Declared.
12205
12206 2009-07-30  DJ Delorie  <dj@redhat.com>
12207
12208         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12209         .vliw directive to VLIW sections.
12210
12211 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12212
12213         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12214         New variables.
12215         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12216         (AUTOHEADER): New variable.
12217         ($(srcdir)/cstamp-h.in): Use it.
12218
12219 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12220             Pat Haugen  <pthaugen@us.ibm.com>
12221             Revital Eres <ERES@il.ibm.com>
12222
12223         * config/rs6000/vector.md (VEC_F): Add VSX support.
12224         (VEC_A): Ditto.
12225         (VEC_N): Ditto.
12226         (mov<mode>): Ditto.
12227         (vector_load_<mode>): Ditto.
12228         (vector_store_<mode>): Ditto.
12229         (vector GPR move split): Ditto.
12230         (vec_reload_and_plus_<mptrsize>): Ditto.
12231         (vec_reload_and_reg_<mptrsize>): Ditto.
12232         (add<mode>3): Ditto.
12233         (sub<mode>3): Ditto.
12234         (mul<mode>3): Ditto.
12235         (neg<mode>2): Ditto.
12236         (abs<mode>2): Ditto.
12237         (smin<mode>3): Ditto.
12238         (smax<mode>3): Ditto.
12239         (vector_eq<mode>): Ditto.
12240         (vector_gt<mode>): Ditto.
12241         (vector_ge<mode>): Ditto.
12242         (vector_gtu<mode>): Ditto.
12243         (vector_select_<mode>_uns): Ditto.
12244         (vector_eq_<mode>_p): Ditto.
12245         (vector_gt_<mode>_p): Ditto.
12246         (vector_ge_<mode>_p): Ditto.
12247         (vector_gtu_<mode>_p): Ditto.
12248         (cr6_test_for_zero): Ditto.
12249         (cr6_test_for_zero_reverse): Ditto.
12250         (cr6_test_for_lt): Ditto.
12251         (cr6_test_for_lt_reverse): Ditto.
12252         (xor<mode>3): Ditto.
12253         (ior<mode>3): Ditto.
12254         (and<mode>3): Ditto.
12255         (one_cmpl<mode>2): Ditto.
12256         (nor<mode>2): Ditto.
12257         (andc<mode>2): Ditto.
12258         (float<VEC_int<mode>2): Ditto.
12259         (unsigned_float<VEC_int><mode>2): Ditto.
12260         (fix_trunc<mode><VEC_int>2): Ditto.
12261         (fixuns_trunc<mode><VEC_int>2): Ditto.
12262         (vec_init<mode>):
12263         (vec_set<mode>): Ditto.
12264         (vec_extract<mode>): Ditto.
12265         (vec_interleave_highv4sf): Ditto.
12266         (vec_interleave_lowv4sf): Ditto.
12267         (vec_realign_load_<mode>): Ditto.
12268         (vec_shl_<mode>): Ditto.
12269         (vec_shr_<mode>): Ditto.
12270         (div<mode>3): New patterns for VSX.
12271         (vec_interleave_highv2df): Ditto.
12272         (vec_interleave_lowv2df): Ditto.
12273         (vec_pack_trunc_v2df): Ditto.
12274         (vec_pack_sfix_trunc_v2df): Ditto.
12275         (vec_pack_ufix_trunc_v2df): Ditto.
12276         (vec_unpacks_hi_v4sf): Ditto.
12277         (vec_unpacks_lo_v4sf): Ditto.
12278         (vec_unpacks_float_hi_v4si): Ditto.
12279         (vec_unpacks_float_lo_v4si): Ditto.
12280         (vec_unpacku_float_hi_v4si): Ditto.
12281         (vec_unpacku_float_lo_v4si): Ditto.
12282         (movmisalign<mode>): Ditto.
12283         (vector_ceil<mode>2): New patterns for vectorizing math library.
12284         (vector_floor<mode>2): Ditto.
12285         (vector_btrunc<mode>2): Ditto.
12286         (vector_copysign<mode>3): Ditto.
12287
12288         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12289         predicate for setting the high bit in each word, used for copysign.
12290
12291         * config/rs6000/ppc-asm.h (f19): Whitespace.
12292         (f32-f63): Define if VSX.
12293         (v0-v31): Define if Altivec.
12294         (vs0-vs63): Define if VSX.
12295
12296         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12297
12298         * config/rs6000/power7.md: New file, provide tuning parameters for
12299         -mcpu=power7.
12300
12301         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12302         (rs6000_cpu_cpp_builtins): Ditto.
12303         (altivec_overloaded_builtins): Ditto.
12304         (altivec_resolve_overloaded_builtin): Ditto.
12305
12306         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12307         debug switch to disable vectorizing simple math builtin
12308         functions.
12309
12310         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12311         Vectorize simple math builtin functions.
12312         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12313         hook to vectorize math builtins.
12314         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12315         (rs6000_builtin_conversion): Add VSX/power7 support.
12316         (rs6000_builtin_vec_perm): Ditto.
12317         (vsplits_constant): Add support for loading up a vector constant
12318         with just the high bit set in each part.
12319         (rs6000_expand_vector_init): Add VSX/power7 support.
12320         (rs6000_expand_vector_set): Ditto.
12321         (rs6000_expand_vector_extract): Ditto.
12322         (rs6000_emit_move): Ditto.
12323         (bdesc_3arg): Ditto.
12324         (bdesc_2arg): Ditto.
12325         (bdesc_1arg): Ditto.
12326         (rs6000_expand_ternop_builtin): Ditto.
12327         (altivec_expand_builtin): Ditto.
12328         (rs6000_expand_unop_builtin): Ditto.
12329         (rs6000_init_builtins): Ditto.
12330         (altivec_init_builtins): Ditto.
12331         (builtin_function_type): Ditto.
12332         (rs6000_common_init_builtins): Ditto.
12333         (rs6000_handle_altivec_attribute); Ditto.
12334         (rs6000_mangle_type): Ditto.
12335         (rs6000_vector_mode_supported_p): Ditto.
12336         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12337         are mode dependent.
12338
12339         * config/rs6000/vsx.md: New file for VSX support.
12340
12341         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12342         identifing values with just the most significant bit set.
12343         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12344         vectorized builtins.
12345
12346         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12347         (UNSPEC_VRFIM): Delete.
12348         (splitter for loading up vector with most significant bit): New
12349         splitter for vectorizing copysign.
12350         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12351         vectorizing simple math functions.
12352         (altivec_vrfip): Add support for vectorizing simple math functions.
12353         (altivec_vrfim): Ditto.
12354         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12355
12356         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12357         (power7.md, vsx.md): Include for power7 support.
12358         (copysigndf3): Use VSX instructions if -mvsx.
12359         (negdf2_fpr): Ditto.
12360         (absdf2_fpr): Ditto.
12361         (nabsdf2_fpr): Ditto.
12362         (adddf3_fpr): Ditto.
12363         (subdf3_fpr): Ditto.
12364         (muldf3_fpr): Ditto.
12365         (divdf3_fpr): Ditto.
12366         (fix_truncdfdi2_fpr): Ditto.
12367         (cmpdf_internal1): Ditto.
12368         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12369         (btruncdf2, btruncdf2_fpr): Ditto.
12370         (ceildf2, ceildf2_fpr): Ditto.
12371         (floordf2, floordf2_fpr): Ditto.
12372         (floatdidf2, floatdidf2_fpr): Ditto.
12373         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12374         (fmsubdf4_fpr): Ditto.
12375         (fnmadddf4_fpr_1): Ditto.
12376         (fnmadddf4_fpr_2): Ditto.
12377         (fnmsubdf4_fpr_1): Ditto.
12378         (fnmsubdf4_fpr_2): Ditto.
12379         (fixuns_truncdfdi2): Add expander for VSX support.
12380         (fix_truncdfdi2): Ditto.
12381         (fix_truncdfsi2): Ditto.
12382         (ftruncdf2): Ditto.
12383         (btruncsf2): Whitespace.
12384         (movdf_hardfloat32): Add support for VSX registers.
12385         (movdf_softfloat32): Ditto.
12386         (movdf_hardfloat64): Ditto.
12387         (movdf_hardfloat64_mfpgpr): Ditto.
12388         (movdf_softfloat64): Ditto.
12389         (movti splitters): Add check for vector registers supporting
12390         TImode in the future.
12391         (bpermd): Add power7 bpermd instruction.
12392
12393         * config/rs6000/altivec.h (vec_div): Define if VSX.
12394         (vec_mul): Ditto.
12395         (vec_msub): Ditto.
12396         (vec_nmadd): Ditto.
12397         (vec_nearbyint): Ditto.
12398         (vec_rint): Ditto.
12399         (vec_sqrt): Ditto.
12400         (all predicates): Use the generic builtin function, and not the V4SF
12401         specific function so that the predicates will work with VSX's V2DF.
12402         (vec_all_*): Ditto.
12403         (vec_any_*): Ditto.
12404
12405         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12406         Document new VSX functions and types.
12407
12408         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12409         switches.
12410
12411         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12412         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12413         instead of just vector.
12414
12415 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12416
12417         PR debug/26475
12418         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12419         location for phi arguments.
12420         (rewrite_update_phi_arguments): Find locations for reaching defs.
12421         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12422         Add location to add_phi_arg calls.
12423         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12424         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12425         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12426         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12427         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12428         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12429         * tree-phinodes.c (make_phi_node): Initialize location.
12430         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12431         (add_phi_arg): Add location parameter.
12432         (remove_phi_arg_num): Move location when moving phi argument.
12433         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12434         location.
12435         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12436         slpeel_update_phi_nodes_for_guard1,
12437         slpeel_update_phi_nodes_for_guard2,
12438         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12439         vect_loop_versioning): Set locations.
12440         * tree-parloops.c (create_phi_for_local_result,
12441         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12442         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12443         * tree-vect-loop.c (get_initial_def_for_induction,
12444         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12445         locations.
12446         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12447         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12448         (gimple_phi_arg_set_location): New.  Set locus.
12449         (gimple_phi_arg_has_location): New.  Check for locus.
12450         (redirect_edge_var_map_location): New.  Return locus from var_map.
12451         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12452         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12453         combining PHI arguments.
12454         (cond_store_replacement): Set location.
12455         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12456         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12457         scop_add_exit_phis_edge): Add locations.
12458         * tree-cfgcleanup.c (remove_forwarder_block,
12459         remove_forwarder_block_with_phi): Add locations.
12460         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12461         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12462         locations.
12463         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12464         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12465         flush_pending_stmts): Add source location.
12466         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12467         stack to preserve locations.
12468         * tree-vect-stmts.c (vectorizable_load): Add location.
12469         * tree-inline.c (copy_phis_for_bb): Copy locus.
12470         (setup_one_parameter): Add call locus to inlined parameter stmts.
12471         (initialize_inlined_parameters): Pass in call location as parameter
12472         assignment locus.
12473         (tree_function_versioning): Pass location to setup_one_parameter.
12474         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12475         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12476         copy and edge lists.
12477         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12478         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12479         locus parameter and override the stmt default if provided.
12480         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12481         elim_graph_add_edge, elim_graph_remove_succ_edge,
12482         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12483         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12484         eliminate_phi):  Add locus info in elimination graph for each edge and
12485         value copy.
12486         (insert_backedge_copies): Copy locus if present.
12487         * tree-flow.h (struct _edge_var_map): Add locus field.
12488         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12489         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12490         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12491         locations.
12492         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12493
12494 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12495
12496         PR tree-optimization/40570
12497         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12498         use inlining loops.
12499
12500 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12501
12502         * ssa-loop-manip.c: Include langhooks.h.
12503         (rewrite_phi_with_iv): New.
12504         (rewrite_all_phi_nodes_with_iv): New.
12505         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12506         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12507         * tree-parloops.c (loop_parallel_p): Move out all conditions
12508         except dependency check.
12509         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12510         (gen_parallel_loop): Call canonicalize_loop_ivs without
12511         reduction_list argument.
12512         (build_new_reduction): New.
12513         (gather_scalar_reductions): New.
12514         (try_get_loop_niter): New.
12515         (try_create_reduction_list): New.
12516         (parallleize_loops): Change the parallel conditions check.
12517         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12518         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12519
12520 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12521
12522         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12523         curly braces.
12524         * doc/options.texi (Option properties):  Mention new quoting syntax.
12525
12526 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12527
12528         * config/alpha/alpha.c (alpha_start_function):
12529         Handle VMS_DEBUG_MAIN_POINTER
12530         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12531         * doc/invoke.texi: Document -mdebug-main switch.
12532
12533 2009-07-29  Richard Henderson  <rth@redhat.com>
12534
12535         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12536         (cgraph_create_edge_including_clones): Likewise.
12537         * tree-inline.c (copy_bb): Operate on the correct edges
12538         when updating the callgraph.
12539
12540 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12541
12542         * config/alpha/vms-cc.c: Deleted.
12543         * config/alpha/vms-ld.c: Deleted.
12544         * config/alpha/t-vms64: Moved to config/vms
12545         * config/alpha/vms-crt0-64.c: Moved to config/vms
12546         * config/alpha/vms-crt0.c: Moved to config/vms
12547         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12548         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12549         * config/alpha/xm-vms.h: Moved to config/vms
12550         * config/alpha/x-vms: Moved to config/vms
12551         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12552         config/vms/t-vms.
12553         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12554         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12555         (version): Set.
12556         * config/vms/t-vms64: Moved here from config/alpha
12557         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12558         (argc,argv,envp): Enforce 32bit malloc'ing.
12559         * config/vms/vms-psxcrt0-64.c: Likewise.
12560         * config/vms/vms-crt0.c: Moved here from config/alpha.
12561         * config/vms/vms-psxcrt0.c: Likewise.
12562         * config/vms/vms-crtl-64.h: New file.
12563         * config/vms/vms-crtl.h: New file.
12564         * config/vms/vms.opt: New file.
12565         * config/vms/xm-vms64.h: New file.
12566         * config/vms/xm-vms.h: Moved here from config/alpha.
12567         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12568         Set.
12569         * config/vms/x-vms: Moved here from config/alpha.
12570         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12571         (vms-ld.o, vms-cc.o): Removed.
12572         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12573
12574 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12575
12576         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12577         correct stack (obvious VMS fix).
12578
12579 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12580
12581         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12582         date, version info if VMS_DEBUGGING_INFO defined.
12583         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12584         size, date calculating code moved here.
12585
12586 2009-07-29  Paul Brook  <paul@codesourcery.com>
12587
12588         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12589         do_push/do_pop.
12590
12591 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12592
12593         PR target/40577
12594         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12595         to DImode when generating insq_le insn.
12596
12597 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12598
12599         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12600         New macro set for VMS_DEBUGGGING_INFO.
12601         (AT_string_form): Use it.
12602
12603 2009-07-28  DJ Delorie  <dj@redhat.com>
12604
12605         * config/mep/mep.c (vtext_section): New.
12606         (vftext_section): New.
12607         (ftext_section): New.
12608         (mep_select_section): Add support for functions.
12609         (mep_unique_section): Likewise.
12610         (mep_asm_init_sections): Likewise.
12611         (mep_encode_section_info): Remove it from here.
12612
12613         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
12614
12615 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
12616
12617         * tree.h (TREE_DEPRECATED): Document it is used for types too.
12618         (TYPE_VECTOR_OPAQUE): Use default_def_flag
12619
12620 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12621
12622         * dwarf2out.c (output_file_names): Test new macro
12623         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
12624         (add_comp_dir_attribute): Likewise.
12625
12626 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
12627
12628         * config/i386/mingw-w64.h (LINK_SPEC): Add
12629         separating space between commands.
12630
12631 2009-07-28  Jan Hubicka  <jh@suse.cz>
12632
12633         PR tree-optimization/40759
12634         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
12635         for renaming.
12636
12637 2009-07-27  DJ Delorie  <dj@redhat.com>
12638
12639         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
12640         types are dword-aligned.
12641         (mep_expand_va_start): Likewise.
12642
12643 2009-07-27  Olivier Hainque  <hainque@adacore.com>
12644             Douglas B Rupp  <rupp@gnat.com>
12645
12646         * convert.c (convert_to_pointer): Don't assume the target
12647         pointer type is POINTER_SIZE long. Fetch its precision instead.
12648
12649 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
12650
12651         * system.h (fopen): Undefine if macro.
12652
12653 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
12654
12655         * dwarf2out.c (output_cfi_p): Removed.
12656         (output_cfis): New function.
12657         (output_fde): New function, split from output_call_frame_info.
12658         (output_call_frame_info): Use it.
12659         (dwarf2out_switch_text_section): Use output_cfis.
12660
12661 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12662
12663         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
12664         TARGET_BI_ARCH is specified without enabling SJLJ.
12665         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
12666         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
12667
12668 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
12669
12670         * arm.md (negdi2): Use DImode if forcing a value into a register.
12671
12672 2009-07-26  Ira Rosen  <irar@il.ibm.com>
12673
12674         PR tree-optimization/40801
12675         * tree-vect-stmts.c (vectorizable_call): Get previous copy
12676         of vector operand from the previous copy of vector statement.
12677         Pass the correct definition type value to
12678         vect_get_vec_def_for_stmt_copy().
12679
12680 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12681
12682         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
12683         const char ** conversion.
12684
12685 2009-07-25 David Daney <ddaney@caviumnetworks.com>
12686
12687         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
12688         fancy_abort() if !ENABLE_ASSERT_CHECKING.
12689         (gcc_unreachable): Invoke __builtin_unreachable() if
12690         !ENABLE_ASSERT_CHECKING.
12691
12692 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12693
12694         PR rtl-optimization/40445
12695         * emit-rtl.c (next_nonnote_insn_bb): New function.
12696         * rtl.h (next_nonnote_insn_bb): Declare new function.
12697         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
12698         with no successors that is the successor of the ENTRY_BLOCK.
12699         Continue from the top after removing an empty fallthrough block.
12700         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
12701         of next_nonnote_insn.
12702
12703 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
12704
12705         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
12706
12707 2009-07-25  Martin Jambor  <mjambor@suse.cz>
12708
12709         * c-common.c (c_common_attribute_table): New element for noclone.
12710         (handle_noclone_attribute): New function. Forward-declare.
12711         * tree-inline.c (tree_versionable_function_p): Check for noclone
12712         attribute.
12713         * doc/extend.texi (Labels as Values): Document need for noclone.
12714         (Function Attributes): Document noclone attribute.
12715
12716 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
12717
12718         PR rtl-optimization/34999
12719         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
12720         and dw_fde_switched_cold_to_hot fields.
12721         (output_cfi_p): New function.
12722         (output_call_frame_info): If fde->dw_fde_switched_sections,
12723         output 2 FDEs instead of one with corrupted header.
12724         (dwarf2out_do_cfi_startproc): New function.
12725         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
12726         and fde->dw_fde_switched_cold_to_hot.
12727         (dwarf2out_switch_text_section): Compute
12728         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
12729         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
12730         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
12731         Otherwise, compute fde->dw_fde_switch_cfi.
12732
12733 2009-07-24  Cary Coutant  <ccoutant@google.com>
12734
12735         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
12736
12737 2009-07-24  Cary Coutant  <ccoutant@google.com>
12738
12739         * cfghooks.c (split_block): Copy discriminator to new block.
12740         * tree-cfg.c (assign_discriminator): Check location of last
12741         instruction in block as well as first.
12742
12743 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
12744
12745         * config/i386/linux.c: Use fputs or putc instead of fprintf
12746         where appropriate.
12747         * config/i386/gas.h: Ditto.
12748         * config/i386/x86-64.h: Ditto.
12749         * config/i386/att.h: Ditto.
12750
12751 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12752
12753         * expmed.c (emit_store_flag): Use a recursive call to optimize the
12754         xor case.
12755
12756 2009-07-24  Martin Jambor  <mjambor@suse.cz>
12757
12758         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
12759         (ipa_push_func_to_list_1): Declare.
12760         (ipa_push_func_to_list): New function.
12761
12762         * ipa-prop.c (ipa_push_func_to_list_1): New function.
12763         (ipa_init_func_list): Call ipa_push_func_to_list_1.
12764         (ipa_push_func_to_list): Removed.
12765         (ipa_pop_func_from_list): Clear node_enqueued flag.
12766
12767 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12768
12769         * config/s390/s390.c (override_options): Default
12770         max-unrolled-insns to 100 for z10 tuning.
12771
12772 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
12773
12774         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
12775         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
12776         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
12777         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
12778         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
12779         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
12780         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
12781
12782 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
12783
12784         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
12785         use default set in mingw32.h header.
12786         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
12787         64-bit /mingw/include path.
12788         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
12789         path.
12790
12791 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
12792
12793         PR rtl-optimization/40209
12794         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
12795
12796 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12797
12798         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
12799         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
12800         with the rest of string where appropriate.  Use fputs or putc
12801         instead of fprintf where appropriate.
12802
12803 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
12804             Pat Haugen  <pthaugen@us.ibm.com>
12805             Revital Eres <ERES@il.ibm.com>
12806
12807         * config/rs6000/vector.md: New file.  Move most of the vector
12808         expander support here from altivec.md to allow for the VSX vector
12809         unit in the future.  Add support for secondary_reload patterns.
12810         Rewrite the patterns for vector comparison, and vector comparison
12811         predicate instructions so that the RTL expresses the desired
12812         behavior, instead of using unspec.
12813
12814         * config/rs6000/constraints.md ("f" constraint): Use
12815         rs6000_constraints to hold the precalculated register class.
12816         ("d" constraint): Ditto.
12817         ("wd" constraint): New constraint for VSX.
12818         ("wf" constraint): Ditto.
12819         ("ws" constraint): Ditto.
12820         ("wa" constraint): Ditto.
12821         ("wZ" constraint): Ditto.
12822         ("j" constraint): Ditto.
12823
12824         * config/rs6000/predicates.md (vsx_register_operand): New
12825         predicate for VSX.
12826         (vfloat_operand): New predicate for vector.md.
12827         (vint_operand): Ditto.
12828         (vlogical_operand): Ditto.
12829         (easy_fp_constant): If VSX, 0.0 is an easy constant.
12830         (easy_vector_constant): Add VSX support.
12831         (altivec_indexed_or_indirect_operand): New predicate for
12832         recognizing Altivec style memory references with AND -16.
12833
12834         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
12835         for vector secondary reload support.
12836         (rs6000_vector_reg_class): Delete, replacing it with
12837         rs6000_constraints.
12838         (rs6000_vsx_reg_class): Ditto.
12839         (rs6000_constraints): New array to hold the register classes of
12840         each of the register constraints that can vary at runtime.
12841         (builtin_mode_to_type): New static array for builtin function type
12842         creation.
12843         (builtin_hash_table): New static hash table for builtin function
12844         type creation.
12845         (TARGET_SECONDARY_RELOAD): Define target hook.
12846         (TARGET_IRA_COVER_CLASSES): Ditto.
12847         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
12848         registers are 128 bits if VSX memory reference instructions are used.
12849         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
12850         unit is being used.
12851         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
12852         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
12853         Print several of the scheduling related parameters.
12854         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
12855         rs6000_constraints instead of rs6000_vector_reg_class.  Move
12856         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
12857         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
12858         Altivec.  Add VSX support.  Setup for secondary reload support on
12859         Altivec/VSX registers.
12860         (rs6000_override_options): Make power7 set the scheduling groups
12861         like the power5.  Add support for new debug switches to override
12862         the scheduling defaults.  Temporarily disable -mcpu=power7 from
12863         setting -mvsx.  Add support for debug switches -malways-hint,
12864         -msched-groups, and -malign-branch-targets.
12865         (rs6000_buitlin_conversion): Add support for returning unsigned
12866         vector conversion functions to fix regressions due to stricter
12867         type checking.
12868         (rs6000_builtin_mul_widen_even): Ditto.
12869         (rs6000_builtin_mul_widen_odd): Ditto.
12870         (rs6000_builtin_vec_perm): Ditto.
12871         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
12872         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
12873         to zero a register.
12874         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
12875         generated upstream.
12876         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
12877         VSX types for bit operations.  Changes to accomidate vector.md.
12878         (bdesc_2arg): Ditto.
12879         (bdesc_1arg): Ditto.
12880         (struct builtin_description_predicates): Rewrite predicate
12881         handling so that RTL describes the operation, instead of passing
12882         the instruction to be used as a string argument.
12883         (bdesc_altivec_preds): Ditto.
12884         (altivec_expand_predicate_builtin): Ditto.
12885         (altivec_expand_builtin): Ditto.
12886         (rs6000_expand_ternop_builtin): Use a switch instead of an if
12887         statement for vsldoi support.
12888         (altivec_expand_ld_builtin): Change to use new names from vector.md.
12889         (altivec_expand_st_builtin): Ditto.
12890         (paired_expand_builtin): Whitespace changes.
12891         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
12892         builtin_mode_to_type table for secondary reload.  Call
12893         builtin_function_type to build random builtin functions.
12894         (altivec_init_builtins): Change to use builtin_function_type to
12895         create builtin function types dynamically as we need them.
12896         (builtin_hash_function): New support for hashing the tree types
12897         for builtin function as we need it, rather than trying to build
12898         all of the trees that we need.  Add initial preliminary VSX support.
12899         (builtin_function_type): Ditto.
12900         (builtin_function_eq): Ditto.
12901         (builtin_hash_struct): Ditto.
12902         (rs6000_init_builtins): Ditto.
12903         (rs6000_common_init_builtins): Ditto.
12904         (altivec_init_builtins): Ditto.
12905         (rs6000_common_init_builtins): Ditto.
12906         (enum reload_reg_type): New enum for simplifing reg classes.
12907         (rs6000_reload_register_type): Simplify register classes into GPR,
12908         Vector, and other registers.  Altivec and VSX addresses in reload.
12909         (rs6000_secondary_reload_inner): Ditto.
12910         (rs6000_ira_cover_classes): New target hook, that returns the
12911         appropriate cover classes, based on -mvsx being used or not.
12912         (rs6000_secondary_reload_class): Add VSX support.
12913         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
12914         (get_vsel_insn): Ditto.
12915         (rs6000_emit_vector_compare): Rewrite vector conditional support
12916         so that where we can, we use RTL operators, instead of blindly use
12917         UNSPEC.
12918         (rs6000_emit_vector_select): Ditto.
12919         (rs6000_emit_vector_cond_expr): Ditto.
12920         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
12921         (create_TOC_reference): Add -mdebug=addr support.
12922         (emit_frame_save): VSX loads/stores need register indexed addressing.
12923
12924         * config/rs6000/rs6000.md: Include vector.md.
12925
12926         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
12927
12928         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
12929         support for V2DI, V2DF in logical, permute, select operations.
12930
12931         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
12932         switch for vsx/power7.
12933         (-mvsx-scalar-memory): Ditto.
12934         (-mvsx-align-128): Ditto.
12935         (-mallow-movmisalign): Ditto.
12936         (-mallow-df-permute): Ditto.
12937         (-msched-groups): Ditto.
12938         (-malways-hint): Ditto.
12939         (-malign-branch-targets): Ditto.
12940
12941         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
12942         hook instead.
12943         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
12944         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
12945         (rs6000_vector_reg_class): Delete.
12946         (rs6000_vsx_reg_class): Ditto.
12947         (enum rs6000_reg_class_enum): New enum for the constraints that
12948         vary based on target switches.
12949         (rs6000_constraints): New array to hold the register class for all
12950         of the register constraints that vary based on the switches used.
12951         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
12952         (enum rs6000_builtins): Add unsigned varients for the builtin
12953         declarations returned by target hooks for expanding multiplies,
12954         select, and permute operations.  Add VSX builtins.
12955         (enum rs6000_builtin_type_index): Add entries for VSX.
12956         (V2DI_type_node): Ditto.
12957         (V2DF_type_node): Ditto.
12958         (unsigned_V2DI_type_node): Ditto.
12959         (bool_long_type_node): Ditto.
12960         (intDI_type_internal_node): Ditto.
12961         (uintDI_type_internal_node): Ditto.
12962         (double_type_internal_node): Ditto.
12963
12964         * config/rs6000/altivec.md (whole file): Move all expanders to
12965         vector.md from altivec.md.  Rename insn matching functions to be
12966         altivec_foo.
12967         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
12968         (altivec_vcmp*): Ditto.
12969         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
12970         (VM): New iterator for moves that includes the VSX types.
12971         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
12972         (altivec_vperm_<mode>_uns): New, for unsigned types.
12973         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
12974         (altivec_eq<mode>): Ditto.
12975         (altivec_gt<mode>): Ditto.
12976         (altivec_gtu<mode>): Ditto.
12977         (altivec_eqv4sf): Ditto.
12978         (altivec_gev4sf): Ditto.
12979         (altivec_gtv4sf): Ditto.
12980         (altivec_vcmpbfp_p): Ditto.
12981
12982 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
12983
12984         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
12985         unsigned HWI.
12986
12987 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
12988
12989         PR target/40832
12990         * config/i386/i386.c (output_387_ffreep): Rewrite to use
12991         ASM_SHORT instead of .word.
12992         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
12993         instead of .word in asm template.
12994
12995 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
12996
12997         PR target/37488
12998         * ira-lives.c (bb_has_abnormal_call_pred): New function.
12999         (process_bb_node_lives): Use it.
13000
13001         * ira.c (setup_cover_and_important_classes): Don't setup
13002         ira_important_class_nums.  Add cover classes to the end of
13003         important classes.
13004         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
13005         New.
13006         (find_reg_class_closure): Use reorder_important_classes.
13007
13008         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
13009
13010         * config/i386/i386.c (i386_ira_cover_classes): New function.
13011         (TARGET_IRA_COVER_CLASSES): Redefine.
13012
13013         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
13014         importance of order of cover classes in the array.
13015
13016 2009-07-22  Diego Novillo  <dnovillo@google.com>
13017
13018         * tree-pass.h (TDF_EH): Define.
13019         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
13020         contains TDF_EH, print the EH region number holding GS.
13021         * tree-dump.c (dump_options): Add "eh".
13022         * doc/invoke.texi: Document it.
13023
13024 2009-07-22  Doug Kwan  <dougkwan@google.com>
13025
13026         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
13027
13028 2009-07-22  Michael Matz  <matz@suse.de>
13029
13030         PR tree-optimization/35229
13031         PR tree-optimization/39300
13032
13033         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
13034         (inhibit_phi_insertion): New function.
13035         (insert_into_preds_of_block): Call it for REFERENCEs.
13036         (init_pre): Initialize and finalize scalar evolutions.
13037         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
13038
13039 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
13040
13041         * config/i386/predicates.md (zero_extended_scalar_load_operand):
13042         Use CONST_VECTOR_NUNITS to determine number of elements.
13043
13044 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
13045
13046         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
13047         (U, W): Constraints are now deprecated and will be removed if we
13048         run out of letters.
13049         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
13050         the file.
13051         ("prefetch"): Add the stcmh instruction for prefetching.
13052         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
13053         changes.
13054         (s390_short_displacement): Return always true if compiling for
13055         machines not providing the long displacement facility.
13056         (s390_mem_constraint): Support the new constraint letter Z.
13057         (s390_check_qrst_address): New function.
13058
13059 2009-07-21  DJ Delorie  <dj@redhat.com>
13060
13061         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
13062         alone too.
13063
13064 2009-07-21  Jason Merrill  <jason@redhat.com>
13065
13066         * c-common.c (max_tinst_depth): Increase default to 1024.
13067
13068 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13069
13070         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
13071         (vec_unpacku_float_lo_v4si): Ditto.
13072
13073 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13074
13075         PR target/40811
13076         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
13077         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
13078         (builtin_description): Add __builtin_ia32_cvtudq2ps.
13079         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
13080
13081 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
13082
13083         PR tree-optimization/40813
13084         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
13085         it.
13086
13087 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13088
13089         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
13090         with a NOP_EXPR if needed.
13091
13092 2009-07-21  Paul Brook <paul@codesourcery.com>
13093
13094         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
13095         Terminate debug dump with newline.
13096
13097 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13098
13099         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
13100         Cast "1" to unsigned HOST_WIDE_INT.
13101         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
13102         deposit length to the maximum length - lsb.  Extend length if
13103         HOST_BITS_PER_WIDE_INT is 32.
13104
13105 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
13106
13107         * cgraph.h (constant_pool_htab): New function.
13108         (constant_descriptor_tree): Move from varasm.c.
13109         * varasm.c (constant_pool_htab): New function.
13110         (constant_descriptor_tree): Move to cgraph.h.
13111
13112 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
13113
13114         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
13115
13116 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
13117
13118         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
13119         $(VARRAY_H).
13120
13121 2009-07-20  Xinliang David Li  <davidxl@google.com>
13122
13123         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
13124
13125 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
13126
13127         * config/mips/mips.md (move_type): Add arith.
13128         (type): Handle arith.
13129         (zero_extendsidi2): Rename this into ...
13130         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
13131         (zero_extendsidi2): New expander.
13132         (*zero_extendsidi2_dext): New pattern.
13133
13134 2009-07-20  Nick Clifton  <nickc@redhat.com>
13135
13136         * config.gcc (mips64-*-*): Add definition of tm_defines in order
13137         to set MIPS_ABI_DEFAULT.
13138         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
13139
13140 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
13141
13142         * tree-object-size.c (addr_object_size): Handle unions with
13143         array in it as last field of structs in __bos (, 1) as __bos (, 0).
13144
13145         PR tree-optimization/40792
13146         * tree.c (build_function_type_skip_args): Remove bogus assert.
13147
13148 2009-07-20  Jan Hubicka  <jh@suse.cz>
13149             Martin Jambor  <mjambor@suse.cz>
13150
13151         * cgraph.h (combined_args_to_skip): New field.
13152         * cgraph.c (cgraph_create_virtual_clone): Properly handle
13153         combined_args_to_skip and args_to_skip.
13154         * tree-inline.c (update_clone_info): New function.
13155         (tree_function_versioning): Call update_clone_info.
13156         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
13157         functions.
13158         (cgraph_materialize_all_clones): More extensive dumping, working
13159         with combined_args_to_skip rather than args_to_skip.
13160
13161 2009-07-20  Ira Rosen  <irar@il.ibm.com>
13162
13163         * tree-vectorizer.h (vectorizable_condition): Add parameters.
13164         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
13165         (get_initial_def_for_reduction): Likewise.
13166         (vectorizable_reduction): Skip the check of first operand in case
13167         of COND_EXPR. Add check that it is outer loop vectorization if
13168         nested cycle was detected. Call vectorizable_condition() for
13169         COND_EXPR. If reduction epilogue cannot be created do not fail for
13170         nested cycles (if it is not double reduction). Assert that there
13171         is only one type in the loop in case of COND_EXPR. Call
13172         vectorizable_condition() to vectorize COND_EXPR.
13173         * tree-vect-stmts.c (vectorizable_condition): Update comment.
13174         Add parameters. Allow nested cycles if called from
13175         vectorizable_reduction(). Use reduction vector variable if provided.
13176         (vect_analyze_stmt): Call vectorizable_reduction() before
13177         vectorizable_condition().
13178         (vect_transform_stmt): Update call to vectorizable_condition().
13179
13180 2009-07-20  Christian Bruel  <christian.bruel@st.com>
13181
13182         * config/sh/sh.opt (-mfmovd): Resurrect and document.
13183         * doc/invoke.texi (-mfmovd): Likewise.
13184         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13185
13186 2009-07-20  Jan Hubicka  <jh@suse.cz>
13187
13188         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13189         when handling SSA name.
13190
13191 2009-07-19  Jan Hubicka  <jh@suse.cz>
13192
13193         PR tree-optimization/40676
13194         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13195         virtual PHIs in empty BBs.
13196
13197 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13198
13199         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13200         re-expanded the compound use gen_lowpart instead to convert to the
13201         desired mode.
13202
13203 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13204
13205         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13206         OUTER_CONST arguments.
13207         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13208         the new wider mode will be masked off.
13209         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13210
13211 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13212
13213         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13214         high-order bits are zero.
13215
13216 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13217
13218         * combine.c (simplify_shift_const_1): Split code to determine
13219         shift_mode into ...
13220         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13221         new bits shifted in are identical to the old sign bit.
13222
13223 2009-07-18  Richard Guenther  <rguenther@suse.de>
13224
13225         PR c/40787
13226         * gimplify.c (gimplify_call_expr): Reject code using results from
13227         functions returning void.
13228
13229 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13230
13231         * doc/md.texi: Document the new PowerPC "es" constraint.
13232         Document that "m" can include automodified addresses on this target,
13233         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13234         to suggest "es" as well as "m".
13235         * config/rs6000/constraints.md (es): New memory constraint.
13236         (Q, Z): Update strings to match new documentation.
13237
13238 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13239
13240         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13241         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13242         * config/rs6000/predicates.md (volatile_mem_operand): Use
13243         offsettable_nonstrict_memref_p.
13244         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13245         (*floatunssidf2_internal): Likewise.
13246         (*fix_truncdfsi2_internal): Likewise.
13247         (*fix_trunctfsi2_internal): Likewise.
13248
13249 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13250
13251         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13252         atmega32u2 devices.
13253         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13254
13255 2009-07-17  Richard Guenther  <rguenther@suse.de>
13256
13257         PR c/40401
13258         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13259         (pass_warn_unused_result): Likewise.
13260         (TODO_set_props): Remove.
13261         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13262         run as a pass.
13263         (pass_diagnose_omp_blocks): Define.
13264         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13265         (c_gimple_diagnostics_recursively): Remove.
13266         (finish_function): Do not call it.
13267         (c_write_global_declarations): Continue after errors.
13268         Finalize the CU here.
13269         * c-gimplify.c (c_genericize): Do not gimplify here.
13270         * c-common.c (c_warn_unused_result): Move ...
13271         * tree-cfg.c (do_warn_unused_result): ... here.
13272         (run_warn_unused_result): New function.
13273         (gate_warn_unused_result): New function.
13274         (pass_warn_unused_result): New pass.
13275         * c-common.h (c_warn_unused_result): Remove.
13276         * flags.h (flag_warn_unused_result): Declare.
13277         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13278         * opts.c (flag_warn_unused_result): Initialize to false.
13279         * toplev.c (compile_file): Add comment.
13280         * omp-low.c (create_omp_child_function): Do not register
13281         the function with the frontend.
13282         (diagnose_omp_structured_block_errors): Prepare to be
13283         called as optimization pass.
13284         (gate_diagnose_omp_blocks): New function.
13285         (pass_diagnose_omp_blocks): New pass.
13286         * cgraph.h (cgraph_optimize): Remove.
13287         (cgraph_analyze_function): Likewise.
13288         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13289         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13290         before their parents here.
13291         (cgraph_finalize_function): Not here.
13292         (cgraph_analyze_function): Gimplify functions here.
13293         (cgraph_finalize_compilation_unit): Continue after errors.
13294         Optimize the callgraph from here.
13295         (cgraph_optimize): Make static.
13296         * langhooks.c (write_global_declarations): Finalize the CU.
13297         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13298         (gimplify_function_tree): Assert we gimplify only once.
13299         Set PROP_gimple_any property.
13300         * tree-nested.c (gimplify_all_functions): New function.
13301         (lower_nested_functions): Gimplify all nested functions.
13302         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13303         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13304         and pass_diagnose_omp_blocks after gimplification.  Do not
13305         set TODO_set_props on all_lowering_passes.
13306         (execute_one_pass): Do not handle TODO_set_props.
13307         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13308         (gimplify.o): Add tree-pass.h dependency.
13309         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13310         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13311         (unsave_r): Likewise.
13312         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13313         temporary variable.
13314
13315 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13316
13317         * doc/service.texi (Service): Restore previously removed link,
13318         which isn't broken after all.
13319
13320 2009-07-17  Richard Guenther  <rguenther@suse.de>
13321
13322         PR tree-optimization/40321
13323         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13324         PHI nodes to the maximal set.
13325         (make_values_for_phi): Add PHI arguments to the maximal set.
13326         (execute_pre): Dump PHI_GEN and the maximal set.
13327
13328 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13329
13330         PR c++/40780
13331         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13332         VIEW_CONVERT_EXPR.
13333
13334 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13335
13336         * doc/extend.texi (Nested Functions): Replace broken link with
13337         textual reference.
13338         * doc/service.texi (Service): Remove broken link.
13339
13340 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13341
13342         PR bootstrap/40781
13343         * builtins.c (expand_builtin_memcmp): Use loc instead of
13344         EXPR_LOCATION (exp).
13345         (expand_builtin_strncmp): Likewise.
13346
13347 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13348             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13349
13350         PR 40435
13351         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13352         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13353         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13354         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13355         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13356         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13357         tree-inline.c, c-common.c, c-common.h, gimple.c,
13358         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13359         convert.c: Add location argument to fold_{unary,binary,ternary},
13360         fold_build[123], build_call_expr, build_size_arg,
13361         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13362         fold_build1_initializer, fold_build2_initializer,
13363         fold_build3_initializer, fold_build_call_array,
13364         fold_build_call_array_initializer, fold_single_bit_test,
13365         omit_one_operand, omit_two_operands, invert_truthvalue,
13366         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13367         combine_comparisons, fold_builtin_*, fold_call_expr,
13368         build_range_check, maybe_fold_offset_to_address, round_up,
13369         round_down.
13370
13371 2009-07-16  Jason Merrill  <jason@redhat.com>
13372
13373         PR libstdc++/37907
13374         * c-common.c (c_common_reswords): Add __is_standard_layout
13375         and __is_trivial.
13376         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13377         * doc/implement-cxx.texi: New.
13378         * doc/gcc.texi: Include it.
13379
13380 2009-07-16  DJ Delorie  <dj@redhat.com>
13381
13382         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13383         compares that may be indirectly affected by previous instructions.
13384
13385 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13386
13387         * builtins.c (do_mpc_arg2): New.
13388         (fold_builtin_2): Fold builtin cpow.
13389         * real.h (HAVE_mpc_pow): New.
13390
13391 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13392
13393         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13394         comparison to skip unprofitable schedule
13395
13396 2009-07-16  Simon Baldwin  <simonb@google.com>
13397
13398         * gcc.c (option_map): New flag -no-canonical-prefixes.
13399         * (display_help): Print help text for new flag.
13400         * (process_command): Move options translation and language specifics
13401         and handle new flag early.  Use it to set a function pointer to a
13402         prefix builder.  Replace make_relative_prefix calls with calls to
13403         the function pointed to.  Ignore new flag in regular options handling.
13404         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13405
13406 2009-07-15  DJ Delorie  <dj@redhat.com>
13407
13408         * config/mep/mep.md (sibcall_internal): Change register to avoid
13409         argument registers.
13410         (sibcall_value_internal): Likewise.
13411
13412 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13413
13414         PR rtl-optimization/40710
13415         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13416
13417 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13418
13419         * config/mips/mips.md (*extenddi_truncate<mode>,
13420         *extendsi_truncate<mode>): Change type attribute to move_type
13421         with shift_shift.  Split out code handling exts from here ...
13422         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13423         pattern.
13424         (*extendhi_truncateqi): Change type attribute to move_type with
13425         shift_shift.  Split out code handling exts from here ...
13426         (*extendhi_truncateqi_exts): ... to this new pattern.
13427
13428 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13429
13430         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13431         instead of "and" with inverted sign bit mask value.  Use
13432         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13433         Allocate registers only for operand 4 and operand 5.
13434
13435 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13436
13437         PR middle-end/40747
13438         * fold-const.c (fold_cond_expr_with_comparison): When folding
13439         < and <= to MIN, make sure the MIN uses the same type as the
13440         comparison's operands.
13441
13442 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13443
13444         * arm.md (ior_xor): New code iterator.
13445         (split for ior/xor with shift and zero-extend): New split pattern.
13446         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13447
13448 2009-07-15  Richard Guenther  <rguenther@suse.de>
13449
13450         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13451         offset member.
13452
13453 2009-07-15  Richard Guenther  <rguenther@suse.de>
13454
13455         PR middle-end/40753
13456         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13457
13458 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13459
13460         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13461         handle 2.6.30 kernel.
13462
13463 2009-07-15  DJ Delorie  <dj@redhat.com>
13464
13465         * config/mep/mep.md (sibcall_internal): Change register to allow
13466         for 24-bit addresses.
13467         (sibcall_value_internal): Likewise.
13468
13469 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13470
13471         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13472         that are enabled/disabled by the flags introduced by a previous patch.
13473
13474 2009-07-14  DJ Delorie  <dj@redhat.com>
13475
13476         * config/mep/mep.md (sibcall_internal): Include non-toggling
13477         non-jmp case.
13478         (sibcall_value_internal): Likewise.
13479
13480 2009-07-14  Taras Glek  <tglek@mozilla.com>
13481             Rafael Espindola  <espindola@google.com>
13482
13483         * doc/sourcebuild.texi: Document install-plugin target.
13484         * configure.ac: Added install-plugin target to language makefiles.
13485         * configure: Regenerate.
13486         * Makefile.in (install-plugin): Install more headers,
13487         depend on lang.install-plugin.
13488
13489 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13490
13491         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13492         translation.
13493
13494 2009-07-14  DJ Delorie  <dj@redhat.com>
13495
13496         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13497         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13498         * config/mep/mep.md (sibcall_internal): Change test from
13499         mep_vliw_mode_match to mep_vliw_jmp_match.
13500         (sibcall_value_internal): Likewise.
13501
13502 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13503
13504         * config/i386/sse.md (copysign<mode>3): New expander.
13505         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13506         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13507         Use ix86_build_const_vector.
13508         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13509         IX86_BUILTIN_CPYSGNPD.
13510         (builtin_description): Add __builtin_ia32_copysignps and
13511         __builtin_ia32_copysignpd.
13512         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13513         and BUILT_IN_COPYSIGNF.
13514
13515 2009-07-13  Jason Merrill  <jason@redhat.com>
13516
13517         * builtins.c (can_trust_pointer_alignment): New fn.
13518         (get_pointer_alignment): Factor it out from here.
13519         * tree.h: Declare it.
13520
13521 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13522
13523         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13524         RTX_AUTOINC class.
13525
13526 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13527
13528         PR debug/40705
13529         PR c++/403057
13530         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13531
13532 2009-07-14  Richard Guenther  <rguenther@suse.de>
13533             Andrey Belevantsev <abel@ispras.ru>
13534
13535         PR middle-end/40745
13536         * cfgexpand.c (partition_stack_vars): Do not bother to update
13537         alias information when not optimizing.
13538
13539 2009-07-14  Richard Guenther  <rguenther@suse.de>
13540             Andrey Belevantsev <abel@ispras.ru>
13541
13542         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13543         (pt_solution_set): Likewise.
13544         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13545         * tree-ssa-structalias.c (pt_solution_set): New function.
13546         * final.c (rest_of_clean_state): Free SSA data structures.
13547         * print-rtl.c (print_decl_name): Remove.
13548         (print_mem_expr): Implement in terms of print_generic_expr.
13549         * alias.c (ao_ref_from_mem): New function.
13550         (rtx_refs_may_alias_p): Likewise.
13551         (true_dependence): Query alias-export info.
13552         (canon_true_dependence): Likewise.
13553         (write_dependence_p): Likewise.
13554         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13555         size unknown.
13556         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13557         (mem_expr_equal_p): Use operand_equal_p.
13558         (set_mem_attributes_minus_bitpos): Do not use
13559         component_ref_for_mem_expr.
13560         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13561         (update_alias_info_with_stack_vars): Likewise.
13562         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13563         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13564         explicitly nor clear stmt operands.
13565         Free the decl-to-pointer map.
13566         * tree-optimize.c (execute_free_datastructures): Do not free
13567         SSA data structures here.
13568         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13569         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13570         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13571         dependencies.
13572         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13573
13574 2009-07-13  DJ Delorie  <dj@redhat.com>
13575
13576         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13577         unrolling at the right iteration count.
13578
13579         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13580         calculations.
13581
13582 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13583
13584         * haifa-sched.c (rank_for_schedule): Introduced flags to
13585         enable/disable individual scheduling heuristics.
13586         * common.opt: Introduced flags to enable/disable individual
13587         heuristics in the scheduler.
13588         * doc/invoke.texi: Introduced flags to enable/disable individual
13589         heuristics in the scheduler.
13590
13591 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13592
13593         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13594         config/i386/mingw-tls.c.
13595         * config/i386/mingw-tls.c: Removed.
13596
13597 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13598
13599         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13600         checks access only relevant statements.
13601         (vectorizable_reduction): Likewise.
13602
13603 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13604
13605         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13606         just for 32-bit case.
13607
13608 2009-07-12  Jan Hubicka  <jh@suse.cz>
13609
13610         PR tree-optimization/40585
13611         * except.c (expand_resx_expr): When there already is resume
13612         instruction, produce linked list.
13613         (build_post_landing_pads): Assert that resume is empty.
13614         (connect_post_landing_pads): Handle resume lists.
13615         (dump_eh_tree): Dump resume list.
13616
13617 2009-07-12  Ira Rosen  <irar@il.ibm.com>
13618
13619         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13620         with additional argument.
13621         * tree-vectorizer.h (enum vect_def_type): Add
13622         vect_double_reduction_def.
13623         (vect_is_simple_reduction): Add argument.
13624         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
13625         indentation.
13626         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
13627         vect_is_simple_reduction with additional argument.
13628         (vect_analyze_loop_operations): Handle exit phi nodes in case of
13629         double reduction.
13630         (reduction_code_for_scalar_code): Handle additional codes by
13631         returning ERROR_MARK for them. Fix comment and indentation.
13632         (vect_is_simple_reduction): Fix comment, add argument to specify
13633         double reduction. Detect double reduction.
13634         (get_initial_def_for_induction): Fix indentation.
13635         (get_initial_def_for_reduction): Fix comment and indentation.
13636         Handle double reduction. Create initial definitions that do not
13637         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
13638         (vect_create_epilog_for_reduction): Fix comment, add argument to
13639         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
13640         epilogue result extraction. Create double reduction phi node and
13641         replace relevant uses.
13642         (vectorizable_reduction): Call vect_is_simple_reduction with
13643         additional argument. Fix indentation. Update epilogue code treatment
13644         according to the changes in reduction_code_for_scalar_code. Check
13645         for double reduction. Call vect_create_epilog_for_reduction with
13646         additional argument.
13647         * tree-vect-stmts.c (process_use): Handle double reduction, update
13648         documentation.
13649         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
13650         (vect_get_vec_def_for_operand): Likewise.
13651
13652 2009-07-12  Danny Smith  <dansmister@gmail.com>
13653
13654         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
13655         dllexport if !TREE_PUBLIC.
13656         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
13657
13658 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
13659
13660         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
13661         (avr_extra_arch_macro) Remove declatation.
13662         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
13663         (avr_extra_arch_macro) Declare as static.
13664         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
13665
13666 2009-07-11  Jan Hubicka  <jh@suse.cz>
13667
13668         PR middle-end/48388
13669         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
13670
13671 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
13672
13673         PR debug/40713
13674         * dwarf2out.c (dw_fde_struct): Add in_std_section and
13675         cold_in_std_section bits.
13676         (dwarf2out_begin_prologue): Initialize them.
13677         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
13678         if already covered by text_section or cold_text_section range.
13679
13680         PR rtl-optimization/40667
13681         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
13682         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
13683         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
13684         * config/i386/i386.c (ix86_minimum_alignment): New function.
13685         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
13686         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
13687         * emit-rtl.c (gen_reg_rtx): Likewise.
13688         * function.c (assign_parms): Likewise.  If nominal_type needs
13689         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
13690         rather than passed_type's alignment.
13691
13692         PR target/40668
13693         * function.c (assign_parm_setup_stack): Adjust
13694         MEM_OFFSET (data->stack_parm) if promoted_mode is different
13695         from nominal_mode on big endian.
13696
13697 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
13698
13699         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
13700
13701 2009-07-10  DJ Delorie  <dj@redhat.com>
13702
13703         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
13704
13705 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
13706
13707         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
13708         attribute.
13709         (thumb2_cbnz): Likewise.
13710
13711 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
13712
13713         PR target/39079
13714         * config.gcc (supported_defaults): Add synci.
13715         (with_synci): Add validation.
13716         (all_defaults): Add synci.
13717         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
13718         ISA_HAS_SYNCI.
13719         (synci): Same.
13720         * config/mips/mips.opt (msynci): New option.
13721         * config/mips/mips.c (mips_override_options): Warn on use of
13722         -msynci for targets that do now support it.
13723         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
13724         msynci.
13725         * gcc/doc/invoke.texi (-msynci): Document the new option.
13726         * doc/install.texi (--with-synci): Document the new option.
13727
13728 2009-07-10  Richard Guenther  <rguenther@suse.de>
13729
13730         PR tree-optimization/40496
13731         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
13732         the PHI result with a compatible type.
13733
13734 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13735
13736         PR 25509
13737         PR 40614
13738         * c.opt (Wunused-result): New.
13739         * doc/invoke.texi: Document it.
13740         * c-common.c (c_warn_unused_result): Use it.
13741
13742 2009-07-09  DJ Delorie  <dj@redhat.com>
13743
13744         * targhooks.c (default_target_can_inline_p): Rename from
13745         default_target_option_can_inline_p.
13746         * targhooks.h (default_target_can_inline_p): Likewise.
13747         * target-def.h (TARGET_CAN_INLINE_P): Rename from
13748         TARGET_OPTION_CAN_INLINE_P.
13749         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
13750         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
13751         (mep_target_can_inline_p): Rename from
13752         mep_target_option_can_inline_p.
13753
13754         PR target/40626
13755         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
13756         registers used to pass vectors.
13757
13758         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
13759
13760 2009-07-09  Tom Tromey  <tromey@redhat.com>
13761
13762         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
13763         * config/mmix/mmix.c: Include dwarf2.h.
13764         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
13765         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
13766         * config/sh/sh.c: Include dwarf2.h.
13767         * config/i386/i386.c: Include dwarf2.h.
13768         * Makefile.in (DWARF2_H): Remove 'elf'.
13769         * except.c: Include dwarf2.h.
13770         * unwind-dw2.c: Include dwarf2.h.
13771         * dwarf2out.c: Include dwarf2.h.
13772         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
13773         * unwind-dw2-fde.c: Include dwarf2.h.
13774         * dwarf2asm.c: Include dwarf2.h.
13775
13776 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13777
13778         * haifa-sched.c (insn_finishes_cycle_p): New static function.
13779         (max_issue): Use it.
13780         * sched-int.h (struct sched_info: insn_finishes_block_p): New
13781         scheduler hook.
13782         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
13783         (region_sched_info): Update.
13784         * sched-ebb.c (ebb_sched_info): Update.
13785         * modulo-sched.c (sms_sched_info): Update.
13786         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
13787
13788 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13789
13790         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
13791
13792 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
13793
13794         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
13795
13796 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
13797
13798         PR middle-end/40692
13799         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
13800         arg1 with arg01 if arg1 is already INTEGER_CST.
13801
13802 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13803
13804         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
13805         Transform (and (truncate)) into (truncate (and)).
13806
13807 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
13808
13809         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
13810         creating LHS paradoxical subregs.  Fix surrounding returns to
13811         use NULL_RTX rather than 0.
13812
13813 2009-07-08  DJ Delorie  <dj@redhat.com>
13814
13815         * config/mep/mep.c (mep_option_can_inline_p): New.
13816         (TARGET_OPTION_CAN_INLINE_P): Define.
13817
13818 2009-07-08  Mark Wielaard  <mjw@redhat.com>
13819
13820         PR debug/40659
13821         * dwarf2out.c (add_data_member_location_attribute): When we have
13822         only a constant offset don't emit a new location description using
13823         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
13824         dwarf_version > 2.
13825
13826 2009-07-08  Richard Henderson  <rth@redhat.com>
13827
13828         PR target/38900
13829         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
13830         (enum reg_class): Add CLOBBERED_REGS.
13831         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
13832         * config/i386/i386.c (ix86_conditional_register_usage): Moved
13833         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
13834         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
13835         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
13836         force 64-bit sibcalls into R11.
13837         * config/i386/constraints.md (U): New constraint.
13838         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
13839         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
13840         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
13841
13842 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
13843
13844         * basic-block.h (dump_regset, debug_regset): Remove duplicate
13845         prototypes.
13846         * c-objc-common.h (c_initialize_diagnostics): Ditto.
13847         * ebitmap.h (dump_ebitmap): Ditto.
13848         * optabs.h (optab_libfunc): Ditto.
13849         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
13850         * tree-flow.h (vect_can_force_dr_alignment_p,
13851         get_vectype_for_scalar_type): Ditto.
13852         (vectorize_loops): Move prototype to ...
13853         * tree-vectorizer.h: ... here. Also, adjust comment.
13854         (vect_set_verbosity_level): Remove duplicate prototype.
13855         * tree-ssa-loop.c: Include tree-vectorizer.h.
13856         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
13857
13858 2009-07-08  Nick Clifton  <nickc@redhat.com>
13859
13860         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
13861         forward slash.
13862
13863 2009-07-08  DJ Delorie  <dj@redhat.com>
13864
13865         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
13866         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
13867         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
13868         written to.
13869         * config/mep/intrinsics.md: Regenerated.
13870         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
13871         registers when asm() or calls are detected.
13872
13873 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13874
13875         PR c++/31246
13876         * gimplify.c (gimplify_expr): Propagate no_warning flag when
13877         gimplifying.
13878         * gimple (gimple_build_call_from_tree): Likewise.
13879         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
13880         no_warning flag before warning.
13881
13882 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13883
13884         * tree.c (set_expr_locus): Remove.
13885         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
13886         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
13887         EXPR_LOCATION.
13888         * gimplify.c (internal_get_tmp_var): Likewise.
13889         (gimplify_call_expr): Likewise.
13890         (gimplify_one_sizepos): Likewise.
13891
13892 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
13893
13894         PR debug/40666
13895         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
13896         to variables for debugging purposes.
13897
13898 2009-06-23  Mark Loeser  <mark@halcy0n.com>
13899
13900         PR build/40010
13901         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
13902
13903 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13904
13905         * pretty-print.c (pp_base_format): Remove %J.
13906         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13907         gcc_cxxdiag_char_table): Likewise.
13908         (init_dynamic_diag_info): Likewise.
13909
13910 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13911
13912         * pretty-print.c (pp_base_format): Remove %H.
13913         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
13914         gcc_cxxdiag_char_table): Likewise.
13915         (init_dynamic_diag_info): Likewise.
13916         * config/mep/mep.c (mep_select_section): Likewise.
13917
13918 2009-07-07  Duncan Sands  <baldrick@free.fr>
13919
13920         * final.c (pass_clean_state): Give the pass a name.
13921         * passes.c (pass_rest_of_compilation): Likewise.
13922         * tree-optimize.c (pass_all_optimizations): Likewise.
13923
13924 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
13925
13926         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
13927         an extra 'decl' for error_at.
13928
13929 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
13930
13931         PR middle-end/40669
13932         * tree-tailcall.c (adjust_return_value_with_ops,
13933         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
13934         if it has complex or vector type.
13935
13936 2009-07-07  Olivier Hainque  <hainque@adacore.com>
13937
13938         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
13939         pthread symbols.
13940
13941 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
13942
13943         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
13944
13945 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13946
13947         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
13948         * c-decl.c: Likewise.
13949         * function.c: Likewise.
13950         * varasm.c: Likewise.
13951         * tree-ssa.c: Likewise.
13952         * c-common.c: Likewise.
13953         * tree-cfg.c: Likewise.
13954         * config/spu/spu.c: Likewise.
13955         * config/ia64/ia64.c: Likewise.
13956         * config/v850/v850.c: Likewise.
13957
13958 2009-07-06  DJ Delorie  <dj@redhat.com>
13959
13960         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
13961         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
13962         unspecified accesses to control registers.
13963         * config/mep/intrinsics.md: Regenerate.
13964         * config/mep/intrinsics.h: Regenerate.
13965         * config/mep/mep-intrin.h: Regenerate.
13966
13967 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13968
13969         * c-lex.c: Replace %H by an explicit location. Update all calls.
13970         * c-common.c: Likewise.
13971         * c-decl.c: Likewise.
13972         * c-typeck.c: Likewise.
13973         * fold-const.c: Likewise.
13974         * gimplify.c: Likewise.
13975         * stmt.c: Likewise.
13976         * tree-cfg.c: Likewise.
13977         * tree-ssa-loop-niter.c: Likewise.
13978         * tree-vrp.c: Likewise.
13979         * value-prof.c: Likewise.
13980
13981 2009-07-06  Diego Novillo  <dnovillo@google.com>
13982
13983         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
13984         if it has one.  Handle cases where VAR does not have an
13985         annotation or cfun is NULL.
13986
13987 2009-07-06  Diego Novillo  <dnovillo@google.com>
13988
13989         * tree.c: Include debug.h.
13990         (initialize_tree_contains_struct): New.
13991         (init_ttree): Call it.
13992         (tree_node_structure_for_code): Factor out of ...
13993         (tree_node_structure): ... here.
13994         * treestruct.def (TS_PHI_NODE): Remove.
13995         (TS_GIMPLE_STATEMENT): Remove.
13996
13997 2009-07-06  Diego Novillo  <dnovillo@google.com>
13998
13999         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
14000         (debug_tree_chain): Handle cycles.
14001
14002 2009-07-06  Nick Clifton  <nickc@redhat.com>
14003             DJ Delorie  <dj@redhat.com>
14004
14005         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14006         __FMOVD_ENABLED__ is defined.
14007         * config/sh/sh.h
14008         (TARGET_FMOVD): Provide a default definition.
14009         (MASK_FMOVD): Likewise.
14010         (TARGET_CPU_CPP_BUILTINS): Define
14011         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14012         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14013         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
14014         (split for DF load from memory into register): Also handle
14015         MEMs which consist of REG+DISP addressing.
14016         (split for DF store from register to memory): Likewise.
14017         (movsf_ie): Always use single fp_mode.
14018         * config/sh/sh.c (sh_override_options): Do not automatically
14019         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14020         that to the -mfmovd command line switch.
14021         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
14022         (fldi_ok): Always allow.
14023         * config/sh/sh.opt (mfmovd): Remove this switch.
14024         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14025
14026 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
14027             Kaz Kojima  <kkojima@gcc.gnu.org>
14028
14029         PR rtl-optimization/30807
14030         * postreload.c (reload_combine): For every new use of REG_SUM,
14031         record the use of BASE.
14032
14033 2009-07-06  Jan Hubicka  <jh@suse.cz>
14034
14035         * params.def: Revert my accidental commit at 2009-06-30.
14036
14037 2009-07-04  Ian Lance Taylor  <iant@google.com>
14038
14039         PR target/40636
14040         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
14041         EXPORTED_CONST.
14042         (mingw_format_attribute_overrides): Likewise.
14043
14044 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
14045
14046         PR debug/40596
14047         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
14048         don't check cfa.reg.  Instead of cfa.indirect use
14049         fde && fde->drap_reg != INVALID_REGNUM test.
14050
14051 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
14052
14053         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
14054
14055 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
14056
14057         PR target/40587
14058         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
14059
14060 2009-07-03  Richard Guenther  <rguenther@suse.de>
14061
14062         PR tree-optimization/40640
14063         * tree-switch-conversion.c (build_arrays): Perform arithmetic
14064         in original type.
14065
14066 2009-07-03  Jan Hubicka  <jh@suse.cz>
14067
14068         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
14069         for size, reduce amount of inlining.
14070
14071 2009-07-03  Richard Guenther  <rguenther@suse.de>
14072
14073         PR middle-end/34163
14074         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
14075         if t +- x is known to not overflow and the conversion widens the
14076         operation.
14077         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
14078
14079 2009-07-03  Jan Hubicka  <jh@suse.cz>
14080
14081         * ipa-pure-const.c (analyze): Update loop optimizer init.
14082         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
14083         try_remove_empty_loop, remove_empty_loops): Remove.
14084         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
14085         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
14086         to mark regular loops as neccesary.
14087         (degenerate_phi_p): New function.
14088         (propagate_necessity, remove_dead_phis): Use it.
14089         (forward_edge_to_pdom): Likewise.
14090         (eliminate_unnecessary_stmts): Take care to remove uses of results of
14091         virtual PHI nodes that became unreachable.
14092         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
14093         * tree-flow.h (remove_empty_loops): Remove.
14094         * passes.c (init_optimization_passes): Remove.
14095
14096 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
14097
14098         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
14099         can_create_pseudo_p.
14100         (*fix_trunc<mode>_i387_1): Ditto.
14101         (*floathi<mode>2_1): Ditto.
14102         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
14103         (*fistdi2_1): Ditto.
14104         (*fist<mode>2_1): Ditto.
14105         (frndintxf2_floor): Ditto.
14106         (*fist<mode>2_floor_1): Ditto.
14107         (frndintxf2_ceil): Ditto.
14108         (*fist<mode>2_ceil_1): Ditto.
14109         (frndintxf2_trunc): Ditto.
14110         (frndintxf2_mask_pm): Ditto.
14111         (fxam<mode>2_i387_with_temp): Ditto.
14112         * config/i386/sse.md (mulv16qi3): Ditto.
14113         (*sse2_mulv4si3): Ditto.
14114         (mulv2di3): Ditto.
14115         (sse4_2_pcmpestr): Ditto.
14116         (sse4_2_pcmpistr): Ditto.
14117
14118 2009-07-03  Jan Hubicka  <jh@suse.cz>
14119
14120         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
14121         (mark_stmt_necessary): Set it.
14122         (mark_operand_necessary): Set it.
14123         (mark_control_dependent_edges_necessary): Set it.
14124         (mark_virtual_phi_result_for_renaming): New function.
14125         (get_live_post_dom): New function.
14126         (forward_edge_to_pdom): New function.
14127         (remove_dead_stmt): Fix handling of control dependences.
14128         (tree_dce_init): Init new bitmap.
14129         (tree_dce_done): Free it.
14130
14131 2009-07-02  Richard Guenther  <rguenther@suse.de>
14132
14133         PR bootstrap/40617
14134         * tree-ssa-structalias.c (new_var_info): Initialize
14135         is_restrict_var.
14136
14137 2009-07-02  Jan Hubicka  <jh@suse.cz>
14138
14139         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
14140         local.
14141
14142 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
14143
14144         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
14145         instead of recomputing it.  Adjust calls.
14146         (emit_store_flag): Adjust recursive calls.
14147
14148 2009-07-02  Richard Guenther  <rguenther@suse.de>
14149
14150         * tree-ssa-live.c (remove_unused_locals): Do not remove
14151         heap variables.
14152         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
14153         of DECL_EXTERNAL for HEAP variables.
14154         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
14155         HEAP variables.  Do not adjust RESTRICT vars.
14156         (find_what_var_points_to): Nobody cares if something
14157         points to READONLY.
14158
14159 2009-07-02  Ben Elliston  <bje@au.ibm.com>
14160
14161         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
14162         pc_low and pc_high declarations to the top of the function.
14163
14164 2009-07-01  DJ Delorie  <dj@redhat.com>
14165
14166         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
14167         registers as fixed.
14168         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
14169         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
14170         unspecified accesses to control registers.
14171         * config/mep/intrinsics.md: Regenerate.
14172         * config/mep/intrinsics.h: Regenerate.
14173         * config/mep/mep-intrin.h: Regenerate.
14174
14175 2009-07-01  Anthony Green  <green@moxielogic.com>
14176
14177         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
14178         instruction when possible.
14179         (moxie_expand_prologue): Ditto.  Also, save an instruction and
14180         some complexity by popping off of $r12 instead of $sp.
14181         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
14182         operands.
14183
14184 2009-07-01  Richard Henderson  <rth@redhat.com>
14185
14186         PR bootstrap/40347
14187         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14188         contained no insns, reposition note before last insn.
14189
14190 2009-07-01  Richard Henderson  <rth@redhat.com>
14191
14192         PR debug/40431
14193         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14194         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14195
14196 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14197
14198         PR bootstrap/40558
14199         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14200         darwin9 for printing reg addresses with %y.
14201
14202 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14203
14204         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14205         truncation from operands in binary operations.
14206
14207 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14208
14209         Revert:
14210         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14211         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14212         subreg of op0 to the original op0.
14213
14214         * expmed.c (store_bit_field_1): Use a temporary as the destination
14215         instead of a paradoxical subreg when we need to truncate the result.
14216
14217 2009-07-01  DJ Delorie  <dj@redhat.com>
14218
14219         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14220         names to VLIW variants.
14221         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14222         * config/mep/intrinsics.md: Regenerate.
14223         * config/mep/intrinsics.h: Regenerate.
14224         * config/mep/mep-intrin.h: Regenerate.
14225
14226 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14227
14228         PR debug/40462
14229         * jump.c (returnjump_p): Revert last patch.
14230         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14231
14232 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14233
14234         PR target/40575
14235         * pa.md (casesi32p): Use jump table label to determine the offset
14236         of the jump table.
14237         (casesi64p): Likewise.
14238
14239         * pa.c (forward_branch_p): Return bool type.  Use instruction
14240         addresses when available.  Assert that INSN has a jump label.
14241         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14242         have a jump label.
14243
14244 2009-07-01  Richard Guenther  <rguenther@suse.de>
14245
14246         PR tree-optimization/19831
14247         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14248         that only act as barriers do not make any previous stores necessary.
14249         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14250         HEAP variables global, do not add a constraint from nonlocal.
14251         (find_func_aliases): Handle escapes through return statements.
14252         (compute_points_to_sets): Make escaped HEAP variables global.
14253
14254 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14255
14256         PR bootstrap/40597
14257         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14258         after reducing a DImode cstore to SImode.
14259
14260 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14261
14262         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14263         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14264
14265 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14266
14267         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14268         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14269         to 0.
14270         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14271         and umod_optab if TARGET_BSD_DIVMOD.
14272         * config/vax/lib1funcs.asm: New file.
14273         * config/vax/t-linux: New file.
14274         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14275
14276 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14277
14278         PR c++/40566
14279         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14280         to type arguments that have void type.
14281
14282         PR debug/40573
14283         * dwarf2out.c (gen_formal_parameter_die): Call
14284         equate_decl_number_to_die if node is different from origin.
14285
14286 2009-06-30  Anthony Green  <green@moxielogic.com>
14287
14288         Clean up moxie port for --enable-build-with-cxx.
14289         * config/moxie/moxie.c (moxie_function_value): First two
14290         parameters are const_tree, not tree.
14291         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14292         (REG_CLASS_NAMES): Ditto.
14293         (REGNO_REG_CLASS): Ditto.
14294         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14295         (moxie_function_value): Fix constyness of arguments.
14296
14297 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14298
14299         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14300         finalize_size_functions before further processing.
14301         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14302         (variable_size): Call self_referential_size on size expressions
14303         that contain a PLACEHOLDER_EXPR.
14304         (size_functions): New static variable.
14305         (copy_self_referential_tree_r): New static function.
14306         (self_referential_size): Likewise.
14307         (finalize_size_functions): New global function.
14308         * tree.c: Include tree-inline.h.
14309         (push_without_duplicates): New static function.
14310         (find_placeholder_in_expr): New global function.
14311         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14312         on equality.
14313         <tcc_expression>: Likewise.
14314         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14315         the call in the expression.
14316         * tree.h (finalize_size_functions): Declare.
14317         (find_placeholder_in_expr): Likewise.
14318         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14319         (substitute_placeholder_in_expr): Update comment.
14320         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14321         is true.
14322         (copy_tree_body_r): Likewise.
14323         (copy_tree_body): New static function.
14324         (maybe_inline_call_in_expr): New global function.
14325         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14326         (maybe_inline_call_in_expr): Declare.
14327         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14328         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14329         GIMPLE_H.
14330
14331 2009-06-30  Richard Guenther  <rguenther@suse.de>
14332
14333         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14334         continue walking.
14335         (propagate_necessity): Do not mark reaching defs of stores
14336         as necessary.
14337
14338 2009-06-30  Jan Hubicka  <jh@suse.cz>
14339
14340         * cfgloopanal.c (check_irred): Move into ...
14341         (mark_irreducible_loops): ... here; return true if ireducible
14342         loops was found.
14343         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14344         (analyze_function): Try to prove loop finiteness.
14345         * cfgloop.h (mark_irreducible_loops): Update prototype.
14346         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14347
14348 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14349
14350         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14351
14352 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14353
14354         PR tree-optimization/40542
14355         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14356         types.
14357
14358 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14359
14360         PR tree-optimization/40582
14361         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14362         than useless_type_conversion_p.
14363         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14364         proper place.
14365
14366 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14367
14368         PR middle-end/40554
14369         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14370
14371 2009-06-30  Richard Guenther  <rguenther@suse.de>
14372
14373         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14374         use ao_ref references.
14375         (walk_aliased_vdefs): Likewise.
14376         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14377         * tree-ssa-dce.c (struct ref_data): Remove.
14378         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14379         (mark_aliased_reaching_defs_necessary): Adjust.
14380         (mark_all_reaching_defs_necessary_1): Likewise.
14381
14382 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14383
14384         PR boostrap/40597
14385         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14386         (emit_store_flag_1): Extract from emit_store_flag, adjust
14387         calls to (what now is) emit_cstore.
14388         (emit_store_flag): Call emit_store_flag_1 and also use it
14389         for what used to be recursive calls.
14390
14391 2009-06-30  Wei Guozhi  <carrot@google.com>
14392
14393         PR/40416
14394         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14395         if the target bb post dominates from bb.
14396         * config/i386/i386.c (memory_address_length): Check existence of base
14397         register before using it.
14398
14399 2009-06-30  Nick Clifton  <nickc@redhat.com>
14400             DJ Delorie  <dj@redhat.com>
14401
14402         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14403         __FMOVD_ENABLED__ is defined.
14404         * config/sh/sh.h
14405         (TARGET_FMOVD): Provide a default definition.
14406         (MASK_FMOVD): Likewise.
14407         (TARGET_CPU_CPP_BUILTINS): Define
14408         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14409         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14410         two fmov instructions depending upon whether TARGET_FMOVD is
14411         enabled.
14412         (split for DF load from memory into register): Also handle
14413         MEMs which consist of REG+DISP addressing.
14414         (split for DF store from register to memory): Likewise.
14415         * config/sh/sh.opt (mfmovd): Remove this switch.
14416         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14417         * config/sh/sh.c (sh_override_options): Do not automatically
14418         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14419         that to the -mfmovd command line switch.
14420
14421         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14422         the SH4 and SH4A.
14423         (fldi_ok): Always allow.
14424         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14425
14426 2009-06-29  DJ Delorie  <dj@redhat.com>
14427
14428         * doc/install.texi (mep-x-elf): Correct chip's full name.
14429
14430 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14431
14432         * doc/extend.texi: Fix typo.
14433
14434 2009-06-29  Tom Tromey  <tromey@redhat.com>
14435
14436         * dwarf2.h: Remove.
14437         * Makefile.in (DWARF2_H): New variable.
14438         (except.o): Use it.
14439         (dwarf2out.o): Likewise.
14440         (dwarf2asm.o): Likewise.
14441         * config/i386/t-i386: Use DWARF2_H.
14442         * except.c: Include elf/dwarf2.h.
14443         * unwind-dw2.c: Include elf/dwarf2.h.
14444         * dwarf2out.c: Include elf/dwarf2.h.
14445         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14446         <dtprel>: New field.
14447         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14448         (size_of_loc_descr): Likewise.
14449         (output_loc_operands_raw): Likewise.
14450         (output_loc_operands): Handle new dtprel field.
14451         (loc_checksum): Update.
14452         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14453         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14454         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14455         * dwarf2asm.c: Include elf/dwarf2.h.
14456         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14457         * config/mmix/mmix.c: Include elf/dwarf2.h.
14458         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14459         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14460         * config/sh/sh.c: Include elf/dwarf2.h.
14461         * config/i386/i386.c: Include elf/dwarf2.h.
14462
14463 2009-06-29  DJ Delorie  <dj@redhat.com>
14464
14465         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14466
14467         * doc/extend.texi: Add MeP attributes and pragmas.
14468         * doc/invoke.text: Add MeP Options.
14469         * doc/contrib.texi: Add MeP contribution.
14470         * doc/md.texi: Add MeP constraints.
14471         * doc/install.texi: Add MeP target.
14472
14473 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14474
14475         * target.h (struct gcc_target): Add frame_pointer_required field.
14476         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14477         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14478         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14479         hook.
14480         * reload1.c (update_eliminables): (Ditto.).
14481         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14482         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14483         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14484
14485         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14486
14487         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14488         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14489         (arm_frame_pointer_required): New function.
14490
14491         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14492         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14493         (avr_frame_pointer_required_p): Declare as static.
14494         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14495
14496         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14497         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14498         (bfin_frame_pointer_required): Make as static, change return type
14499         to bool.
14500         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14501
14502         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14503         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14504         (cris_frame_pointer_required): New function.
14505
14506         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14507
14508         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14509         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14510         (fr30_frame_pointer_required): New function.
14511
14512         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14513         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14514         (frv_frame_pointer_required): Make as static, change return type
14515         to bool.
14516         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14517
14518         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14519         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14520         (ix86_frame_pointer_required): Make as static, change return type to
14521         bool.
14522         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14523
14524         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14525         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14526
14527         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14528
14529         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14530
14531         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14532
14533         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14534         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14535         (mips_frame_pointer_required): Make as static.
14536         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14537
14538         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14539         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14540         (mmix_frame_pointer_required): Mew function.
14541
14542         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14543         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14544
14545         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14546
14547         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14548
14549         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14550
14551         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14552         (CAN_ELIMINATE): Redefine.
14553         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14554         (sparc_frame_pointer_required): New function.
14555         (sparc_can_eliminate): New function.
14556         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14557
14558         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14559         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14560
14561         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14562         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14563         (xtensa_frame_pointer_required): Make as static, change return type
14564         to bool.
14565         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14566         Remove.
14567
14568 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14569
14570         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14571         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14572         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14573         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14574         (register_callback): Handle PLUGIN_START_UNIT.
14575         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14576
14577 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14578
14579         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14580         operands.
14581         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14582         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14583
14584 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14585
14586         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14587         move cost.
14588
14589 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14590
14591         * doc/extend.texi (Additional Floating Types): __float128 is also
14592         supported on i386 targets.
14593
14594 2009-06-29  Richard Guenther  <rguenther@suse.de>
14595
14596         PR middle-end/14187
14597         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14598         flag.
14599         (pt_solutions_same_restrict_base): Declare.
14600         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14601         flag.
14602         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14603         (make_constraint_from, make_copy_constraint): Move earlier.
14604         (make_constraint_from_heapvar): New function.
14605         (make_constraint_from_restrict): Likewise.
14606         (handle_lhs_call): Use it.
14607         (find_func_aliases): Use it to track conversions to restrict
14608         qualified pointers.
14609         (struct fieldoff): Add only_restrict_pointers flag.
14610         (push_fields_onto_fieldstack): Initialize it.
14611         (create_variable_info_for): Track global restrict qualified pointers.
14612         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14613         Track restrict qualified pointer arguments.
14614         (set_uids_in_ptset): Use varinfo is_global_var flag.
14615         (find_what_var_points_to): Set the vars_contains_restrict flag.
14616         Always create the points-to solution for sets including restrict tags.
14617         (pt_solutions_same_restrict_base): New function.
14618         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
14619         qualified pointers use pt_solutions_same_restrict_base as
14620         additional source for disambiguation.
14621
14622 2009-06-29  Richard Guenther  <rguenther@suse.de>
14623
14624         PR middle-end/38212
14625         * alias.c (find_base_decl): Remove.
14626         (get_deref_alias_set_1): Remove restrict handling.
14627         * c-common.c (c_apply_type_quals_to_decl): Do not set
14628         DECL_POINTER_ALIAS_SET.
14629         * gimplify.c (find_single_pointer_decl_1): Remove.
14630         (find_single_pointer_decl): Likewise.
14631         (internal_get_tmp_var): Remove restrict handling.
14632         (gimple_regimplify_operands): Likewise.
14633         * omp-low.c (expand_omp_atomic_pipeline): Do not set
14634         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
14635         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
14636         * tree.c (restrict_base_for_decl): Remove.
14637         (init_ttree): Do not allocate it.
14638         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
14639         LABEL_DECL_UID for label decls.
14640         (copy_node_stat): Do not copy restrict information.
14641         (decl_restrict_base_lookup): Remove.
14642         (decl_restrict_base_insert): Likewise.
14643         (print_restrict_base_statistics): Likewise.
14644         (dump_tree_statistics): Do not call print_restrict_base_statistics.
14645         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
14646         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
14647         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
14648         (LABEL_DECL_UID): Adjust.
14649         (DECL_BASED_ON_RESTRICT_P): Remove.
14650         (DECL_GET_RESTRICT_BASE): Likewise.
14651         (SET_DECL_RESTRICT_BASE): Likewise.
14652         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
14653
14654         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
14655         instead of DECL_POINTER_ALIAS_SET.
14656         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14657         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
14658         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
14659
14660 2009-06-29  Richard Guenther  <rguenther@suse.de>
14661
14662         PR tree-optimization/40579
14663         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
14664         the IL to simplify has constants that overflowed.
14665
14666 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
14667
14668         PR tree-optimization/40550
14669         * tree-vect-generic.c (expand_vector_operations_1): Compute in
14670         vector_compute_type only when the size of vector_compute_type is
14671         less than the size of type.
14672
14673 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
14674
14675         * fold-const.c (contains_label_1): Fix comments.
14676         (contains_label_p): Do not walk trees multiple time.
14677
14678 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14679
14680         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
14681         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
14682         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
14683         ix86_fp_comparison_operator.
14684         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
14685         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
14686         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
14687         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
14688         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
14689         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
14690         (related splits): Change predicate to ix86_fp_comparison_operator.
14691         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
14692         instead of ix86_fp_comparison_codes.
14693         (ix86_trivial_fp_comparison_operator,
14694         ix86_fp_comparison_operator): New.
14695         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
14696         (ix86_expand_compare): Eliminate last two parameters.
14697         (ix86_fp_jump_nontrivial_p): Kill.
14698         * config/i386/i386.c (put_condition_code): Eliminate call to
14699         ix86_fp_comparison_codes and subsequent assertion.
14700         (ix86_fp_comparison_codes): Eliminate.
14701         (ix86_fp_swap_condition): New.
14702         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
14703         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
14704         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
14705         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
14706         and ix86_fp_swap_condition.
14707         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
14708         Use ix86_fp_comparison_strategy.
14709         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
14710         (ix86_fp_jump_nontrivial_p): Eliminate.
14711         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
14712         call to ix86_expand_compare.
14713         (ix86_split_fp_branch, ix86_expand_setcc,
14714         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
14715         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
14716
14717 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14718
14719         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
14720         related to jump_clobbers.
14721         * config/arm/arm.md (conds): Remove jump_clob case.
14722         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
14723         splits): Change comparison_operator to arm_comparison_operator.
14724         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
14725         Eliminate.
14726
14727 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14728
14729         * dojump.c (do_compare_rtx_and_jump): Try swapping the
14730         condition for floating point modes.
14731         * expmed.c (emit_store_flag_1): Move here a bigger part
14732         of emit_store_flag.
14733         (emit_store_flag): Try swapping the condition for floating point
14734         modes.
14735         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
14736
14737 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14738
14739         * expr.c (expand_expr_real_1): Just use do_store_flag.
14740         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
14741         emit_store_flag_force.
14742         * expmed.c (emit_store_flag_force): Copy here trick
14743         previously in expand_expr_real_1.  Try reversing the comparison.
14744         (emit_store_flag_1): Work if target is NULL.
14745         (emit_store_flag): Work if target is NULL, using the result mode
14746         from the comparison.  Use split_comparison, restructure final part
14747         to simplify conditionals.
14748
14749 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
14750
14751         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
14752         * dojump.c (do_jump): Change handling of floating-point
14753         ops to use just do_compare_and_jump.
14754         (split_comparison): New.
14755         (do_compare_rtx_and_jump): Add here logic coming previously
14756         in do_jump, using split_comparison.
14757
14758 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
14759
14760         PR target/40489
14761         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
14762
14763 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14764
14765         * tree-ssa-alias.c: Fix unintentional commit.
14766
14767 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14768
14769         * passes.c (execute_one_pass): Fix unintentional commit.
14770
14771 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14772
14773         * df-problems.c (df_set_seen, df_unset_seen): Delete.
14774         (df_rd_local_compute, df_md_local_compute): Inline them.
14775
14776         (df_md_scratch): New.
14777         (df_md_alloc, df_md_free): Allocate/free it.
14778         (df_md_local_compute): Only include live registers in init.
14779         (df_md_transfer_function): Prune the in-set computed by
14780         the confluence function, and the gen-set too.
14781
14782 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14783
14784         PR rtl-optimization/26854
14785         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
14786         * df-problems.c (df_rd_add_problem): Fix comment.
14787         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
14788         df_md_simulate_artificial_defs_at_top,
14789         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
14790         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
14791         df_md_transfer_function, df_md_init, df_md_confluence_0,
14792         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
14793         problem_MD, df_md_add_problem): New.
14794         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
14795         df_md_get_bb_info): New.
14796         (DF_LAST_PROBLEM_PLUS1): Adjust.
14797
14798         * Makefile.in (fwprop.o): Include domwalk.h.
14799         * fwprop.c: Include domwalk.h.
14800         (reg_defs, reg_defs_stack): New.
14801         (bitmap_only_bit_between): Remove.
14802         (process_defs): New.
14803         (process_uses): Use reg_defs and local_md instead of
14804         bitmap_only_bit_between and local_rd.
14805         (single_def_use_enter_block): New, from build_single_def_use_links.
14806         (single_def_use_leave_block): New.
14807         (build_single_def_use_links): Remove code moved to
14808         single_def_use_enter_block, invoke domwalk.
14809         (use_killed_between): Adjust comment.
14810
14811 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14812
14813         * bitmap.h (bitmap_ior_and_into): New.
14814         * bitmap.c (bitmap_ior_and_into): New.
14815
14816 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
14817
14818         * domwalk.h (struct dom_walk_data): Remove all callbacks except
14819         before_dom_children_before_stmts and after_dom_children_after_stmts.
14820         Rename the two remaining callbacks to just before_dom_children and
14821         after_dom_children. Remove other GIMPLE statement walking bits.
14822         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
14823         * graphite.c: Do not include domwalk.h.
14824         * tree-into-ssa.c (interesting_blocks): New global.
14825         (struct mark_def_sites_global_data): Remove it and names_to_rename.
14826         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
14827         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
14828         now that they're not domwalk callbacks.
14829         (rewrite_initialize_block): Rename to...
14830         (rewrite_enter_block): ... this, place after called functions.  Test
14831         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
14832         (rewrite_finalize_block): Rename to...
14833         (rewrite_leave_block): ... this, place after called functions.
14834         (rewrite_update_init_block): Rename to...
14835         (rewrite_update_enter_block): ... this, place after called functions.
14836         Test interesting_blocks, call rewrite_update_stmt and
14837         rewrite_update_phi_arguments.
14838         (rewrite_update_fini_block): Rename to...
14839         (rewrite_leave_block): ... this, place after called functions.
14840         (rewrite_blocks): Remove last argument, simplify initialization of
14841         walk_data.
14842         (mark_def_sites_initialize_block): Rename to...
14843         (mark_def_sites_block): ... this, call mark_def_sites.
14844         (mark_def_sites_blocks): Remove argument, simplify initialization of
14845         walk_data.
14846         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
14847         (update_ssa): Likewise.
14848         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
14849         callback.
14850         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
14851         (dom_opt_initialize_block): Rename to...
14852         (dom_opt_enter_block): ... this, place after called functions.  Walk
14853         statements here, inline propagate_to_outgoing_edges.
14854         (dom_opt_finalize_block): Rename to...
14855         (dom_opt_leave_block): ... this, place after called functions.
14856         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
14857         domwalk callback.
14858         (dse_enter_block, dse_record_phi): New.
14859         (dse_record_phis): Delete.
14860         (dse_finalize_block): Rename to...
14861         (dse_leave_block): ... this.
14862         (tree_ssa_dse): Simplify initialization of walk_data.
14863         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
14864         Adjust initialization of walk_data.
14865         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
14866         * tree-ssa-loop-phiopt.c (get_non_trapping):
14867         Adjust initialization of walk_data.
14868         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
14869         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
14870         it's not a domwalk callback.
14871         (uncprop_initialize_block): Rename to...
14872         (dse_enter_block): ... this, call uncprop_into_successor_phis.
14873         (dse_finalize_block): Rename to...
14874         (dse_leave_block): ... this.
14875         (tree_ssa_uncprop): Simplify initialization of walk_data.
14876         * Makefile.in: Adjust dependencies.
14877
14878 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
14879
14880         * arm.md (casesi): Fix test for Thumb1.
14881         (thumb1_casesi_internal_pic): Likewise.
14882         (thumb1_casesi_dispatch): Likewise.
14883
14884 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
14885
14886         * config/arm/arm-cores.def: Added core cortex-m0.
14887         * config/arm/arm-tune.md: Regenerated.
14888         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
14889
14890 2009-06-26  DJ Delorie  <dj@redhat.com>
14891
14892         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
14893
14894         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
14895         the scheduler doesn't tag jump insns.
14896
14897 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14898
14899         * c-decl.c (merge_decls): Re-indent.
14900
14901 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
14902
14903         PR c/39902
14904         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
14905         Special-case decimal float constants.
14906
14907 2009-06-26  Richard Henderson  <rth@redhat.com>
14908
14909         * function.h (struct function): Add cannot_be_copied_reason,
14910         and cannot_be_copied_set.
14911         * tree-inline.c (has_label_address_in_static_1): Rename from
14912         inline_forbidden_p_2; don't set inline_forbidden_reason here.
14913         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
14914         don't set inline_forbidden_reason.
14915         (copy_forbidden): New function, split out of inline_forbidden_p.
14916         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
14917         (inline_forbidden_p): Use copy_forbidden.
14918         (tree_versionable_function_p): Likewise.
14919         (inlinable_function_p): Merge into tree_inlinable_function_p.
14920         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
14921         * ipa-cp.c (ipcp_versionable_function_p): New function.
14922         (ipcp_cloning_candidate_p): Use it.
14923         (ipcp_node_modifiable_p): Likewise.
14924
14925 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
14926
14927         * builtins.c (expand_builtin_alloca): Handle builtin alloca
14928         that is marked not to be inlined. Remove flag_mudflap use.
14929         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
14930         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
14931
14932 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
14933
14934         PR bootstrap/40338
14935         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
14936         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
14937
14938 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
14939
14940         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
14941         shared libgcc.
14942         (__mingwthr_remove_key_dtor): Likewise.
14943
14944 2009-06-26  Richard Guenther  <rguenther@suse.de>
14945
14946         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
14947
14948 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14949
14950         PR middle-end/40525
14951         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
14952         try the non-cond_exec path also.
14953
14954 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14955
14956         PR target/40468
14957         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
14958         (output_cbranch): Use new functions.
14959         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
14960         Likewise.
14961
14962 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
14963             Pat Haugen  <pthaugen@us.ibm.com>
14964             Revital Eres <ERES@il.ibm.com>
14965
14966         * config/rs6000/rs6000.c (print_operand): Correct lossage message
14967         for %c error.  Add %x support to print VSX registers as a unified
14968         register set, instead of separate float and altivec registers.
14969         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
14970         %y case, and add support for VSX pre-modify addresses.
14971         (output_toc): Add assert for CONST containing an integer constant
14972         in the PLUS case.
14973         (rs6000_adjust_cost): Add POWER7 support.
14974         (insn_must_be_first_in_group): Ditto.
14975         (insn_must_be_last_in_group): Ditto.
14976         (rs6000_emit_popcount): Ditto.
14977         (rs6000_vector_mode_supported_p): Ditto.
14978
14979         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
14980         Change some of the functions called by macros to being called
14981         through a pointer, so debug functions can be inserted if
14982         -mdebug=addr or -mdebug=cost.
14983         (rs6000_preferred_reload_class_ptr): Ditto.
14984         (rs6000_secondary_reload_class_ptr): Ditto.
14985         (rs6000_secondary_memory_needed_ptr): Ditto.
14986         (rs6000_cannot_change_mode_class_ptr): Ditto.
14987         (rs6000_secondary_reload_inner): Ditto.
14988         (rs6000_legitimize_reload_address): Ditto.
14989         (rs6000_legitimize_reload_address_ptr): Ditto.
14990         (rs6000_mode_dependent_address): Ditto.
14991         (rs6000_mode_dependent_address_ptr): Ditto.
14992
14993         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
14994         function to return true if the mode allows reg + integer
14995         addresses.
14996         (virtual_stack_registers_memory_p): New function to return true if
14997         the address refers to a virtual stack register.
14998         (rs6000_legitimate_offset_address_p): Move code to say whether a
14999         mode supports reg+int addressing to reg_offset_addressing_ok_p and
15000         call it.
15001         (rs6000_legitimate_address_p): Add checks for modes that only can
15002         do reg+reg addressing.  Start adding VSX support.
15003         (rs6000_legitimize_reload_address): Ditto.
15004         (rs6000_legitimize_address): Ditto.
15005         (rs6000_debug_legitimate_address_p): New debug functions for
15006         -mdebug=addr and -mdebug=cost.
15007         (rs6000_debug_rtx_costs): Ditto.
15008         (rs6000_debug_address_costs): Ditto.
15009         (rs6000_debug_adjust_cost): Ditto.
15010         (rs6000_debug_legitimize_address): Ditto.
15011         (rs6000_legitimize_reload_address_ptr): Point to call normal
15012         function or debug function.  Make functions called via pointer
15013         static.
15014         (rs6000_mode_dependent_address_ptr): Ditto.
15015         (rs6000_secondary_reload_class_ptr): Ditto.
15016         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
15017         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
15018         into a friendlier error.
15019         (rs6000_init_builtins): Add initial VSX support.
15020         (rs6000_adjust_cost): Fix some spacing issues.
15021
15022         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
15023         (REG_CLASS_NAMES): Ditto.
15024         (REG_CLASS_CONTENTS): Ditto.
15025         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
15026         pointer, to add -mdebug=addr support.
15027         (CANNOT_CHANGE_MODE_CLASS): Ditto.
15028         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
15029         -mdebug=addr support.
15030         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
15031         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
15032         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
15033
15034         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
15035         16-bit values.
15036         (bswapsi*): Set attribute types for load/store.  Add combiner
15037         patterns to eliminate zero extend on 64-bit.
15038         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
15039         stdbrx if the hardware supports those instructions.
15040
15041 2009-06-25  Ian Lance Taylor  <iant@google.com>
15042
15043         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
15044         (Link Options): Document -static-libstdc++.
15045
15046 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15047
15048         PR target/38731
15049         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
15050         DATA_ALIGNMENT instead.
15051
15052 2009-06-25  Richard Guenther  <rguenther@suse.de>
15053
15054         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
15055         indirect references against the callused/escaped solutions.
15056         (call_may_clobber_ref_p_1): Likewise.
15057
15058 2009-06-25  Martin Jambor  <mjambor@suse.cz>
15059
15060         PR tree-optimization/40493
15061         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
15062         (enum unscalarized_data_handling): New type.
15063         (handle_unscalarized_data_in_subtree): Return what has been done.
15064         (load_assign_lhs_subreplacements): Handle left flushes differently.
15065         (sra_modify_assign): Use unscalarized_data_handling, simplified
15066         condition determining whether to remove the statement.
15067
15068 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
15069
15070         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
15071         excerpt - @ should be doubled for texinfo.
15072
15073 2009-06-24  Ian Lance Taylor  <iant@google.com>
15074
15075         * config/arc/arc.c: Include "df.h".
15076         (arc_attribute_table): Make static.  Move higher in file.
15077         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
15078         (output_shift): Initialize n later to avoid warning.
15079         * config/arm/arm.c (arm_attribute_table): Make static.  Move
15080         higher in file.
15081         * config/avr/avr.c (avr_attribute_table): Make static.  Move
15082         higher in file.
15083         (reg_class_tab): Change array type from int to enum reg_class.
15084         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
15085         LABEL_REF.
15086         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
15087         (lshrhi3_out): Likewise.
15088         (class_likely_spilled_p): Change return type to bool.
15089         (avr_rtx_costs): Use local code variable with enum type.
15090         * config/avr/avr.md (movmemhi): Use add_reg_note.
15091         (andhi3, andsi3): Don't use AS2 with "and".
15092         (iorhi3, iorsi3): Don't use AS2 with "or".
15093         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
15094         * config/crx/crx.c: Include "df.h".
15095         (crx_attribute_table): Make static.
15096         * config/m32r/m32r.c: Include "df.h".
15097         (m32r_attribute_table): Make static.  Move higher in file.
15098         (pop): Use add_reg_note.
15099         (block_move_call): Change 0 to LCT_NORMAL in function call.
15100         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
15101         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
15102         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
15103         declare, not just when TREE_CODE is defined.
15104         * config/m68hc11/m68hc11.c: Include "expr.h".
15105         (m68hc11_attribute_table): Make static.  Move higher in file.
15106         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
15107         function call.
15108         (m68hc11_register_indirect_p): Likewise.
15109         (m68hc11_function_arg_padding): Change return type to enum
15110         direction.
15111         (emit_move_after_reload): Use add_reg_note.
15112         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
15113         (m68hc11_split_logical): Likewise.
15114         (m68hc11_rtx_costs): Add local code_and outer_code variables with
15115         enum type.
15116         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
15117         to VOIDmode in function call.
15118         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
15119         tree is defined.
15120         (m68hc11_split_logical): Update declaration.
15121         (m68hc11_function_arg_padding): Update declaration.
15122         * config/mcore/mcore.c (regno_reg_class): Change form array of int
15123         to array of enum reg_class.
15124         (mcore_attribute_table): Make static.  Move higher in file.
15125         (mcore_rtx_costs): Add cast to enum type.
15126         * config/mcore/mcore.h (regno_reg_class): Update declaration.
15127         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
15128         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
15129         in file.
15130         * config/sh/predicates.md (trapping_target_operand): Rename and to
15131         and_expr.
15132         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
15133         higher in file.
15134         * config/spu/spu.c (spu_attribute_table): Make static.  Move
15135         higher in file.
15136         * config/v850/v850.c (v850_attribute_table): Make static.  Move
15137         higher in file.
15138         (v850_rtx_costs): Use local code with enum type.
15139         (expand_epilogue): Add cast.
15140         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
15141
15142 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
15143
15144         PR target/40515
15145         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
15146         -m2a-single-only and -m2a-nofpu.
15147         * config/sh/sh.opt: Document m2a generates FPU code.
15148
15149 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
15150
15151         * defaults.h (CAN_ELIMINATE): Provide default.
15152         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
15153         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
15154         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
15155         * config/spu/spu.h (CAN_ELIMINATE): Delete.
15156         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
15157         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
15158         * config/cris/cris.h (CAN_ELIMINATE): Delete.
15159         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
15160         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
15161         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
15162
15163 2009-06-24  DJ Delorie  <dj@redhat.com>
15164
15165         * mep-ext-cop.cpu: Fix copyright notice.
15166         * mep-default: Fix copyright notice.
15167         * mep-core: Fix copyright notice.
15168         * mep: Fix copyright notice.
15169         * mep-ivc2: Fix copyright notice.
15170         * mep-c5: Fix copyright notice.
15171
15172 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
15173
15174         * doc/contrib.texi (Contributors):
15175
15176 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15177
15178         PR middle-end/40501
15179         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
15180         src and dst operands if necessary.
15181
15182 2009-06-23  DJ Delorie  <dj@redhat.com>
15183
15184         Add MeP port.
15185         * config.gcc: Add mep support.
15186         * recog.c: Resurrect validate_replace_rtx_subexp().
15187         * recog.h: Likewise.
15188         * config/mep/: Add new port:
15189         * config/mep/constraints.md: New file.
15190         * config/mep/default.h: New file.
15191         * config/mep/intrinsics.h: New file.
15192         * config/mep/intrinsics.md: New file.
15193         * config/mep/ivc2-template.h: New file.
15194         * config/mep/mep-c5.cpu: New file.
15195         * config/mep/mep-core.cpu: New file.
15196         * config/mep/mep-default.cpu: New file.
15197         * config/mep/mep-ext-cop.cpu: New file.
15198         * config/mep/mep-intrin.h: New file.
15199         * config/mep/mep-ivc2.cpu: New file.
15200         * config/mep/mep-lib1.asm: New file.
15201         * config/mep/mep-lib2.c: New file.
15202         * config/mep/mep-pragma.c: New file.
15203         * config/mep/mep-protos.h: New file.
15204         * config/mep/mep-tramp.c: New file.
15205         * config/mep/mep.c: New file.
15206         * config/mep/mep.cpu: New file.
15207         * config/mep/mep.h: New file.
15208         * config/mep/mep.md: New file.
15209         * config/mep/mep.opt: New file.
15210         * config/mep/predicates.md: New file.
15211         * config/mep/t-mep: New file.
15212
15213 2009-06-23  Ian Lance Taylor  <iant@google.com>
15214
15215         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15216         from loose_warn into c_loose_warn and from strict_warn into
15217         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15218         --enable-build-with-cxx.  Set and substitute
15219         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15220         * Makefile.in (CXXFLAGS): New variable.
15221         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15222         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15223         the default is the same as $(STRICT_WARN).
15224         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15225         (CXX): New variable.
15226         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15227         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15228         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15229         (HOST_LIBS): New variable.
15230         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15231         (ALL_CXXFLAGS): New variable.
15232         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15233         * doc/install.texi (Configuration): Document
15234         --enable-build-with-cxx, --with-stage1-ldflags,
15235         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15236         * configure: Rebuild.
15237
15238 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15239
15240         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15241         from previous commit.
15242
15243 2009-06-23  Ian Lance Taylor  <iant@google.com>
15244
15245         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15246
15247 2009-06-23  Ian Lance Taylor  <iant@google.com>
15248
15249         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15250         with ATTRIBUTE_UNUSED.
15251
15252 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15253             Pat Haugen  <pthaugen@us.ibm.com>
15254             Revital Eres  <eres@il.ibm.com>
15255
15256         * config.in (HAVE_AS_POPCNTD): Add default definition.
15257         (HAVE_AS_LWSYNC): Ditto.
15258
15259         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15260         release number.
15261         (gcc_cv_as_powerpc_cmpb): Ditto.
15262         (gcc_cv_as_powerpc_dfp): Ditto.
15263         (gcc_cv_as_powerpc_vsx): Ditto.
15264         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15265         supporting the popcntd/lwsync instructions.
15266         (gcc_cv_as_powerpc_lwsync): Ditto.
15267         * configure: Regenerate.
15268
15269         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15270         -mcpu=native and -mcpu=power7.
15271         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15272
15273         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15274         a variable instead of a mask to reduce the number of mask bits.
15275         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15276         (-mbit-word): Ditto.
15277         (-mregnames): Ditto.
15278         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15279         (-mfused-madd): Ditto.
15280
15281         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15282         2.06 instructions.
15283         (-mvsx): New switch for VSX instructions.
15284         (-misel): Move from a variable to a mask to allow it to be set by
15285         -mcpu=.
15286
15287         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15288         function declaration to an array declaration.
15289         (rs6000_hard_regno_nregs): New external array declaration.
15290
15291         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15292         files included by rs6000.md.
15293
15294         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15295         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15296
15297         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15298         a target mask.
15299         (rs6000_debug_reg): New -mdebug= variables.
15300         (rs6000_debug_addr): Ditto.
15301         (rs6000_debug_cost): Ditto.
15302         (rs6000_pmode): New variable to hold Pmode.
15303         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15304         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15305         calculated at compiler start.
15306         (rs6000_hard_regno_nregs): Change function to an array which holds
15307         HARD_REGNO_NREGS calculated at compiler start.
15308         (rs6000_explicit_options): Delete isel field.
15309         (rs6000_vector_unit): New array to hold which vector unit
15310         supports arithmetic options for a given type.
15311         (rs6000_vector_mem): New array to hold which vector unit supports
15312         memory reference operations for a given type.
15313         (rs6000_vector_align): New array to given the alignment of each
15314         vector type.
15315         (power7_cost): New basic costs for power7.
15316         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15317         (rs6000_hard_regno_nregs_internal): New function, moved from
15318         HARD_REGNO_NREGS, to calculate the number of registers each hard
15319         register takes for each type.
15320         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15321         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15322         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15323         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15324         unit information here so it is calculated once at compiler startup
15325         time.
15326         (rs6000_override_options): Make -misel a target mask.  Add more
15327         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15328         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15329         -mdebug=cost.
15330         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15331         (rs6000_handle_option): Move -misel from variable to target mask.
15332         (rs6000_builtin_mask_for_load): Add VSX support.
15333         (rs6000_conditional_register_usage): Ditto.
15334         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15335         (function_arg_boundary): Ditto.
15336         (rs6000_expand_builtin): Ditto.
15337         (def_builtin): Make abort message a little friendlier.
15338         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15339
15340         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15341         assembler support the popcntd instruction instead of a vsx
15342         instruction to enable power7 support.
15343         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15344         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15345         option to the assembler if -mcpu=native.
15346         (ASM_CPU_NATIVE_SPEC): Ditto.
15347         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15348         ISA 2.06 features.
15349         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15350         the lwsync instruction.
15351         (enum processor_type): Add PROCESSOR_POWER7.
15352         (rs6000_debug_reg): New -mdebug= options.
15353         (rs6000_debug_addr): Ditto.
15354         (rs6000_debug_cost): Ditto.
15355         (rs6000_isel): Delete.
15356         (enum rs6000_vector): New enum to say what vector unit we have.
15357         (VECTOR_UNIT_*): New macros to say which vector unit has
15358         arithmetic operations for a given type.
15359         (VECTOR_MEM_*): New macros to say which vector unit has memory
15360         operations for a given type.
15361         (TARGET_LDBRX): Whether the machine supports the ldbrx
15362         instruction.
15363         (TARGET_ISEL): Delete, -misel moved to be a mask.
15364         (TARGET_ISEL64): New macro for 64-bit isel support.
15365         (UNITS_PER_VSX_WORD): New macro.
15366         (POINTER_SIZE): Move to be an external variable, rather than
15367         calculating whether we are generating 32 ot 64-bit code.
15368         (Pmode): Ditto.
15369         (STACK_BOUNDARY): Add VSX support.
15370         (LOCAL_ALIGNMENT): Ditto.
15371         (SLOW_UNALIGNED_ACCESS): Ditto.
15372         (VSX_REGNO_P): New macro for VSX support.
15373         (VFLOAT_REGNO_P): Ditto.
15374         (VINT_REGNO_P): Ditto.
15375         (VLOGICAL_REGNO_P): Ditto.
15376         (VSX_VECTOR_MODE): Ditto.
15377         (VSX_SCALAR_MODE): Ditto.
15378         (VSX_MODE): Ditto.
15379         (VSX_MOVE_MODE): Ditto.
15380         (VSX_REG_CLASS_P): Ditto.
15381         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15382         lookup.
15383         (UNITS_PER_SIMD_WORD): Add VSX support.
15384         (MODES_TIEABLE_P): Ditto.
15385         (STARTING_FRAME_OFFSET): Ditto.
15386         (STACK_DYNAMIC_OFFSET): Ditto.
15387         (EPILOGUE_USES): Ditto.
15388         (REGNO_REG_CLASS): Move to array lookup.
15389         (CLASS_MAX_NREGS): Ditto.
15390         (rs6000_vector_reg_class): Add declaration.
15391         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15392         overlap with the floating point and Altivec registers.
15393
15394         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15395
15396         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15397         give the appropriate asm switches if -mcpu=native.
15398         (host_detect_local_cpu): Add support for "asm".
15399         (host_detect_local_cpu): Follow GNU code guidelines for name.
15400
15401         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15402         -mbit-word to a variable instead of being a target mask.
15403
15404         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15405         emit the lwsync instruction instead of emitting the instruction as
15406         an integer constant.
15407
15408         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15409         fixuns_trundfsi2, move expander into rs6000.md.
15410
15411         * config/rs6000/rs6000.md (cpu): Add power7.
15412         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15413         (logical predicate patterns): Change the single instruction
15414         primitives that set CR0 to be fast_compare instead of compare.
15415         (norsi*): Ditto.
15416         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15417         (popcntddi2): Ditto.
15418         (popcount<mode>): Ditto.
15419         (floating multiply/add insns): Name the floating point
15420         multiply/add insns.
15421         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15422         (isel_unsigned_<mode>): Ditto.
15423         (fixuns_trundfsi2): Move expander here from spe.md.
15424         (smindi3): Define if we have -misel on 64-bit systems.
15425         (smaxdi3): Ditto.
15426         (umindi3): Ditto.
15427         (umaxdi3): Ditto.
15428
15429 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15430
15431         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15432         extra_objs.
15433         * config/avr/avr.c (avr_current_device): New variable.
15434         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15435         (avr_arch, mcu_type_s): Move to avr.h.
15436         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15437         default_data_section_start fields.
15438         (avr_arch): Moved from avr.c.
15439         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15440         library_name fields.
15441         (avr_current_device, avr_mcu_types, avr_arch_types,
15442         avr_device_to_arch, avr_device_to_data_start,
15443         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15444         (EXTRA_SPEC_FUNCTIONS): Define.
15445         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15446         options mapping. Use device_to_arch and device_to_data_start insted.
15447         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15448         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15449         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15450         * config/avr/driver-avr.c: New file.
15451         * config/avr/avr-devices.c: New file.
15452
15453 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15454
15455         * var-tracking.c (unshare_variable): Force initialized to
15456         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15457         (set_variable_part): Likewise.
15458         (struct variable_union_info): Remove pos_src field.
15459         (vui_vec, vui_allocated): New variables.
15460         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15461         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15462         == 1 use a simpler sorting algorithm.  Compute pos field right
15463         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15464         Avoid quadratic comparison if !flag_var_tracking_uninit.
15465         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15466         unshare_variable unconditionally.
15467         (dataflow_set_different_2): Removed.
15468         (dataflow_set_different): Don't traverse second hash table.
15469         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15470         unconditionally to var_reg_set or var_mem_set.
15471         (emit_notes_in_bb): Likewise.
15472         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15473         unshare_variable.
15474         (emit_note_insn_var_location): Don't set initialized to
15475         VAR_INIT_STATUS_INITIALIZED early.
15476         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15477         vui_allocated.
15478         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15479
15480         * tree-object-size.c (addr_object_size): Instead of checking
15481         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15482         are no FIELD_DECLs following it.
15483
15484 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15485
15486         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15487         order to match bswaps with signed source operands.
15488
15489 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15490
15491         * sdbout.c (sdbout_one_type): Fix braces in switch.
15492
15493 2009-06-23  Richard Guenther  <rguenther@suse.de>
15494
15495         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15496         member.
15497         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15498         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15499         var_callused, callused_tree, var_storedanything, storedanything_tree,
15500         var_integer, integer_tree): Remove global variables.
15501         (new_var_info): Do not pass new id, append the new var to the
15502         global variable vector.
15503         (do_ds_constraint): Use is_global_var member of the variable-info.
15504         (new_scalar_tmp_constraint_exp): Adjust.
15505         (create_function_info_for): Likewise.
15506         (create_variable_info_for): Likewise.
15507         (find_what_var_points_to): Remove dead code.
15508         (init_base_vars): Simplify.
15509         (compute_points_to_sets): Adjust.
15510
15511 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15512
15513         * combine.c (try_combine): Dump information about the insns we're
15514         combining.
15515
15516 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15517
15518         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15519         check when calling force_to_mode on TRUNCATE's operand.
15520
15521 2009-06-22  Ian Lance Taylor  <iant@google.com>
15522
15523         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15524
15525 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15526
15527         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15528
15529 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15530
15531         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15532         override library linkage flags such as -static-libgcc or
15533         -shared-libgcc.
15534
15535 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15536
15537         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15538
15539 2009-06-22  Ian Lance Taylor  <iant@google.com>
15540
15541         * config/linux.opt: Put mglibc ahead of muclibc.
15542
15543         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15544         for duplicate decls.
15545
15546 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15547
15548         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15549
15550 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15551
15552         PR objc/28050
15553         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15554         instead of NULL if a parser error occurs.
15555
15556 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15557
15558         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15559         non-DWARF2_DEBUGGING_INFO version.
15560
15561 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15562
15563         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15564         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15565
15566         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15567         (LIBGCC2_TF_CEXT): Define.
15568         (TF_SIZE): Define.
15569
15570 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15571
15572         PR target/40463
15573         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15574
15575 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15576
15577         * config/arm/arm.c (arm_override_options): Disable
15578         -mcaller-super-interworking and -mcallee-super-interworking.
15579         * doc/invoke.texi (ARM Options): Document this.
15580
15581 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15582
15583         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15584         * config/arm/constraints.md (j): New constraint for movw operands.
15585         (N): Remove thumb2 meaning.
15586         * config/arm/arm.md (*arm_movw): Delete.
15587         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15588         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15589         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15590
15591 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15592
15593         PR tree-optimization/40492
15594         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15595         build_ref_for_offset.
15596
15597 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15598
15599         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15600         JUMP_TABLE_DATA_P predicates where applicable.
15601         * auto-inc-dec.c: Ditto.
15602         * builtins.c: Ditto.
15603         * caller-save.c: Ditto.
15604         * calls.c: Ditto.
15605         * cfgcleanup.c: Ditto.
15606         * cfglayout.c: Ditto.
15607         * cfgrtl.c: Ditto.
15608         * combine.c: Ditto.
15609         * combine-stack-adj.c: Ditto.
15610         * cse.c: Ditto.
15611         * cselib.c: Ditto.
15612         * dbxout.c: Ditto.
15613         * df-scan.c: Ditto.
15614         * dse.c: Ditto.
15615         * dwarf2asm.c: Ditto.
15616         * dwarf2out.c: Ditto.
15617         * emit-rtl.c: Ditto.
15618         * except.c: Ditto.
15619         * explow.c: Ditto.
15620         * expmed.c: Ditto.
15621         * expr.c: Ditto.
15622         * final.c: Ditto.
15623         * function.c: Ditto.
15624         * fwprop.c: Ditto.
15625         * gcse.c: Ditto.
15626         * genpreds.c: Ditto.
15627         * genrecog.c: Ditto.
15628         * ifcvt.c: Ditto.
15629         * ira-costs.c: Ditto.
15630         * ira-lives.c: Ditto.
15631         * jump.c: Ditto.
15632         * loop-iv.c: Ditto.
15633         * lower-subreg.c: Ditto.
15634         * modulo-sched.c: Ditto.
15635         * optabs.c: Ditto.
15636         * postreload.c: Ditto.
15637         * print-rtl.c: Ditto.
15638         * recog.c: Ditto.
15639         * reginfo.c: Ditto.
15640         * regmove.c: Ditto.
15641         * reload1.c: Ditto.
15642         * reload.c: Ditto.
15643         * reorg.c: Ditto.
15644         * rtlanal.c: Ditto.
15645         * rtl.c: Ditto.
15646         * sched-vis.c: Ditto.
15647         * sdbout.c: Ditto.
15648         * sel-sched-ir.c: Ditto.
15649         * simplify-rtx.c: Ditto.
15650         * targhooks.c: Ditto.
15651         * var-tracking.c: Ditto.
15652         * vmsdbgout.c: Ditto.
15653
15654 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15655
15656         * Makefile.in (install-plugin): Always use DESTDIR.
15657
15658 2009-06-22  Olivier Hainque  <hainque@adacore.com>
15659
15660         * config/pa/pa.c (output_call): Don't optimize post call jumps
15661         into return address adjustments if the call may throw.
15662
15663 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
15664
15665         * arm.c (thumb1_output_casesi): New function.
15666         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
15667         optimizing for size or PIC.
15668         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
15669         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
15670         (casesi): Handle Thumb-1 when optimizing for size or PIC.
15671         (thumb1_casesi_internal_pic): New expand rule.
15672         (thumb1_casesi_dispatch): New pattern.
15673         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
15674         thumb-1 mode.
15675         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
15676         in the text seciton when PIC or optimizing for size.
15677         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
15678         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
15679         preservation properties of code.
15680         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
15681         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
15682         (__gnu_thumb1_case_si): New function.
15683         * t-arm (LIB1ASMSRC): Define here.
15684         (LIB1ASMFUNCS): Add some common functions.
15685         * t-arm-elf (LIB1ASMSRC): Delete.
15686         (LIB1ASMFUNCS): Append to existing set.
15687         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15688         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15689         * t-symbian (LIB1ASMFUNCS): Likewise.
15690         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15691         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
15692
15693 2009-06-21  Richard Guenther  <rguenther@suse.de>
15694
15695         PR tree-optimization/38729
15696         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
15697         to loops with a single exit if -fno-expensive-optimizations.
15698
15699 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
15700
15701         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
15702         (dataflow_set): Change vars type from htab_t to shared_hash.
15703         (shared_hash_pool, empty_shared_hash): New variables.
15704         (vars_clear): Removed.
15705         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
15706         shared_hash_find_slot_unshare, shared_hash_find_slot,
15707         shared_hash_find_slot_noinsert, shared_hash_find): New
15708         static inlines.
15709         (shared_hash_unshare, shared_hash_destroy): New functions.
15710         (unshare_variable): Unshare set->vars if shared, use
15711         shared_hash_htab.
15712         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
15713         (get_init_value, find_src_set_src, dump_dataflow_set,
15714         clobber_variable_part, emit_notes_for_differences): Use
15715         shared_hash_htab.
15716         (dataflow_set_init): Remove second argument, set vars to
15717         empty_shared_hash instead of creating a new htab.
15718         (dataflow_set_clear): Call shared_hash_destroy and set vars
15719         to empty_shared_hash instead of calling vars_clear.
15720         (dataflow_set_copy): Don't call vars_copy, instead just share
15721         the src htab with dst.
15722         (variable_union): Use shared_hash_*, use initially NO_INSERT
15723         lookup if set->vars is shared.  Don't keep slot cleared before
15724         calling unshare_variable.  Unshare set->vars if needed.
15725         Even ->refcount == 1 vars must be unshared if set->vars is shared
15726         and var needs to be modified.
15727         (variable_canonicalize): New function.
15728         (dataflow_set_union): If dst->vars is empty, just share src->vars
15729         with dst->vars and traverse with variable_canonicalize to canonicalize
15730         and unshare what is needed.
15731         (dataflow_set_different): If old_set and new_set use the same shared
15732         htab, they aren't different.  If number of htab elements is different,
15733         htabs are different.  Use shared_hash_*.
15734         (dataflow_set_destroy): Call shared_hash_destroy instead of
15735         htab_delete.
15736         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
15737         second argument to dataflow_set_init.
15738         (vt_initialize): Likewise.  Initialize shared_hash_pool and
15739         empty_shared_hash, move bb in/out initialization afterwards.
15740         Use variable_htab_free instead of NULL as changed_variables del hook.
15741         (variable_was_changed): Change type of second argument to pointer to
15742         dataflow_set.  When inserting var into changed_variables, bump
15743         refcount.  Unshare set->vars if set is shared htab and slot needs to
15744         be cleared.
15745         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
15746         lookup if set->vars is shared.  Unshare set->vars if needed.
15747         Even ->refcount == 1 vars must be unshared if set->vars is shared
15748         and var needs to be modified.  Adjust variable_was_changed caller.
15749         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
15750         vars must be unshared if set->vars is shared and var needs to be
15751         modified.  Adjust variable_was_changed caller.
15752         (emit_note_insn_var_location): Don't pool_free var.
15753         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
15754         instead of 1.
15755         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
15756         free_alloc_pool on shared_hash_pool.
15757
15758 2009-06-20  Anthony Green  <green@moxielogic.com>
15759
15760         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
15761         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
15762
15763 2009-06-20  Richard Guenther  <rguenther@suse.de>
15764
15765         * tree-ssa-structalias.c (find_func_aliases): For memset use
15766         a constraint from NULL if we memset to zero.
15767         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
15768         we explicitly handle that do not read from memory.
15769         (call_may_clobber_ref_p_1): Properly handle builtins that may
15770         set errno.
15771
15772 2009-06-20  Richard Guenther  <rguenther@suse.de>
15773
15774         PR tree-optimization/40495
15775         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
15776         (new_scalar_tmp_constraint_exp): New function.
15777         (process_constraint): Do not create temporary decls.
15778         (process_all_all_constraints): Likewise.
15779         (handle_const_call): Likewise.
15780         (create_function_info_for): Do not set decl.
15781
15782 2009-06-19  Ian Lance Taylor  <iant@google.com>
15783
15784         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
15785         (rs6000_attribute_table): Make static; move before use.
15786
15787 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
15788
15789         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
15790         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
15791         Propagate the TREE_READONLY flag without overwriting it.
15792         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
15793         Propagate the TREE_READONLY flag onto the result.
15794         (process_call_operands): Move around.  Use correct constant value.
15795
15796 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15797
15798         PR target/40482
15799         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
15800         * config/arm/arm.md: Likewise.
15801
15802 2009-06-19  Ian Lance Taylor  <iant@google.com>
15803
15804         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
15805         to GIMPLE_ERROR_MARK.
15806
15807         * c-typeck.c (build_conditional_expr): Add op1_original_type and
15808         op2_original_type parameters.  Warn about using different enum types.
15809         * c-parser.c (c_parser_conditional_expression): Pass original
15810         types to build_conditional_expr.
15811         * c-tree.h (build_conditional_expr): Update declaration.
15812
15813 2009-06-19  Ian Lance Taylor  <iant@google.com>
15814
15815         * config/i386/i386.c (ix86_function_specific_save): Test that
15816         fields match values, rather than testing the values are in a
15817         certain range.
15818
15819 2009-06-19  Richard Guenther  <rguenther@suse.de>
15820
15821         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
15822         ADDR_EXPR pointers.
15823         (ptr_derefs_may_alias_p): Likewise.
15824         (ptr_deref_may_alias_ref_p_1): New function.
15825         (ptr_deref_may_alias_ref_p): Likewise.
15826         (ref_maybe_used_by_call_p_1): Handle builtins that are not
15827         covered by looking at the ESCAPED solution.
15828         (call_may_clobber_ref_p_1): Likewise.
15829         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
15830         Handle NULL_TREE offset.  Do not produce redundant constraints.
15831         (process_all_all_constraints): New helper function.
15832         (do_structure_copy): Use it.
15833         (handle_lhs_call): Likewise.
15834         (find_func_aliases): Handle some builtins with pointer arguments
15835         and/or return values explicitly.
15836
15837 2009-06-19  Ian Lance Taylor  <iant@google.com>
15838
15839         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
15840
15841 2009-06-19  Ian Lance Taylor  <iant@google.com>
15842
15843         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
15844
15845 2009-06-19  Ian Lance Taylor  <iant@google.com>
15846
15847         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
15848         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
15849         version.
15850
15851         * c-decl.c (finish_decl): If -Wc++-compat, warn about
15852         uninitialized const.
15853
15854 2009-06-19  Ian Lance Taylor  <iant@google.com>
15855
15856         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
15857         all uses.
15858
15859         * c-decl.c (in_struct, struct_types): Remove.
15860         (struct c_binding): Add in_struct field.
15861         (c_binding_ptr): Define type, along with VEC.
15862         (struct c_struct_parse_info): Define.
15863         (struct_parse_info): New static variable.
15864         (bind): Initialize in_struct field.
15865         (start_struct): Remove enclosing_in_struct and
15866         enclosing_struct_types parameters.  Add
15867         enclosing_struct_parse_info parameter.  Change all callers.  Set
15868         struct_parse_info rather than in_struct and struct_types.
15869         (grokfield): If -Wc++-compat and there is a symbol binding for the
15870         field name, set the in_struct flag and push it on the
15871         struct_parse_info->fields vector.
15872         (warn_cxx_compat_finish_struct): New static function.
15873         (finish_struct): Remove enclosing_in_struct and
15874         enclosing_struct_types parameters.  Add
15875         enclosing_struct_parse_info parameter.  Change all callers.  Don't
15876         set C_TYPE_DEFINED_IN_STRUCT here.  Call
15877         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
15878         parameter.  Only push on struct_types if warn_cxx_compat.
15879         (finish_enum): Only push on struct_types if warn_cxx_compat.
15880         (declspecs_add_type): Add loc parameter.  Change all callers.
15881         Change all error calls to error_at.  Pass loc, not input_location,
15882         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
15883         defined in a struct.  If -Wc++-compat and parsing a struct, record
15884         that a typedef name was used.
15885         * c-parser.c (c_parser_declspecs): Get location to pass to
15886         declspecs_add_type.
15887         (c_parser_struct_or_union_specifier): Update calls to start_struct
15888         and finish_struct.
15889         * c-tree.h (struct c_struct_parse_info): Declare.
15890         (finish_struct, start_struct): Update declarations.
15891         (declspecs_add_type): Update declaration.
15892
15893 2009-06-19  Ian Lance Taylor  <iant@google.com>
15894
15895         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
15896         variable with an anonymous type.
15897
15898 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15899
15900         * see.c: Remove for real.
15901
15902 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
15903
15904         * optabs.h (enum optab_index): Add new OTI_significand.
15905         (significand_optab): Define corresponding macro.
15906         * optabs.c (init_optabs): Initialize significand_optab.
15907         * genopinit.c (optabs): Implement significand_optab using
15908         significand?f2 patterns.
15909         * builtins.c (expand_builtin_mathfn): Handle
15910         BUILT_IN_SIGNIFICAND{,F,L}.
15911         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
15912         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
15913
15914         * config/i386/i386.md (significandxf2, significand<mode>2): New
15915         expanders to implement significandf, significand and significandl
15916         built-ins as inline x87 intrinsics.
15917
15918 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
15919
15920         * config/avr/avr.c (avr_override_options): Remove setting value of
15921         PARAM_INLINE_CALL_COST.
15922
15923 2009-06-18  Richard Henderson  <rth@redhat.com>
15924
15925         PR 40488
15926         * tree-pass.h (TDF_ASMNAME): New.
15927         * tree-dump.c (dump_options): Add asmname.
15928         * doc/invoke.texi: Document it.
15929
15930         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
15931         (dump_decl_name): ...here.
15932         (dump_function_name): New flags arg; mind TDF_ASMNAME.
15933         (dump_generic_node): Update dump_function_name calls.
15934         (print_call_name): New flags arg; update all dump calls.
15935         * diagnostic.h (print_call_name): Update.
15936         * gimple-pretty-print.c (dump_gimple_call): Update.
15937
15938 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
15939
15940         PR target/40470
15941         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
15942
15943 2009-06-18  Diego Novillo  <dnovillo@google.com>
15944
15945         * doc/plugins.texi: Document plugin_is_GPL_compatible.
15946         * plugin.c (str_license): Declare.
15947         (try_init_one_plugin): Assert that the symbol
15948         'plugin_is_GPL_compatible' exists.
15949
15950 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
15951
15952         * see.c: Remove.
15953         * Makefile.in (OBJS-common): Remove see.o.
15954         (see.o): Remove.
15955         * common.opt (fsee): Mark as preserved for backward compatibility.
15956         * opts.c (common_handle_option): Add OPT_fsee to the backward
15957         compatibility section.
15958         * passes.c (init_optimization_passes, pass_see): Remove pass.
15959         * timevar.def (TV_SEE): Remove.
15960         * tree-pass.h (pass_see): Remove declaration.
15961         * doc/invoke.texi (-fsee): Remove documentation.
15962
15963 2009-06-18  Martin Jambor  <mjambor@suse.cz>
15964
15965         * tree-sra.c: Include statistics.h
15966         (sra_stats): New variable.
15967         (sra_initialize): Clear sra_stats.
15968         (create_access_replacement): Increment sra_stats.replacements.
15969         (get_access_replacement): Do not return twice.
15970         (analyze_all_variable_accesses): Increment statistics counter by the
15971         number of scalarized aggregates.
15972         (generate_subtree_copies): Increment sra_stats.subtree_copies.
15973         (sra_modify_expr): Increment sra_stats.exprs.
15974         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
15975         (sra_modify_assign): Increment sra_stats.exprs,
15976         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
15977         (perform_intra_sra): Update statistics counters.
15978         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
15979
15980 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15981
15982         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
15983         (arm_scalar_mode_supported_p): New function.
15984
15985 2009-06-18  Paul Brook  <paul@codesourcery.com>
15986             Sandra Loosemore  <sandra@codesourcery.com>
15987
15988         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
15989         (__extendhfsf2, __truncsfhf2): Define.
15990         * config/arm/fp16.c: New file.
15991         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
15992         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
15993
15994 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
15995
15996         * doc/extend.texi (Half-Precision): New section.
15997         * doc/invoke.texi (Option Summary): List -mfp16-format.
15998         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
15999         * config/arm/arm.opt (mfp16-format=): New.
16000         * config/arm/arm.c: Include intl.h.
16001         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
16002         (TARGET_INVALID_RETURN_TYPE): Redefine.
16003         (TARGET_PROMOTED_TYPE): Redefine.
16004         (TARGET_CONVERT_TO_TYPE): Redefine.
16005         (arm_fp16_format): Define.
16006         (all_fpus): Add entry for neon-fp16.
16007         (fp_model_for_fpu): Likewise.
16008         (struct fp16_format): Declare.
16009         (all_fp16_formats): Define.
16010         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
16011         functions.
16012         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
16013         and no ldrh.
16014         (arm_legitimate_index_p): Treat HFmode like HImode.
16015         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
16016         (coproc_secondary_reload_class): Special-case HFmode.
16017         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
16018         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
16019         (arm_init_fp16_builtins): New.
16020         (arm_init_builtins): Call it.
16021         (arm_invalid_parameter_type): New.
16022         (arm_invalid_return_type): New.
16023         (arm_promoted_type): New.
16024         (arm_convert_to_type).
16025         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
16026         format.
16027         (arm_emit_fp16_const): New function.
16028         (arm_mangle_type): Mangle __fp16 as "Dh".
16029         * config/arm/arm.h (TARGET_VFPD32): Make it know about
16030         FPUTYPE_NEON_FP16.
16031         (TARGET_NEON_FP16): New.
16032         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
16033         (enum fputype): Add FPUTYPE_NEON_FP16.
16034         (enum arm_fp16_format_type): Declare.
16035         (arm_fp16_format): Declare.
16036         (LARGEST_EXPONENT_IS_NORMAL): Define.
16037         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
16038         * config/arm/arm-modes.def (HFmode): Define.
16039         * config/arm/vfp.md (*movhf_vfp): New.
16040         (extendhfsf2): New.
16041         (truncsfhf2): New.
16042         * config/arm/arm.md (fpu): Add neon_fp16.
16043         (floatsihf2, floatdihf2): New.
16044         (fix_trunchfsi2, fix_trunchfdi2): New.
16045         (truncdfhf2): New.
16046         (extendhfdf2): New.
16047         (movhf): New.
16048         (*arm32_movhf): New.
16049         (*thumb1_movhf): New.
16050         (consttable_2): Add check for HFmode constants.
16051         (consttable_4): Handle HFmode constants.
16052
16053 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
16054
16055         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
16056
16057 2009-06-17  Olivier Hainque  <hainque@adacore.com>
16058
16059         * collect2.c (main): Use CONST_CAST2 to perform char ** to
16060         const char ** conversion in AIX specific section.
16061
16062 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
16063
16064         * config/i386/i386.c (ix86_special_builtin_type): Remove
16065         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
16066         (bdesc_special_args): Updated.
16067         (ix86_init_mmx_sse_builtins): Likewise.
16068         (ix86_expand_special_args_builtin): Likewise.
16069
16070 2009-06-17  Richard Henderson  <rth@redhat.com>
16071
16072         * tree-pretty-print.c (maybe_dump_asm_name): New.
16073         (dump_decl_name): Use it.
16074         (PRINT_FUNCTION_NAME): Merge into...
16075         (dump_function_name): ... here.  Use maybe_dump_asm_name.
16076
16077 2009-06-17  Cary Coutant  <ccoutant@google.com>
16078
16079         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
16080         Change caller.
16081         * debug.c (struct gcc_debug_hooks): Change placeholder for
16082         source_line hook.
16083         (debug_nothing_int_charstar_int): Replaced by...
16084         (debug_nothing_int_charstar_int_bool): ...this.
16085         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
16086         source_line prototype.
16087         (debug_nothing_int_charstar_int): Replaced by...
16088         (debug_nothing_int_charstar_int_bool): ...this.
16089         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
16090         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
16091         Output is_stmt operand when necessary.
16092         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
16093         (notice_source_line): Add is_stmt parameter.
16094         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
16095         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
16096         Change callers.
16097         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
16098         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
16099
16100 2009-06-17  Ian Lance Taylor  <iant@google.com>
16101
16102         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
16103         Change all uses.
16104         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
16105         call uses.
16106
16107 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
16108
16109         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
16110         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
16111         tree_strip_sign_nop_conversions and
16112         tree_ssa_strip_useless_type_conversions rather than stripping
16113         the operations here.
16114         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
16115         Declare them.
16116         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
16117         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
16118         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
16119         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
16120         functions.
16121
16122 2009-06-17  Michael Eager  <eager@eagercon.com>
16123
16124         * config/rs6000/constraints.md (register_constraint "d"): New.
16125         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
16126         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
16127         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
16128         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
16129         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
16130         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
16131         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
16132         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
16133         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
16134         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
16135         __fctiwz): Same.
16136         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
16137         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
16138         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
16139         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
16140         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
16141         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
16142         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
16143         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
16144         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
16145         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
16146         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
16147         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
16148         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
16149         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
16150
16151 2009-06-16  Ian Lance Taylor  <iant@google.com>
16152
16153         * profile.c (total_num_never_executed): Don't define.
16154         (compute_branch_probabilities): Don't count or print
16155         num_never_executed.
16156         (init_branch_prob): Don't set total_num_never_executed.
16157         (end_branch_prob): Don't print total_num_never_executed.
16158
16159 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
16160
16161         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
16162
16163 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
16164
16165         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
16166         (nabstd2_fpr): Same.
16167
16168 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
16169
16170         * expr.c (expand_assignment): Change complex type check.
16171
16172 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
16173
16174         * doc/plugins.texi (Building GCC plugins): Added new section.
16175
16176 2009-06-17  Ian Lance Taylor  <iant@google.com>
16177
16178         * c-pch.c (get_ident): Don't set size of templ array.
16179         (pch_init): Don't set size of partial_pch array.
16180
16181         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
16182         string constant to intialize an array whose size is the length of
16183         the string.
16184
16185 2009-06-17  Richard Guenther  <rguenther@suse.de>
16186
16187         PR tree-optimization/40389
16188         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16189         to addressable types.
16190         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16191
16192 2009-06-17  Richard Guenther  <rguenther@suse.de>
16193
16194         PR middle-end/40460
16195         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16196         if there is no evolution of left in the loop bail out.
16197         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16198         chrec_fold_multiply.
16199
16200 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16201             Janis Johnson  <janis187@us.ibm.com>
16202
16203         PR target/39254
16204         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16205         for the symbol ref of a constant that is the source of a move
16206         - nor for any other not-obvious-label-ref constants.
16207
16208 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16209
16210         * plugin.c (position_pass): Skip newly inserted pass during list
16211         traversal to avoid repeated insertion.
16212
16213 2009-06-16  Ian Lance Taylor  <iant@google.com>
16214
16215         * vec.h (VEC_stack_alloc): Define different version if
16216         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16217         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16218         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16219         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16220
16221 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16222
16223         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16224
16225         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16226         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16227         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16228         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16229         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16230         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16231         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16232         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16233         __builtin_ia32_rdtscp.
16234         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16235         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16236         and __builtin_ia32_rorhi.
16237         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16238         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16239         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16240         (ix86_expand_args_builtin): Likewise.
16241         (ix86_expand_special_args_builtin): Likewise.
16242
16243         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16244         (UNSPECV_RDTSC): Likewise.
16245         (UNSPECV_RDPMC): Likewise.
16246         (*bsr): Renamed to ...
16247         (bsr): This
16248         (*bsr_rex64): Renamed to ...
16249         (bsr_rex64): This.
16250         (rdpmc): New.
16251         (*rdpmc): Likewise.
16252         (*rdpmc_rex64): Likewise.
16253         (rdtsc): Likewise.
16254         (*rdtsc): Likewise.
16255         (*rdtsc_rex64): Likewise.
16256         (rdtscp): Likewise.
16257         (*rdtscp): Likewise.
16258         (*rdtscp_rex64): Likewise.
16259
16260         * config/i386/ia32intrin.h: New.
16261
16262         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16263
16264 2009-06-16  Ian Lance Taylor  <iant@google.com>
16265
16266         * ira-build.c (copy_info_to_removed_store_destinations):
16267         Initialize parent_a.
16268
16269 2009-06-16  Ian Lance Taylor  <iant@google.com>
16270
16271         * c-decl.c (grokdeclarator): Change size_varies to bool.
16272
16273 2009-06-16  Ian Lance Taylor  <iant@google.com>
16274
16275         * sel-sched.c: Make forward declarations of move_op_hooks and
16276         fur_hooks explicitly extern.
16277
16278 2009-06-16  Ian Lance Taylor  <iant@google.com>
16279
16280         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16281         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16282
16283 2009-06-16  Ian Lance Taylor  <iant@google.com>
16284
16285         * resource.c (mark_referenced_resources): Change
16286         include_delayed_effects parameter to bool.  Change all callers.
16287         (mark_end_of_function_resources): Likewise.
16288         * reorg.c (insn_references_resource_p): Likewise.
16289         (insn_sets_resource_p): Likewise.
16290         * resource.h (mark_referenced_resources): Update declaration.
16291         (mark_end_of_function_resources): Update declaration.
16292
16293 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16294
16295         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16296
16297 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16298
16299         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16300         GCC can bootstrap on AIX with GNU Binutils 2.20.
16301
16302 2009-06-16  Ian Lance Taylor  <iant@google.com>
16303
16304         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16305
16306 2009-06-16  Ian Lance Taylor  <iant@google.com>
16307
16308         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16309         inline, not extern inline.
16310         (exact_log2): Likewise.
16311         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16312         test CLZ_HWI.
16313         (exact_log2): Likewise, but don't test CTZ_HWI.
16314
16315 2009-06-16  Ian Lance Taylor  <iant@google.com>
16316
16317         * bitmap.c (bitmap_clear): Don't declare as inline.
16318         * gimple.c (gimplify_assign): Likewise.
16319         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16320         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16321         (sched_scan_info): Remove duplicate definition.
16322
16323 2009-06-16  Ian Lance Taylor  <iant@google.com>
16324
16325         * c-common.c (skip_evaluation): Don't define.
16326         (c_inhibit_evaluation_warnings): Define global variable.
16327         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16328         than skip_evaluation.
16329         (convert_and_check, warn_for_div_by_zero): Likewise.
16330         * c-common.h (skip_evaluation): Don't declare.
16331         (c_inhibit_evaluation_warnings): Declare.
16332         * c-parser.c (c_parser_typeof_specifier): Set
16333         c_inhibit_evaluation_warnings rather than skip_evaluation.
16334         (c_parser_conditional_expression): Likewise.
16335         (c_parser_binary_expression): Likewise.
16336         (c_parser_sizeof_expression): Likewise.
16337         (c_parser_alignof_expression): Likewise.
16338         * c-typeck.c (build_indirect_ref): Check
16339         c_inhibit_evaluation_warnings rather than skip_evaluation.
16340         (build_conditional_expr, build_binary_op): Likewise.
16341
16342 2009-06-16  Richard Guenther  <rguenther@suse.de>
16343
16344         * tree-ssa-alias.c (is_escape_site): Remove.
16345         * tree-ssa-alias.h (enum escape_type): Remove.
16346         (is_escape_site): Likewise.
16347         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16348         via casts and asms without deferring to is_escape_site.
16349
16350 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16351
16352         PR middle-end/40446
16353         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16354         use gen_lowpart if op0 has complex mode.
16355
16356 2009-06-16  Richard Guenther  <rguenther@suse.de>
16357
16358         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16359         variables add them to ESCAPED.
16360         (find_func_aliases): Do not make all indirectly stored values escaped.
16361
16362 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16363
16364         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16365         make_decl_one_only.
16366
16367 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16368
16369         PR tree-optimization/40432
16370         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16371         check whether we need to force gimple register operand.
16372
16373 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16374
16375         PR tree-optimization/40413
16376         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16377         build_ref_for_offset.
16378         (propagate_subacesses_accross_link): Fix a typo in a comment.
16379
16380 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16381
16382         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16383         with additional parameter.
16384         * tree-vectorizer.h (enum vect_def_type): Add new value
16385         vect_nested_cycle.
16386         (enum vect_relevant): Add comments.
16387         (vect_is_simple_reduction): Add new argument.
16388         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16389         Detect nested cycles.
16390         (vect_is_simple_reduction): Update documentation, add an argument to
16391         distinguish inner-loop reduction from nested cycle, detect nested
16392         cycles, fix printings and indentation, don't swap operands in case
16393         of nested cycle.
16394         (get_initial_def_for_reduction): Handle subtraction.
16395         (vect_create_epilog_for_reduction): Add new argument to specify
16396         reduction variable.
16397         (vect_finalize_reduction): Handle subtraction, fix comments.
16398         (vectorizable_reduction): Handle nested cycles. In case of nested
16399         cycle keep track of the reduction variable position. Call
16400         vect_is_simple_reduction with additional parameter. Use original
16401         statement code in reduction epilogue for nested cycle. Call
16402         vect_create_epilog_for_reduction with additional parameter.
16403         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16404         inner-loop vectorization.
16405         (vect_recog_widen_sum_pattern): Likewise.
16406         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16407         and reductions.
16408         (vect_mark_stmts_to_be_vectorized): Likewise.
16409         (vect_get_vec_def_for_operand): Handle nested cycles.
16410
16411 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16412
16413         * doc/invoke.texi (Debugging Options): Fix option index entries
16414         for -fdump-statistics, -frandom-seed add entries for
16415         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16416         (FRV Options): Fix entries for -mTLS, -mtls.
16417         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16418         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16419         (M68hc1x Options): Fix @itemx for -mnominmax.
16420         (MCore Options): Fix entry for -mno-lsim.
16421         (MMIX Options): Fix entry for -mabi=mmixware.
16422         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16423
16424 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16425
16426         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16427         Mention the plugin mode of gengtype.
16428         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16429         * gengtype.c: Updated copyright.
16430         (plugin_files, nb_plugin_files) Added new static variables.
16431         (measure_input_list) Care about plugin_files.
16432         (write_rtx_next): Added early return in plugin mode.
16433         (create_file): Updated copyright year in generated file. Added
16434         asserts.
16435         (oprintf): Added early return if NULL outf.
16436         (get_output_file_with_visibility): Care of plugin_files.
16437         (get_output_file_name): May return null.
16438         (write_local): Added early return.
16439         (put_mangled_filename): Ditto.
16440         (finish_root_table): Added check for base_files.
16441         (write_roots): Care about null when plugins.
16442         (main): Added plugin mode.
16443
16444 2009-06-15  Ian Lance Taylor  <iant@google.com>
16445
16446         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16447         * gcov.c (read_count_file): Add braces around variables declared
16448         before label.
16449
16450         * c.opt (Wjump-misses-init): New warning.
16451         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16452         -Wall and -Wc++-compat if not already set.
16453         (c_common_post_options): Clear warn_jump_misses_init if it was not
16454         set.
16455         * c-decl.c (struct c_binding): Change type field to a union with
16456         new label field.  Make it the first field in the struct.  Update
16457         references to type to use u.type instead.
16458         (struct c_spot_bindings): Define.
16459         (struct c_goto_bindings): Define.
16460         (c_goto_bindings_p): Define, along with VECs.
16461         (struct c_label_vars): Define.
16462         (struct c_scope): Add has_label_bindings field.
16463         (bind_label, set_spot_bindings): New static functions.
16464         (decl_jump_unsafe, update_spot_bindings): New static functions.
16465         (update_label_decls): New static function.
16466         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16467         Update binding u.label field to shadowed field.
16468         (c_binding_start_stmt_expr): New function.
16469         (c_binding_end_stmt_expr): New function.
16470         (pushdecl): Don't call c_begin_vm_scope.
16471         (make_label): Add defining and p_label_vars parameters.  Change
16472         all callers.
16473         (lookup_label): Correct test for whether a label has not yet been
16474         defined.  Call bind_label rather than bind.
16475         (warn_about_goto): New static function.
16476         (lookup_label_for_goto): New function.
16477         (declare_label): Call bind_label rather than bind.
16478         (check_earlier_gotos): New static function.
16479         (define_label): Don't give errors about jumping into statement
16480         expressions or scopes of variably modified types.  Call
16481         set_spot_bindings and check_earlier_gotos.  Call bind_label
16482         instead of bind.  Don't set label_context_stack_se or
16483         label_context_stack_vm.
16484         (c_get_switch_bindings): New function.
16485         (c_release_switch_bindings): New function.
16486         (c_check_switch_jump_warnings): New function.
16487         (start_function): Don't set label_context_stack_se or
16488         label_context_stack_vm.
16489         (finish_function): Likewise.
16490         * c-typeck.c (label_context_stack_se): Don't define.
16491         (label_context_stack_vm): Don't define.
16492         (c_finish_goto_label): Call lookup_label_for_goto rather than
16493         lookup_label.  Don't give errors about jumping into a statement
16494         expression or the scope of a variably modified type.  Don't set
16495         label_context_stack_se or label_context_stack_vm.
16496         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16497         fields.  Add bindings field.
16498         (c_start_case): Don't set deleted fields.  Set bindings field.
16499         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16500         or blocked_vm.  Call c_check_switch_jump_warnings.
16501         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16502         c_release_switch_bindings.
16503         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16504         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16505         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16506         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16507         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16508         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16509         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16510         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16511         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16512         (C_DECL_UNJUMPABLE_VM): Don't define.
16513         (C_DECL_UNDEFINABLE_VM): Don't define.
16514         (struct c_label_list): Don't define.
16515         (struct c_label_context_se): Don't define.
16516         (struct c_label_context_vm): Don't define.
16517         (struct c_spot_bindings): Declare.
16518         (c_bindings_start_stmt_expr): Declare.
16519         (c_bindings_end_stmt_expr): Declare.
16520         (lookup_label_for_goto): Declare.
16521         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16522         (c_check_switch_jump_warnings): Declare.
16523         (label_context_stack_se, label_context_stack_vm): Don't declare.
16524         (c_finish_goto_label): Update declaration.
16525         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16526         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16527         (Warning Options): Document -Wjump-misses-init.
16528
16529 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16530
16531         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16532         change.
16533
16534 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16535
16536         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16537
16538 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16539
16540         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16541
16542 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16543
16544         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16545
16546 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16547
16548         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16549         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16550         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16551         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16552         * dwarf2asm.c (dw2_force_const_mem): Update call to
16553         make_decl_one_only.
16554         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16555         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16556         * langhooks.c (lhd_comdat_group): Remove.
16557         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16558         * tree.h (DECL_COMDAT_GROUP): New.
16559         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16560         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16561         (make_decl_one_only): Change signature.
16562         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16563         make_decl_one_only.
16564         (make_decl_one_only): Change signature.
16565         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16566
16567 2009-06-15  Richard Guenther  <rguenther@suse.de>
16568
16569         PR middle-end/40439
16570         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16571
16572 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16573
16574         * tree-ssa-math-opts.c: Remove extra divide.
16575
16576 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16577
16578         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16579
16580 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16581
16582         * passes.c: Add bswap pass.
16583         * tree-pass.h: Add pass_optimize_bswap declaration.
16584         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16585         Include rtl.h, expr.h and optabs.h for optab_handler check.
16586         (struct symbolic_number, pass_optimize_bswap): New definition.
16587         (do_shift_rotate, verify_symbolic_number_p): New functions.
16588         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16589         (gate_optimize_bswap): New function.
16590         * tree.c (widest_int_cst_value): New function.
16591         * tree.h (widest_int_cst_value): Prototype added.
16592
16593 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16594
16595         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16596         REG_EQUAL/REG_EQUIV notes.
16597
16598 2009-06-14  Richard Guenther  <rguenther@suse.de>
16599
16600         PR middle-end/40389
16601         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16602         has its address taken if NRV was applied and it is addressable.
16603         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16604         function split out from ...
16605         (get_constraint_for_1): ... here.
16606         (handle_rhs_call): Use it to mark the return slot escaped if
16607         it is addressable and NRV was applied.
16608
16609 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16610
16611         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16612         Change first argument type to location_t.
16613         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
16614         Do not set input_location.
16615         Use loc instead of input_location throughout.
16616
16617 2009-06-13  Richard Guenther  <rguenther@suse.de>
16618
16619         PR tree-optimization/40421
16620         * tree-predcom.c (should_unroll_loop_p): Remove.
16621         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
16622
16623 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
16624
16625         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16626         Add location argument.
16627
16628 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16629
16630         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
16631         build_decl.
16632         * config/s390/s390.c (s390_build_builtin_va_list): Same.
16633         (s390_gimplify_va_arg): Pass location to create_artificial_label.
16634         * config/spu/spu-protos.h: Add location to
16635         spu_resolve_overloaded_builtin.
16636         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
16637         spu_build_builtin_va_list.
16638         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
16639         argument.  Pass location to build_function_call_vec.
16640         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
16641         build_decl.
16642         (emit_fpu_switch): Same.
16643         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
16644         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
16645         to build_decl and create_artificial_label.
16646         (xtensa_gimplify_va_arg_expr): Same.
16647         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
16648         (xstormy16_gimplify_va_arg_expr): Same.
16649         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
16650         * config/arm/arm.c (arm_build_builtin_va_list): Same.
16651         * config/mips/mips.c (mips_build_builtin_va_list): Same.
16652         (mips16_build_function_stub): Same.
16653         (mips16_build_call_stub): Same.
16654
16655 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
16656
16657         PR target/40327
16658         * arm/constraints.md (Pa, Pb): New constraints.
16659         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
16660         split pattern to deal with them.
16661
16662 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
16663
16664         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
16665         fix index entry for -Xpreprocessor.
16666
16667 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16668
16669         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
16670         Add location argument to build_decl call.
16671         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
16672         (rs6000_init_builtins): Same.
16673         (spe_init_builtins): Same.
16674         (rs6000_gimplify_va_arg): Add location argument to
16675         create_artificial_label call.
16676
16677 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
16678
16679         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
16680         * combine-stack-adj.c (pass_stack_adjustments): Use it.
16681         * Makefile.in: Fix GGC dependency for gcse.o.
16682
16683 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
16684
16685         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
16686         * gimple-pretty-print.c (dump_gimple_stmt): Same.
16687         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
16688         created.
16689         * c-parser.c (c_parser_binary_expression): Use current column while
16690         building binary operations.
16691         * common.opt (fshow-column): Enable by default.
16692         * tree-vrp.c (check_array_ref): Use warning_at.
16693         (check_array_bounds): Use location from call back if expr has no
16694         location.
16695         * tree.h: Add location argument to maybe_fold_*.
16696         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
16697         (maybe_fold_offset_to_array_ref): Add location argument and use it.
16698         (maybe_fold_offset_to_component_ref): Same.
16699         (maybe_fold_offset_to_reference): Same.
16700         (maybe_fold_offset_to_address): Same.
16701         (maybe_fold_stmt_indirect): Same.
16702         (maybe_fold_stmt_addition): Same.
16703         (fold_stmt_r): Pass location to maybe_fold_*.
16704         (fold_gimple_assign): Same.
16705         * c-tree.h: Add location argument to finish_decl,
16706         default_function_array_conversion, store_init_value.
16707         * c-decl.c (define_label): Use error_at.
16708         (c_make_fname_decl): Pass location to finish_decl.
16709         (finish_decl): New location argument.
16710         (build_compound_literal): Pass location to store_init_value.
16711         (grokdeclarator): Pass location to finish_decl.
16712         (grokfield): Same.
16713         * c-typeck.c (array_to_pointer_conversion): New location argument.
16714         (function_to_pointer_conversion): Same.
16715         (default_function_array_conversion): Same.
16716         (parser_build_unary_op): Pass location to overflow_warning.
16717         (parser_build_binary_op): Same.  Use warning_at.
16718         (build_unary_op): Pass location to array_to_pointer_conversion.
16719         (build_c_cast): Pass location to digest_init.
16720         (build_modify_expr): New location argument.
16721         (convert_for_assignment): Same.
16722         (store_init_value): Same.
16723         (digest_init): Same.
16724         (output_init_element): Pass location to digest_init and
16725         array_to_pointer_conversion.
16726         (c_finish_return): Pass location to convert_for_assignment.
16727         * gimplify.c (gimplify_conversion): Pass location to
16728         maybe_fold_offset_to_address.
16729         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
16730         to maybe_fold_stmt_addition.
16731         * c-omp.c (c_finish_omp_atomic): Pass new location to
16732         build_modify_expr.
16733         (c_finish_omp_for): Same.
16734         * c-common.c (overflow_warning): New argument.
16735         * c-common.h: New argument to build_modify_expr, overflow_warning.
16736         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
16737         finish_decl.
16738         (c_parser_initializer): Pass location to
16739         default_function_array_conversion.
16740         (c_parser_initelt): Same.
16741         (c_parser_initval): Same.
16742         (c_parser_asm_operands): Same.
16743         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
16744         (c_parser_conditional_expression): Same.
16745         (c_parser_binary_expression): Add location info to stack.  Use it.
16746         (c_parser_unary_expression): Pass location to
16747         default_function_array_conversion, parser_build_unary_op,
16748         build_indirect_ref, c_parser_postfix_expression_after_primary.
16749         (c_parser_postfix_expression_after_primary): New location argument.
16750         Use it.
16751         (c_parser_expression_conv): Pass location to
16752         default_function_array_conversion.
16753         (c_parser_expr_list): Same.
16754         (c_parser_omp_atomic): Same.
16755         (c_parser_omp_for_loop): Same.
16756         * c-tree.h (struct c_declarator): Add comment to id_loc.
16757         (build_array_declarator): New argument.
16758         * c-decl.c (build_array_declarator): Add location argument.
16759         (grokdeclarator): Set id_loc for cdk_array.
16760         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
16761         build_array_declarator.
16762         * tree.c (build_omp_clause): Add location argument.
16763         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
16764         (OMP_CLAUSE_LOCATION): New macro.
16765         (struct tree_omp_clause): Add location field.
16766         (build_omp_clause): Add argument.
16767         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
16768         build_omp_clause.
16769         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
16770         (cp_parser_omp_clause_collapse): Same.
16771         (cp_parser_omp_clause_default): Same.
16772         (cp_parser_omp_clause_if): Same.
16773         (cp_parser_omp_clause_nowait): Same.
16774         (cp_parser_omp_clause_num_threads): Same.
16775         (cp_parser_omp_clause_ordered): Same.
16776         (cp_parser_omp_clause_schedule): Same.
16777         (cp_parser_omp_clause_untied): Same.
16778         (cp_parser_omp_for_loop): Same.
16779         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16780         * c-tree.h (c_start_case): Add location argument.
16781         (c_process_expr_stmt): Same.
16782         (c_finish_goto_*): Same.
16783         * tree-parloops.c (initialize_reductions): Pass location to
16784         build_omp_clause.
16785         (create_parallel_loop): Same.
16786         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
16787         (gfc_trans_omp_reduction_list): Same.
16788         (gfc_trans_omp_clauses): Same.
16789         (gfc_trans_omp_do): Same.
16790         * c-typeck.c (c_finish_goto_label): Same.
16791         (c_finish_goto_ptr): New location argument.
16792         (c_start_case): Same.
16793         (emit_side_effect_warnings): Same.
16794         (c_process_expr_stmt): Same.
16795         (c_finish_stmt_expr): Same.
16796         (c_finish_omp_clauses): Use error_at instead of error.
16797         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
16798         build_omp_clause.
16799         * c-omp.c (c_split_parallel_clauses): New location argument.
16800         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
16801         to build_omp_clause.
16802         (convert_local_reference_stmt): Same.
16803         (convert_gimple_call): Same.
16804         * c-common.h (c_split_parallel_clauses): New argument.
16805         * c-parser.c (c_parser_statement_after_labels): Pass location to
16806         c_finish_goto_label.
16807         (c_parser_switch_statement): Pass location to c_start_case.
16808         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
16809         and c_process_expr_stmt.
16810         (c_parser_omp_variable_list): Add location argument.
16811         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
16812         (c_parser_omp_clause_default): Same.
16813         (c_parser_omp_clause_if): Same.
16814         (c_parser_omp_clause_num_threads): Same.
16815         (-c_parser_omp_clause_ordered): Same.
16816         (c_parser_omp_clause_reduction): Pass location to
16817         c_parser_omp_variable_list.
16818         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
16819         (c_parser_omp_clause_untied): Same.
16820         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
16821         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
16822
16823         * c-tree.h (check_for_loop_decls, undeclared_variable,
16824         build_component_ref, build_array_ref, build_external_ref,
16825         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
16826         build_conditional_expr, build_compound_expr, c_cast_expr,
16827         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
16828         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
16829         argument.
16830         * c-semantics.c (build_stmt): Same.
16831         (build_case_label): Same.
16832         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
16833         (undeclared_variable): New argument.
16834         (make_label): Same.
16835         (lookup_label): Pass location on down.
16836         (define_label): Same.
16837         (finish_decl): Same.
16838         (build_compound_literal): Same.
16839         (finish_struct): Same.
16840         (finish_function): Do not set location here.
16841         (check_for_loop_decls): New argument.
16842         * tree.c (save_expr): Set location.
16843         (build_empty_stmt): New argument.
16844         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
16845         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
16846         * builtins.c (gimplify_va_arg_expr): Use locations.
16847         (expand_builtin_sync_operation): Same.
16848         * c-typeck.c (build_component_ref): New argument.
16849         (build_array_ref): Same.
16850         (build_external_ref): Same.
16851         (c_expr_sizeof_expr): Same.
16852         (c_expr_sizeof_type): Same.
16853         (parser_build_unary_op): Same.
16854         (build_conditional_expr): Same.
16855         (build_compound_expr): Pass location on down.
16856         (build_compound_expr): New argument.
16857         (build_c_cast): Same.
16858         (c_cast_expr): Same.
16859         (build_asm_expr): Same.
16860         (c_finish_return): Same.
16861         (c_process_expr_stmt): Pass location on down.
16862         (c_finish_stmt_expr): New argument.
16863         (push_clenaup): Same.
16864         (c_finish_omp_parallel): Same.
16865         (c_finish_omp_task): Same.
16866         * gimplify.c (gimplify_call_expr): Pass location on down.
16867         * c-omp.c (c_finish_omp_master): New argument.
16868         (c_finish_omp_critical): Same.
16869         (c_finish_omp_ordered): Same.
16870         (c_finish_omp_barrier): Same.
16871         (-c_finish_omp_taskwait): Same.
16872         (c_finish_omp_atomic): Same.
16873         (c_finish_omp_flush): Same.
16874         * tree-inline.c (copy_tree_body_r): Pass location on down.
16875         (inline_forbidden_p): Remove use of input_location.
16876         * c-gimplify.c (c_build_bind_expr): New argument.
16877         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
16878         (c_sizeof_or_alignof_type): New argument.
16879         (c_alignof_expr): Same.
16880         (build_va_arg): Same.
16881         (c_add_case_label): Same.
16882         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
16883         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
16884         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
16885         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
16886         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
16887         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
16888         New argument.
16889         * stub-objc.c (objc_build_selector_expr): Same.
16890         (objc_build_throw_stmt): Same.
16891         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
16892         (c_parser_initelt): Same.
16893         (c_parser_compound_statement): Same.
16894         (c_parser_compound_statement_nostart): Same.
16895         (c_parser_label): Same.
16896         (c_parser_statement_after_labels): Same.
16897         (c_parser_if_body): Same.
16898         (c_parser_else_body): Same.
16899         (c_parser_if_statement): Same.
16900         (c_parser_switch_statement): Same.
16901         (c_parser_while_statement): Same.
16902         (c_parser_do_statement): Same.
16903         (c_parser_for_statement): Same.
16904         (c_parser_asm_statement): Same.
16905         (c_parser_conditional_expression): Same.
16906         (c_parser_binary_expression): Same.
16907         (c_parser_cast_expression): Same.
16908         (c_parser_unary_expression): Same.
16909         (c_parser_sizeof_expression): Same.
16910         (c_parser_alignof_expression): Same.
16911         (c_parser_postfix_expression): Same.
16912         (c_parser_expression): Same.
16913         (c_parser_objc_receiver): Same.
16914         (c_parser_omp_variable_list): Same.
16915         (c_parser_omp_structured_block): Same.
16916         (c_parser_omp_atomic): New argument.
16917         (c_parser_omp_barrier): Same.
16918         (c_parser_omp_critical): Same.
16919         (c_parser_omp_flush): Pass location on down.
16920         (c_parser_omp_for_loop): New argument.
16921         (c_parser_omp_for): Same.
16922         (c_parser_omp_master): Same.
16923         (c_parser_omp_ordered): Same.
16924         (c_parser_omp_sections_scope): Same.
16925         (c_parser_omp_sections): Same.
16926         (c_parser_omp_parallel): Same.
16927         (c_parser_omp_single): Same.
16928         (c_parser_omp_task): Same.
16929         (c_parser_omp_taskwait): Pass location on down.
16930         (c_parser_omp_construct): Same.
16931         (c_parser_omp_threadprivate): Same.
16932         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
16933         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
16934         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
16935         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
16936         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
16937         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
16938         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
16939         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
16940         config/i386/i386.c, stmt.c:
16941         Add location argument to the following function definitions and/or
16942         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
16943         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
16944         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
16945         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
16946         do_case, c_finish_bc_stmt, build_compound_literal,
16947         build_function_call.
16948         * c-decl.c (build_compound_literal): Add location argument.
16949         Make all diagnostic calls use location.
16950         (start_struct): Same.
16951         (finish_struct): Same.
16952         (start_enum): Same.
16953         (build_enumerator): Same.
16954         (start_function): Same.
16955         (grokdeclarator): Make all diagnostic calls use location.
16956         (store_parm_decls_oldstyle): Same.
16957         * c-typeck.c (build_function_call): Add location argument.
16958         Make all diagnostic calls use location.
16959         (do_case): Same.
16960         (c_finish_bc_stmt): Same.
16961         * tree-nested.c (get_trampoline_type): Add argument.
16962         Pass location to build_decl.
16963         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
16964         * rtl.h (RTL_LOCATION): New.
16965         * c-common.c (c_add_case_label): Add location argument.
16966         Make all diagnostic calls use location.
16967         * c-common.h: Add location argument to make_fname_decl, do_case,
16968         c_add_case_label, build_function_call, resolve_overloaded_builtin.
16969         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
16970         Set it appropriately for every case.  Pass enum_loc to start_enum
16971         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
16972         parser_xref_tag.
16973         (c_parser_struct_or_union_specifier): Save location.  Use it for
16974         start_struct, finish_struct, and parser_xref_tag.
16975
16976 2009-06-12  Ian Lance Taylor  <iant@google.com>
16977
16978         * fold-const.c (fold_unary): Rename local variable and to and_expr.
16979
16980         * c-opts.c (c_common_handle_option): For -Wc++-compat set
16981         cpp_opts->warn_cxx_operator_names.
16982
16983 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16984
16985         PR tree-opt/38865
16986         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
16987         is returns NULL and OP is a VCE, look through the VCE.
16988
16989 2009-06-12  Ian Lance Taylor  <iant@google.com>
16990
16991         PR bootstrap/40430
16992         * collect2.c (main): Use CONST_CAST2 in code inside #if
16993         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
16994
16995 2009-06-12  Joey Ye  <joey.ye@intel.com>
16996
16997         PR middle-end/39146
16998         * cfgexpand.c (get_decl_align_unit): Update
16999         max_used_stack_slot_alignment with align instead of
17000         stack_alignment_needed.
17001
17002         * function.c (assign_stack_local_1): Update
17003         max_used_stack_slot_alignment with alignment_in_bits instead
17004         of stack_alignment_needed.
17005         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
17006         here.
17007
17008 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
17009
17010         * dwarf2out.c (last_var_location_insn): New variable.
17011         (dwarf2out_end_epilogue): Clear last_var_location_insn.
17012         (dwarf2out_var_location): Don't record anything after last real
17013         insn.  Only change labels if there were any real instructions
17014         in between last note and this one, or if changed sections.
17015
17016 2009-06-11  Richard Henderson  <rth@redhat.com>
17017
17018         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
17019         note when storing the frame pointer in a register.
17020         (FRP): Don't redefine to nothing for epilogue.
17021         (alpha_expand_epilogue): Mark register and sp restores.
17022         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
17023
17024         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
17025         when gen_lowpart is needed.
17026
17027 2009-06-11  Richard Henderson  <rth@redhat.com>
17028
17029         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
17030
17031         * dwarf2out.c (need_data_align_sf_opcode): New.
17032         (div_data_align): Move earlier.
17033         (def_cfa_1, reg_save): Use it.
17034
17035 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
17036
17037         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
17038         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
17039         (ix86_handle_option): Handle OPT_mcrc32.
17040         (ix86_target_string): Add -mcrc32.
17041         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
17042
17043         * config/i386/i386.h (TARGET_CRC32): New.
17044
17045         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
17046         (sse4_2_crc32di): Likewise.
17047
17048         * config/i386/i386.opt (mcrc32): New.
17049
17050         * doc/invoke.texi: Document -mcrc32.
17051
17052 2009-06-11  Richard Henderson  <rth@redhat.com>
17053
17054         * common.opt (gdwarf-): Accept a version number.
17055         * doc/invoke.texi (gdwarf-): Update docs.
17056         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
17057         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
17058         version level, and record it.
17059
17060         * dwarf2.h (DW_CIE_VERSION): Remove.
17061         * dwarf2out.c (DWARF_VERSION): Remove.
17062         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
17063         (output_call_frame_info): Use CIE version 3 for dwarf3,
17064         or if the return register column is out of range for version 1.
17065         (dwarf_stack_op_name): Add all dwarf3 values.
17066         (DEBUG_PUBTYPES_SECTION): New.
17067         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
17068         encoding change for dwarf3.
17069         (output_die) [dw_val_class_die_ref]: Likewise.
17070         (output_compilation_unit_header): Emit correct version for dwarf3.
17071         (output_line_info): Likewise.
17072         (output_pubnames): Update for DWARF_VERSION removal.
17073         (output_aranges): Likewise.
17074         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
17075         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
17076         (dwarf2out_finish): Likewise.
17077
17078 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17079
17080         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
17081         in r148403.
17082
17083 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17084
17085         PR c/39252
17086         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
17087         * builtins.c (expand_builtin_unreachable): New function.
17088         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
17089         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
17090         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
17091         successors.
17092         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
17093         searching for missing barriers.
17094
17095 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17096
17097         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
17098         when -fprofile-generate* was passed.
17099         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17100
17101 2009-06-11  Anthony Green  <green@moxielogic.com>
17102
17103         * config/moxie/moxie.md: Define length attribute for all instructions.
17104         (rCC): Define.
17105         (*b<cond:code>): Support limited branch ranges for new PC-relative
17106         branch instructions.
17107         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
17108
17109 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
17110
17111         * config/i386/i386.c (min_insn_size): Use get_attr_length
17112         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
17113         For __asm return 0.
17114
17115         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
17116         instead of emit_insn_before.
17117
17118 2009-06-10  Ian Lance Taylor  <iant@google.com>
17119
17120         PR bootstrap/40408
17121         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
17122         GIMPLE_SWITCH.
17123
17124 2009-06-10  Revital Eres  <eres@il.ibm.com>
17125
17126         * passes.c (init_optimization_passes): Reschedule
17127         predictive-commoning pass before complete unroll pass.
17128
17129 2009-06-10  Martin Jambor  <mjambor@suse.cz>
17130
17131         * cgraph.c (cgraph_node_can_be_local_p): New function.
17132         (cgraph_make_node_local): New function.
17133         * cgraph.h (cgraph_node_can_be_local_p): Declare.
17134         (cgraph_make_node_local): Declare.
17135
17136 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
17137
17138         * tree.h (tree_base): Add packed_flag and user_align fields.
17139         Decrease size of spare field.
17140         (TYPE_USER_ALIGN): Use user_align from tree_base.
17141         (DECL_USER_ALIGN): Likewise.
17142         (TYPE_PACKED): Use packed_flag from tree_base.
17143         (DECL_PACKED): Likewise.
17144         (tree_type): Delete packed_flag and user_align fields.  Widen
17145         precision field.  Widen mode field and shuffle fields to align
17146         mode on an 8-bit boundary.
17147         (tree_decl_common): Delete decl_flag_1 and user_align fields.
17148         Renumber decl_flag_* fields.  Fix comments.  Widen
17149         decl_common_unused field.
17150         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
17151         (DECL_EXTERNAL): Likewise.
17152         (DECL_BIT_FIELD): Likewise.
17153         (DECL_NONADDRESSABLE_P): Likewise.
17154         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
17155         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
17156
17157 2009-06-10  Ian Lance Taylor  <iant@google.com>
17158
17159         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
17160         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
17161         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
17162         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
17163         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
17164         DEF_VEC_ALLOC_FUNC_P.
17165         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
17166         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
17167         DEF_VEC_ALLOC_FUNC_O.
17168         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
17169         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
17170         DEF_VEC_ALLOC_FUNC_I.
17171         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
17172         (vec_stack_p_reserve_exact_1): Declare.
17173         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
17174         (vec_stack_free): Declare.
17175         (VEC_stack_alloc): Define.
17176         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
17177         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
17178         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
17179         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
17180         for void_p.
17181         (stack_vecs): New static variable.
17182         (vec_stack_p_reserve_exact_1): New function.
17183         (vec_stack_o_reserve_1): New static function.
17184         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17185         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17186         (vec_stack_free): New function.
17187         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17188         (VEC_df_ref_stack_alloc): Define.
17189         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17190         DEF_VEC_ALLOC_P_STACK.
17191         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17192         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17193         _use fields.
17194         (df_free_collection_rec): Adjust for new fields.
17195         (df_insn_rescan): Use new df_collection_rec fields.
17196         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17197         (df_ref_create_structure, df_ref_record): Likewise.
17198         (df_get_conditional_uses, df_get_call_refs): Likewise.
17199         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17200         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17201         (df_record_exit_block_uses, df_bb_verify): Likewise.
17202         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17203         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17204         Remove count parameter.  Change return type to void.  Change all
17205         callers.
17206         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17207         Remove count parameter.  Change return type to void.  Change all
17208         callers.
17209         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17210         parameter.  Change all callers.
17211         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17212         parameter.  Change all callers.
17213         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17214         callers.
17215         (df_mws_verify): Likewise.
17216
17217 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17218
17219         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17220
17221 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17222
17223         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17224
17225 2009-06-10  Anthony Green  <green@moxielogic.com>
17226
17227         * config/moxie/crti.asm: New file.
17228         * config/moxie/crtn.asm: New file.
17229         * config/moxie/moxie.c: New file.
17230         * config/moxie/moxie.h: New file.
17231         * config/moxie/sfp-machine.h: New file.
17232         * config/moxie/moxie-protos.h: New file.
17233         * config/moxie/t-moxie: Created.
17234         * config/moxie/t-moxie-softfp: Created.
17235         * config/moxie/moxie.md: Created.
17236         * config/moxie/constraints.md: Created.
17237         * config.gcc: Add moxie support.
17238         * doc/md.texi (Machine Constraints): Add moxie constraints.
17239         * doc/contrib.texi (Contributors): Mention moxie port.
17240         * doc/install.texi (Specific): Mention the moxie port.
17241
17242 2009-06-09  Ian Lance Taylor  <iant@google.com>
17243
17244         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17245         compiling with C++.
17246         * optabs.c (optab_table): Only use designated initializers if
17247         HAVE_DESIGNATED_INITIALIZERS is defined.
17248         (convert_optab_table): Likewise.
17249         (init_optabs): Always call init_insn_codes if
17250         HAVE_DESIGNATED_INITIALIZERS is not defined.
17251
17252 2009-06-09  Ian Lance Taylor  <iant@google.com>
17253
17254         * targhooks.c (default_builtin_vectorized_function): Change fn
17255         parameter to unsigned int.
17256         (default_builtin_vectorized_conversion): Change code parameter to
17257         unsigned int.
17258         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17259         * targhooks.h: Update declarations.
17260         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17261         parameter to unsigned int.
17262
17263         * c-typeck.c (comptypes_check_enum_int): New static function.
17264         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17265         callers.
17266         (comp_target_types): Add location parameter.  Change all callers.
17267         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17268         Change all callers.
17269         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17270         (build_conditional_expr): Add colon_loc parameter.  Change all
17271         callers.
17272         (convert_for_assignment): Add location parameter.  Change all callers.
17273         * c-parser.c (c_parser_conditional_expression): Pass location of
17274         colon to build_conditional_expr.
17275         * c-tree.h (build_conditional_expr): Update declaration.
17276
17277 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17278
17279         * graphite.c: Revert previous patch.
17280
17281 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17282
17283         PR bootstrap/40103
17284         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17285
17286 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17287
17288         * tree-ssa-loop-prefetch.c
17289         (loop_prefetch_arrays): Fixed a portability problem in printf format
17290         string.
17291
17292 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17293
17294         PR tree-optimization/40351
17295         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17296         refrence to a potential artifical subaccess can be constructed.
17297
17298 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17299
17300         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17301         (sh_override_options): Likewise.
17302         * config/sh/sh.c: Include params.h.
17303         (sh_optimization_options): New.
17304         (sh_override_options): Likewise.
17305         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17306         (OVERRIDE_OPTIONS): Use sh_override_options.
17307
17308 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17309
17310         * dwarf2out.c (emit_cfa_remember): New variable.
17311         (add_fde_cfi): If emit_cfa_remember, recurse to add
17312         DW_CFA_remember_state first.
17313         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17314         instead just set emit_cfa_remember.
17315
17316 2009-06-08  Jan Hubicka  <jh@suse.cz>
17317
17318         PR debug/40126
17319         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17320
17321 2009-06-08  Jan Hubicka  <jh@suse.cz>
17322
17323         PR middle-end/39834
17324         * cgraphunit.c (save_inline_function_body): Do not copy transform
17325         hooks for saved inline bodies.
17326         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17327         for given function.
17328
17329 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17330
17331         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17332         function comment.
17333
17334 2009-06-08  Jan Hubicka  <jh@suse.cz>
17335
17336         PR middle-end/40102
17337         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17338         original node might've been modified.
17339         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17340
17341 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17342
17343         * tree-object-size.c (addr_object_size): Add OSI argument.
17344         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17345         (compute_builtin_object_size, expr_object_size): Adjust callers.
17346         (plus_stmt_object_size): Call addr_object_size instead of
17347         compute_builtin_object_size.
17348
17349 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17350             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17351
17352         * tree-ssa-loop-prefetch.c
17353         (gather_memory_references): Introduced a counter for the number of
17354         memory references.
17355         (anything_to_prefetch_p): Introduced a counter for the number of
17356         prefetches.
17357         (is_loop_prefetching_profitable): New function with a cost model
17358         for prefetching.
17359         (loop_prefetch_arrays): Use the new cost model to determine if
17360         prefetching is profitable.
17361         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17362         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17363         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17364         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17365         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17366         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17367
17368 2009-06-08  Michael Matz  <matz@suse.de>
17369
17370         PR debug/40012
17371         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17372         partitions use the same.
17373         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17374         for basevars of SSA_NAMEs.
17375         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17376         to not expand them twice.
17377         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17378         multiple places.
17379
17380 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17381
17382         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17383         (fdump-final-insns=, gtoggle): New.
17384         * doc/invoke.texi: Document them.
17385         * final.c (rest_of_clean_state): Dump final insn stream.
17386         * gcc.c (invoke_as): Hook in -fcompare-debug.
17387         (static_spec_functions): Add compare-debug-dump-opt,
17388         compare-debug-self-opt and compare-debug-auxbase-opt.
17389         (compare_debug, compare_debug_second, compare_debug_opt): New.
17390         (switches_debug_check, n_switches_debug_check): New.
17391         (debug_auxbase_opt, debug_check_temp_file): New.
17392         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17393         -fcompare-debug=*.
17394         (do_self_spec): Handle arguments after switches.
17395         (do_spec_1): Add .gk extension to temp file basenames for compare.
17396         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17397         (cc1_options): Use it instead of normal auxbase computation for
17398         the second compare-debug compilation.
17399         (compare_files): New.
17400         (main): Set up and implement compare debug mode.
17401         (compare_debug_dump_opt_spec_function): New.
17402         (compare_debug_self_opt_spec_function): New.
17403         (compare_debug_auxbase_opt_spec_function): New.
17404         * toplev.c (process_options): Handle flag_gtoggle,
17405         flag_dump_final_insns.
17406         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17407         during -fcompare-debug-second compilation.
17408
17409 2009-06-07  Ian Lance Taylor  <iant@google.com>
17410
17411         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17412         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17413
17414         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17415         with no default node.  Change warning with %H to warning_at.
17416         Don't clear warn_switch around case checking.
17417         * doc/invoke.texi (Warning Options): Clarify distinction between
17418         -Wswitch and -Wswitch-enum.
17419
17420 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17421
17422         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17423
17424 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17425
17426         * gbl-ctors.h: Add header guard.
17427
17428 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17429
17430         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17431         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17432         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17433         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17434         prototypes for removed functions.
17435         (expressions_equal_p): Move to ...
17436         * tree-ssa-sccvn.h: ... here and ...
17437         * matrix-reorg.c: ... adjust includes.
17438
17439 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17440
17441         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17442
17443 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17444
17445         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17446         (finish_function): Remove erroneous whitespace.
17447
17448 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17449
17450         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17451         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17452
17453 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17454
17455         * errors.c (internal_error): Commentary typo fix.
17456         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17457         * tree-ssa-pre.c: Ditto.
17458
17459 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17460
17461         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17462         them is supposed to hold actual statements.
17463
17464 2009-06-06  Ian Lance Taylor  <iant@google.com>
17465
17466         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17467         empty statements can now have attributes.
17468
17469 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17470
17471         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17472         * config/mips/mips.md: Ditto.
17473
17474 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17475
17476         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17477         _RELOCATABLE.
17478         (__eabi_uconvert): Likewise.
17479
17480 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17481
17482         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17483         CFI_* definitions with IN_GCC.
17484
17485 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17486
17487         * xcoffout.h (xcoffout_source_line): Update prototype.
17488
17489 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17490
17491         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17492         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17493
17494 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17495
17496         PR middle-end/40340
17497         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17498         inlined_function_outer_scope_p blocks for artificial inlines
17499         even at -g0/-g1.
17500         * tree.c (tree_nonartificial_location): Rewrite using
17501         block_nonartificial_location.
17502
17503 2009-06-05  Revital Eres  <eres@il.ibm.com>
17504             Leehod Baruch  <leehod@il.ibm.com>
17505
17506         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17507         (expand_expr_real_1): Remove comment.
17508         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17509         Vectorize misaligned access when the target supports it.
17510         (vect_supportable_dr_alignment): Check for unaligned access support.
17511         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17512         and remove asset.
17513
17514 2009-06-05  Julian Brown  <julian@codesourcery.com>
17515
17516         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17517         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17518
17519 2009-06-05  Richard Guenther  <rguenther@suse.de>
17520
17521         PR bootstrap/40350
17522         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17523         as possibly unused.
17524
17525 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17526
17527         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17528         (save_gprs): Don't tell unwinder when a global register is saved.
17529         (s390_emit_epilogue): Emit needed epilogue unwind info.
17530
17531 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17532
17533         * dwarf2out.c (deferred_asm_name): New.
17534         (add_name_and_src_coords_attributes): Defer creation of
17535         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17536         computed yet.
17537         (move_linkage_attr): New.
17538         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17539         right place.
17540
17541 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17542
17543         * tree-nested.c (finalize_nesting_tree_1): Declare the
17544         frame_decl in the binding tree.
17545
17546 2009-06-04  Cary Coutant  <ccoutant@google.com>
17547
17548         * basic-block.h (struct basic_block_def): Add discriminator field.
17549         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17550         callers.
17551         * debug.c (do_nothing_debug_hooks): Add additional entry.
17552         (debug_nothing_int_charstar_int): New function.
17553         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17554         (debug_nothing_int_charstar_int): New declaration.
17555         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17556         discriminator value in .loc directive.
17557         * final.c (last_discriminator): New variable.
17558         (discriminator): New variable.
17559         (final_start_function): Initialize above variables, pass current
17560         discriminator to debug hook.
17561         (notice_source_line): Check for discriminator change.
17562         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17563         * sdbout.c (sdbout_source_line): New parameter.
17564         * tree-cfg.c (struct locus_discrim_map): New structure type.
17565         (discriminator_per_locus): New hash table.
17566         (build_gimple_cfg): Allocate and free discriminator hash table.
17567         (make_edges): Call assign_discriminator.
17568         (locus_map_hash): New function.
17569         (locus_map_eq): New function.
17570         (next_discriminator_for_locus): New function.
17571         (same_line_p): New function.
17572         (assign_discriminator): New function.
17573         (make_cond_expr_edges): Call assign_discriminator.
17574         (make_gimple_switch_edges): Likewise.
17575         (first_non_label_stmt): New function.
17576         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17577         all callers.
17578         * xcoffout.c (xcoffout_source_line): Add new parameter.
17579
17580         * configure.ac (gcc_cv_as_discriminator): New configury check for
17581         gas support for discriminator.
17582         * configure: Regenerate.
17583         * config.in: Regenerate.
17584
17585 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17586
17587         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17588         val after checking for integers.
17589
17590 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17591
17592         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17593         X64_REGPARM_MAX.
17594         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17595         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17596         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17597         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17598         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17599         X64_SSE_REGPARM_MAX.
17600         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17601         X64_SSE_REGPARM_MAX.
17602
17603 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17604
17605         * gcc.c (report_times_to_file): New.
17606         (execute): Implement it.
17607         (process_command): Support -time=.
17608         * doc/invoke.texi: Document it.
17609
17610 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17611
17612         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17613         that have value exprs.
17614
17615 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17616
17617         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
17618         declarations for constants until...
17619         (dw2_output_indirect_constant_1): ... this point.
17620
17621 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
17622
17623         PR target/10242
17624         * arm.md (arm_addsi3): Don't try to split an add with an
17625         eliminable register until after reload has completed.
17626
17627 2009-06-03  Ian Lance Taylor  <iant@google.com>
17628
17629         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
17630         * genattrtab.c (write_length_unit_log): Likewise.
17631         * genchecksum.c (dosum): Likewise.
17632         * gengtype.c (write_rtx_next): Likewise.
17633         (finish_root_table, write_roots): Likewise.
17634         * gimple.c (gimple_ops_offset_): Likewise.
17635         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
17636         * config/arc/arc.c (arc_attribute_table): Likewise.
17637         * config/arm/arm.c (arm_attribute_table): Likewise.
17638         * config/avr/avr.c (avr_attribute_table): Likewise.
17639         * config/crx/crx.c (crx_attribute_table): Likewise.
17640         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
17641         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
17642         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
17643         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
17644         * config/sh/sh.c (sh_attribute_table): Likewise.
17645         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
17646         * config/spu/spu.c (spu_attribute_table): Likewise.
17647         * config/v850/v850.c (v850_attribute_table): Likewise.
17648
17649         * config/alpha/alpha.c (vms_attribute_table): Make static.
17650         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
17651         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
17652         * config/mips/mips.c (mips_attribute_table): Likewise.
17653
17654         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
17655         $(SYSTEM_H).
17656         (cc1-checksum.o): Likewise.
17657
17658 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
17659
17660         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
17661
17662 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
17663
17664         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
17665         insn if it is changing sp.  Use gen_add3_insn instead of
17666         conditionally gen_addsi3 and gen_adddi3.
17667         (offset_below_red_zone_p): New static inline function.
17668         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
17669         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
17670         * config/rs6000/ppc-asm.h: Include auto-host.h.
17671         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
17672         CFI_RESTORE): Define.
17673         * config/rs6000/crtresxgpr.asm: Add unwind info.
17674         * config/rs6000/crtresxfpr.asm: Likewise.
17675         * config/rs6000/crtresgpr.asm: Likewise.
17676         * config/rs6000/crtresfpr.asm: Likewise.
17677         * config/rs6000/crtsavgpr.asm: Likewise.
17678         * config/rs6000/crtsavfpr.asm: Likewise.
17679
17680         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
17681         argument of DWARF2_FRAME_REG_OUT macros.
17682
17683 2009-06-03  Julian Brown  <julian@codesourcery.com>
17684
17685         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
17686         words or less (including TImode) in core registers.
17687
17688 2009-06-03  Richard Guenther  <rguenther@suse.de>
17689
17690         PR middle-end/40328
17691         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
17692
17693 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
17694
17695         * statistics.c (statistics_counter_event): Do not record event
17696         in pass dump if its number == -1.
17697         (curr_statistics_hash): Add assert that we never get passes
17698         with static number == -1.
17699
17700 2009-06-03  Richard Guenther  <rguenther@suse.de>
17701             Andrey Belevantsev  <abel@ispras.ru>
17702
17703         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
17704         non-BLKmode arrays addressable.
17705
17706 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
17707
17708         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
17709         * config/m68k/m68k.h: ... here.
17710
17711 2009-06-03  Martin Jambor  <mjambor@suse.cz>
17712
17713         PR tree-optimization/40323
17714         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
17715         assignment.
17716
17717 2009-06-03  Richard Guenther  <rguenther@suse.de>
17718
17719         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17720         consistently.
17721
17722 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
17723
17724         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
17725         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
17726         JUMP_TABLE_DATA_P where applicable.
17727         * config/sh/sh.c: Ditto.
17728         * config/sh/sh.h: Ditto.
17729         * config/sh/sh.md: Ditto.
17730         * config/sh/symbian.c: Ditto.
17731
17732 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
17733
17734         * config/i386/driver-i386.c (describe_cache): Optimize
17735         concatenation of strings.  Use snprintf instead of sprintf.
17736         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
17737         target when not compiling with GCC.
17738
17739 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
17740
17741         * config/sh/sh.c: Revert last change.
17742         (sh_expand_epilogue): Emit a blockage insn before the frame
17743         pointer adjustment unconditionally.
17744
17745 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17746
17747         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
17748         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
17749         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
17750         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
17751         to COLLECT_GCC_OPTIONS.
17752
17753 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17754
17755         * collect2.c (target_system_root): New variable.
17756         (main): Handle --sysroot=.
17757         (ignore_library): Strip the sysroot from the library path.
17758
17759 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17760
17761         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
17762         (collect2.o): Depend on collect2-aix.h.
17763         (collect2-aix.o): New rule.
17764         * collect2-aix.h: New file.
17765         * collect2-aix.c: Likewise.
17766         * collect2.c: Include collect2-aix.h.  Don't undefine
17767         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
17768         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
17769         Use TARGET_AIX_VERSION instead of _AIX51.
17770         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
17771         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
17772         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
17773         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
17774         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
17775
17776 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17777
17778         * collect2.c (ignore_library): Avoid premature post-increment
17779         and null deference.
17780
17781 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
17782
17783         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
17784         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
17785         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
17786         CROSS_DIRECTORY_STRUCTURE too.
17787         (LINK_LIBG_SPEC): Likewise.
17788         (LIB_SPEC): Add %R to sysroot paths.
17789         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
17790         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
17791         * config/rs6000/aix51.h: As for aix43.h.
17792         * config/rs6000/aix52.h: Likewise.
17793         * config/rs6000/aix53.h: Likewise.
17794         * config/rs6000/aix61.h: Likewise.
17795         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
17796         to the beginning of sysroot paths.
17797
17798 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17799
17800         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
17801         INSN_LISTs that are out of the REG_NOTE range.
17802
17803 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17804
17805         * loop-unroll.c (struct iv_to_split): Add pointer to next.
17806         (struct var_to_expand): Likewise.
17807         (struct opt_info): Add head and tail for linked lists of the above.
17808         (analyze_insn_to_expand_var): Initialize next.
17809         (analyze_iv_to_split_insn): Likewise.
17810         (analyze_insns_in_loop): Create linked lists.
17811         (allocate_basic_variable): Simplify for use without hash table.
17812         (insert_var_expansion_initialization): Likewise, make it type-safer.
17813         (combine_var_copies_in_loop_exit): Likewise.
17814         (apply_opt_in_copies): Walk lists rather than hash tables.
17815         (release_var_copies): Simplified and inlined by hand into...
17816         (free_opt_info): ... this function.
17817
17818 2009-06-02  Richard Guenther  <rguenther@suse.de>
17819
17820         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
17821         for field decls.
17822
17823 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17824
17825         * cfgexpand.c (gimple_expand_cfg): Discard the source location
17826         only for builtins that are not overridden.
17827
17828 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17829
17830         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
17831         label string.
17832
17833 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17834
17835         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
17836
17837 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17838
17839         * combine.c (move_deaths): Compare LUIDs within the same BB only.
17840
17841 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
17842
17843         * common.opt (fdump-unnumbered-links): New.
17844         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
17845         * print-rtl.c (flag_dump_unnumbered_links): New.
17846         (print_rtx): Test it.
17847
17848 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
17849
17850         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
17851         push/pop multiple to 8-byte alignment.
17852
17853 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
17854
17855         * config/i386/i386.c (queued_cfa_restores): New static variable.
17856         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
17857         functions.
17858         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
17859         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
17860         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
17861         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
17862         note unconditionally.
17863         (ix86_emit_restore_regs_using_mov): Likewise.
17864         (ix86_emit_restore_sse_regs_using_mov): Likewise.
17865         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
17866         it through to ix86_emit_restore_reg_using_pop.
17867         (ix86_emit_leave): Add RED_OFFSET argument.  Call
17868         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
17869         instead of adding REG_CFA_OFFSET note unconditionally.
17870         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
17871         the above functions.  Call ix86_add_queued_cfa_restore_notes when
17872         needed.
17873
17874         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
17875         force output of the label even for dwarf2out_do_cfi_asm.
17876         (add_fde_cfi): If -g2 and above and cfi might change CFA,
17877         force creation of CFI label and chain DW_CFA_set_loc jumping to it
17878         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
17879         caller.
17880         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
17881         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
17882         dwarf2out_cfi_label callers.
17883         * tree.h (dwarf2out_cfi_label): Adjust prototype.
17884         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
17885         Adjust dwarf2out_cfi_label callers.
17886         * config/vax/vax.c (vax_output_function_prologue): Likewise.
17887
17888         * config/i386/i386.h (struct machine_cfa_state,
17889         struct machine_function): Guard with ifndef USED_FOR_TARGET
17890         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
17891
17892         PR other/40024
17893         * emutls.c (__emutls_get_address): Change arr->size to mean number
17894         of allocated arr->data entries instead of # of slots + 1.
17895
17896         PR middle-end/40316
17897         * recog.c (peep2_reinit_state): New function.
17898         (peephole2_init_state): Use it at the end of a basic block and also
17899         when seeing a RTX_FRAME_RELATED_P insn.
17900
17901 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
17902
17903         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
17904         fixuns_truncrfdi2): New.
17905         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
17906         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
17907         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
17908         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
17909         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
17910         *recip_approx): Remove.
17911         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
17912         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
17913         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
17914         move to div.md.
17915         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
17916         setf_exp_rf): New.
17917
17918 2009-06-01  Ian Lance Taylor  <iant@google.com>
17919
17920         * attribs.c (register_attribute): Use CONST_CAST.
17921         * collect2.c (main): Use CONST_CAST2.
17922         (scan_prog_file): Likewise.
17923         * gcc.c (process_command, main): Likewise.
17924         * toplev.c (toplev_main): Likewise.
17925
17926         * c-typeck.c (handle_warn_cast_qual): New static function,
17927         partially broken out of build_c_cast.
17928         (build_c_cast): Call handle_warn_cast_qual.
17929         * doc/invoke.texi (Warning Options): Document new effect of
17930         -Wcast-qual.
17931
17932 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
17933
17934         * diagnostic.c (diagnostic_build_prefix): Always print columns.
17935         (diagnostic_report_current_module): Print columns.
17936         * common.opt (flag_show_column): Enable by default.
17937
17938 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
17939
17940         * alias.c (find_base_term): Check for NULL term before returning.
17941
17942 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17943
17944         Revert due to PR40320:
17945         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17946         * calls.c (emit_library_call_value_1): Don't force_operand for move
17947         and push insns.
17948
17949 2009-06-01  Olivier Hainque  <hainque@adacore.com>
17950             Eric Botcazou  <ebotcazou@adacore.com>
17951
17952         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
17953         to be processed as a bitfield for constructor output purposes.
17954         * output.h (initializer_constant_valid_for_bitfield_p): Declare
17955         new function.
17956         * varasm.c (oc_local_state): New type, output_constructor
17957         local state to support communication with helpers.
17958         (oc_outer_state): New type, output_constructor outer state of
17959         relevance in recursive calls.
17960         (output_constructor_array_range): New output_constructor helper,
17961         extracted code for an array range element.
17962         (output_constructor_regular_field): New output_constructor helper,
17963         extracted code for an element that is not a bitfield.
17964         (output_constructor_bitfield): New output_constructor helper,
17965         extracted code for a bitfield element.  Accept an OUTER state
17966         argument for recursive processing.  Recurse on record or array
17967         CONSTRUCTOR values, possibly past noop conversions.
17968         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
17969         VALUE is a valid constant-valued expression for use in a static
17970         bit-field initializer.
17971         (output_constructor): Rework to use helpers.  Accept and honor an
17972         OUTER state argument for recursive calls.  Return total size.  Be
17973         prepared for nested constructors initializing bitfields.
17974         (output_constant): Feed OUTER in calls to output_constructor.
17975
17976 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
17977
17978         * calls.c (emit_library_call_value_1): Don't force_operand for move
17979         and push insns.
17980
17981 2009-06-01  Nick Clifton  <nickc@redhat.com>
17982
17983         * doc/invoke.texi (IA-64 Options): Fix typo.
17984
17985 2009-06-01  Ira Rosen  <irar@il.ibm.com>
17986
17987         PR tree-optimization/39129
17988         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
17989         printed message.
17990         (vect_do_peeling_for_loop_bound): Use
17991         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
17992         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
17993         (vect_loop_versioning): Likewise.
17994         (vect_create_cond_for_alias_checks): Fix indentation.
17995         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
17996         macros.
17997         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
17998         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
17999         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
18000         "control flow in loop".
18001         (vect_estimate_min_profitable_iters): Use
18002         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18003         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18004         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18005         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
18006         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
18007         statement belongs to a group of strided accesses with the exact code
18008         check.
18009         (vectorizable_load): Likewise.
18010         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
18011         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18012
18013 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
18014
18015         * config/freebsd-stdint.h: New file.
18016         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
18017         Add freebsd-stdint.h to tm_file.
18018
18019 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
18020
18021         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
18022         (thumb2_extendhidi2): Likewise.
18023
18024 2009-05-31  Ian Lance Taylor  <iant@google.com>
18025
18026         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
18027
18028 2009-05-31  Ian Lance Taylor  <iant@google.com>
18029
18030         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
18031         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
18032         (ipa-reference.o): Depend upon gt-ipa-reference.h.
18033
18034 2009-05-31  Jason Merrill  <jason@redhat.com>
18035
18036         * tree-pretty-print.c (print_call_name): Take the callee, not the
18037         call itself.  Make non-static.  Use dump_function_name for functions.
18038         (dump_generic_node): Adjust.
18039         * diagnostic.h: Declare print_call_name.
18040         * gimple-pretty-print.c (dump_gimple_call): Use it.
18041
18042 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18043
18044         * config/sh/sh.md (ashldi3_std): New define_expand.
18045         (ashldi3): Use it.
18046
18047 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18048
18049         PR target/40313
18050         * config/sh/sh.c: Include debug.h.
18051         (sh_expand_epilogue): Emit a blockage insn before the frame
18052         pointer adjustment also when dwarf2out_do_frame returns true.
18053
18054 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
18055
18056         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
18057         (thumb2_extendqidi2): New pattern.
18058
18059 2009-05-31  Ira Rosen  <irar@il.ibm.com>
18060
18061         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
18062         mark phis for renaming.
18063         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
18064         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
18065         Call mark_sym_for_renaming.
18066         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
18067         * tree-vect-loop.c (vect_transform_loop): Remove
18068         vect_memsyms_to_rename initialization and a call to
18069         mark_set_for_renaming.
18070
18071 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
18072
18073         PR middle-end/40304
18074         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
18075         frame related even if !set_cfa && style < 0.
18076
18077 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
18078
18079         * config/i386/mingw-tls.c: New file.
18080         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
18081         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
18082         defining _WIN32 but not __CYGWIN__.
18083
18084 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18085
18086         * configure.ac: Add MPC support.
18087
18088         * config.in, configure: Regenerate.
18089
18090 2009-05-29  Richard Henderson  <rth@redhat.com>
18091
18092         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
18093         NOTE_INSN_BASIC_BLOCK.
18094         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
18095         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
18096         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
18097         to be deleted.
18098         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
18099         add in_use field.
18100         (add_cfi): Disable check redefining cfa away from drap.
18101         (lookup_cfa_1): Add remember argument; handle remember/restore.
18102         (lookup_cfa): Pass remember argument.
18103         (cfa_remember): New.
18104         (compute_barrier_args_size_1): Remove sibcall check.
18105         (dwarf2out_frame_debug_def_cfa): New.
18106         (dwarf2out_frame_debug_adjust_cfa): New.
18107         (dwarf2out_frame_debug_cfa_offset): New.
18108         (dwarf2out_frame_debug_cfa_register): New.
18109         (dwarf2out_frame_debug_cfa_restore): New.
18110         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
18111         (dwarf2out_begin_epilogue): New.
18112         (dwarf2out_frame_debug_restore_state): New.
18113         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
18114         DW_CFA_restore_state.
18115         (output_cfi_directive): Likewise.
18116         (convert_cfa_to_fb_loc_list): Likewise.
18117         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
18118         * dwarf2out.h: Update.
18119         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
18120         (copy_insn_1): Early out for null.
18121         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
18122         and dwarf2out_frame_debug_restore_state.
18123         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
18124         (prologue_insn_hash, epilogue_insn_hash): New.
18125         (free_after_compilation): Adjust freeing accordingly.
18126         (record_insns): Create hash table if needed; push insns into
18127         hash instead of array.
18128         (maybe_copy_epilogue_insn): New.
18129         (contains): Search hash table instead of array.
18130         (sibcall_epilogue_contains): Remove.
18131         (thread_prologue_and_epilogue_insns): Split eh_return insns
18132         and mark them as epilogues.
18133         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
18134         scanning in terms of basic blocks.
18135         * insn-notes.def (CFA_RESTORE_STATE): New.
18136         * jump.c (returnjump_p_1): Accept EH_RETURN.
18137         (eh_returnjump_p_1, eh_returnjump_p): New.
18138         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
18139         CFA_REGISTER, CFA_RESTORE): New.
18140         * rtl.def (EH_RETURN): New.
18141         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
18142
18143         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
18144         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
18145
18146         * config/i386/i386.c (gen_push): Update cfa state.
18147         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
18148         add a CFA_ADJUST_CFA note.
18149         (ix86_dwarf_handle_frame_unspec): Remove.
18150         (ix86_expand_prologue): Update cfa state.
18151         (ix86_emit_restore_reg_using_pop): New.
18152         (ix86_emit_restore_regs_using_pop): New.
18153         (ix86_emit_leave): New.
18154         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
18155         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
18156         * config/i386/i386.h (struct machine_cfa_state): New.
18157         (ix86_cfa_state): New.
18158         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
18159         (eh_return_internal): Merge from eh_return_<mode>,
18160         use eh_return rtx, split w/ epilogue.
18161
18162 2009-05-29  Ian Lance Taylor  <iant@google.com>
18163
18164         * builtins.c (validate_gimple_arglist): Don't use va_arg with
18165         enum type.
18166         * calls.c (emit_library_call_value_1): Likewise.
18167
18168         * c-typeck.c (c_build_va_arg): New function.
18169         * c-tree.h (c_build_va_arg): Declare.
18170         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
18171         instead of build_va_arg.
18172
18173 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
18174
18175         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
18176         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
18177         (ptr_difference_cost): Use affine combinations to compute it.
18178         (difference_cost): Likewise.
18179         (get_computation_cost_at): Compute more accurate cost for addresses
18180         if the ratio is a multiplier allowed in addresses.
18181         For non-addresses, consider that an additional offset or symbol is
18182         added only once.
18183
18184 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18185
18186         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18187         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18188
18189         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18190         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18191         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18192         if MODE_DI.
18193         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18194         to 1 for TYPE_SSE{IADD1,CVT1}.
18195         (prefix_vex_imm8): Removed.
18196         (length_vex): Only pass 1 as second argument to
18197         ix86_attr_length_vex_default if prefix_extra is 0.
18198         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18199         (length): For prefix vex computation use length_immediate
18200         attribute instead of prefix_vex_imm8.
18201         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18202         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18203         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18204         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18205         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18206         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18207         a space in between the operands.
18208         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18209         if one operand is 0xff and the other one si, di, bp or sp.
18210         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18211         other one si, di, bp or sp.
18212         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18213         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18214         type and mode attributes.
18215         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18216         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18217         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18218         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18219         prefix_data16 attribute iff MODE_DF.
18220         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18221         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18222         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18223         constm128_operand in length_immediate computation.
18224         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18225         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18226         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18227         length_immediate attribute to 1.
18228         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18229         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18230         for certain alternatives.
18231         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18232         prefix_data16 attribute if MODE_V1DF.
18233         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18234         length_immediate to 1.
18235         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18236         length_address to 4, set mode attribute to MODE_DI.
18237         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18238         (fxam<mode>2_i387): Set length attribute to 4.
18239         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18240         *prefetch_3dnow_rex): Override length_address attribute.
18241         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18242         attributes.
18243         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18244         (constm128_operand): Removed.
18245         * config/i386/i386.c (memory_address_length): For
18246         disp && !index && !base in 64-bit mode account for SIB byte if
18247         print_operand_address can't optimize disp32 into disp32(%rip)
18248         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18249         for fs: or gs: segment.
18250         (ix86_attr_length_immediate_default): When checking if shortform
18251         is possible, truncate immediate to the length of the non-shortened
18252         immediate.
18253         (ix86_attr_length_address_default): Ignore MEM_P operands
18254         with X constraint.
18255         (ix86_attr_length_vex_default): Only check for DImode on
18256         GENERAL_REG_P operands.
18257         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18258         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18259         (sse_cvttps2pi): Clear prefix_rep attribute.
18260         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18261         attribute.
18262         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18263         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18264         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18265         iff operand 2 is const_int_operand.
18266         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18267         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18268         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18269         instead of vex.
18270         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18271         prefix_data16.
18272         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18273         prefix_data16 attribute for movlpd and movhpd instructions.
18274         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18275         length_immediate for shufpd instruction.
18276         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18277         (avx_cmpp<avxmodesuffixf2c><mode>3,
18278         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18279         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18280         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18281         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18282         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18283         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18284         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18285         prefix_data16 attribute for the first alternative to 1.
18286         (*avx_loadlps): Override length_immediate for the first alternative.
18287         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18288         attributes for second alternative.
18289         (*vec_concatv2sf_sse4_1): Override length_immediate and
18290         prefix_data16 attributes for second alternative.
18291         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18292         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18293         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18294         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18295         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18296         prefix_data16 and length_immediate to 1.
18297         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18298         to 1.
18299         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18300         prefix_extra attribute for variants that don't have 0f prefix alone.
18301         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18302         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18303         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18304         *sse4_1_pextrd): Set length_immediate to 1.
18305         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18306         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18307         to 1.
18308         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18309         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18310         length_immediate to 1 for second alternative.
18311         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18312         prefix_extra and length_immediate attributes for the first
18313         alternative.
18314         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18315         first alternative.
18316         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18317         to 1 for the first and third alternative.
18318         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18319         alternative.
18320         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18321         attribute.
18322         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18323         attribute to 0.
18324         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18325         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18326         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18327         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18328         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18329         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18330         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18331         ssse3_psign<mode>3): Override prefix_rex attribute.
18332         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18333         (ssse3_palignrti): Override length_immediate to 1.
18334         (ssse3_palignrdi): Override length_immediate to 1, override
18335         prefix_rex attribute.
18336         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18337         (sse4a_extrqi): Override length_immediate to 2.
18338         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18339         (sse4a_insertq): Override prefix_data16 to 0.
18340         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18341         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18342         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18343         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18344         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18345         and length_immediate to 1.
18346         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18347         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18348         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18349         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18350         and length_immediate to 1.
18351         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18352         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18353         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18354         avx_ptest256): Override prefix_extra to 1.
18355         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18356         Override prefix_data16 and length_immediate to 1.
18357         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18358         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18359         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18360         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18361         prefix_data16 to 0 and prefix_extra to 2.
18362         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18363         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18364         attribute.
18365         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18366         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18367         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18368         and prefix_extra to 2.
18369         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18370         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18371         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18372         avx_vpermilvar<mode>3,
18373         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18374         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18375         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18376         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18377         Override prefix_extra to 1.
18378         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18379         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18380         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18381         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18382         prefix_extra and length_immediate to 1.
18383         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18384         modrm to 0.
18385         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18386         to 1 for the first alternative.
18387         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18388         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18389         cases.
18390         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18391         *movv2sf_internal_avx, *movv2sf_internal): Override
18392         prefix_rep attribute for certain alternatives.
18393         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18394         attributes for certain alternatives.
18395         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18396         attributes for certain alternatives.
18397         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18398         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18399         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18400         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18401         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18402         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18403         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18404         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18405         length_immediate to 1 if operand 2 is const_int_operand.
18406         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18407         *vec_extractv2si_1): Set length_immediate attribute to 1.
18408         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18409         using old 3DNOW insn rather than SSE/3DNOW_A.
18410         (mmx_emms, mmx_femms): Clear modrm attribute.
18411
18412 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18413
18414         * tree-sra.c:  New implementation of SRA.
18415
18416         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18417         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18418         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18419         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18420         (SRA_MAX_STRUCTURE_COUNT): Removed.
18421         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18422         * doc/invoke.texi (sra-max-structure-size): Removed.
18423         (sra-field-structure-ratio): Removed.
18424
18425 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18426
18427         PR middle-end/40291
18428         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18429         before expansion.
18430
18431 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18432
18433         PR rtl-optimization/40101
18434         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18435         seqno.  Adjust comment.
18436         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18437         inserting bookkeeping before a jump, the jump is not scheduled.
18438         When no positive seqno found, provide a value.  Add comment.
18439
18440 2009-05-29  Richard Guenther  <rguenther@suse.de>
18441
18442         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18443         short-cutting on the first component.
18444
18445 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18446
18447         PR middle-end/39958
18448         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18449         for trees other than decls/types.
18450
18451 2009-05-29  Richard Guenther  <rguenther@suse.de>
18452
18453         * tree-ssa-operands.c (get_expr_operands): Do not handle
18454         INDIRECT_REFs in the handled-component case.  Remove
18455         unused get_ref_base_and_extent case.
18456         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18457         tree_low_cst and host_integerp where possible.
18458         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18459         codes for equivalence.
18460         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18461
18462 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18463
18464         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18465         to tmake_file for i[34567]86-*-cygwin*.
18466
18467 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18468
18469         PR target/40017
18470         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18471         (altivec_categorize_keyword, init_vector_keywords,
18472         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18473         similar to bool.
18474
18475 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18476
18477         * tree.c (handle_dll_attribute): Check if node is
18478         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18479
18480 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18481
18482         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18483         component.
18484         (thumb2_zero_extendqidi2): Likewise.
18485
18486 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18487
18488         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18489         instead of gen_movrt.
18490         * config/sh/sh.md (movrt): Remove.
18491
18492 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18493
18494         * doc/invoke.texi (IA-64 Options):
18495         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18496         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18497         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18498         -msched-prefer-non-control-spec-insns,
18499         -msched-stop-bits-after-every-cycle,
18500         -msched-count-spec-in-critical-path,
18501         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18502         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18503         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18504         and -msched-spec-verbose.
18505
18506 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18507
18508         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18509         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18510         error if used.
18511         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18512
18513 2009-05-28  Richard Guenther  <rguenther@suse.de>
18514
18515         * tree-ssa-alias.c (ao_ref_init): New function.
18516         (ao_ref_base): Likewise.
18517         (ao_ref_base_alias_set): Likewise.
18518         (ao_ref_alias_set): Likewise.
18519         (refs_may_alias_p_1): Change signature.
18520         (refs_may_alias_p): Adjust.
18521         (refs_anti_dependent_p): Likewise.
18522         (refs_output_dependent_p): Likewise.
18523         (call_may_clobber_ref_p_1): Change signature.
18524         (call_may_clobber_ref_p): Adjust.
18525         (stmt_may_clobber_ref_p_1): New function split out from ...
18526         (stmt_may_clobber_ref_p): ... here.
18527         (maybe_skip_until): Adjust signature.
18528         (get_continuation_for_phi): Likewise.
18529         (walk_non_aliased_vuses): Likewise.
18530         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18531         (ao_ref_init): Declare.
18532         (ao_ref_base): Likewise.
18533         (ao_ref_alias_set): Likewise.
18534         (stmt_may_clobber_ref_p_1): Likewise.
18535         (walk_non_aliased_vuses): Adjust.
18536         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18537         (get_ref_from_reference_ops): remove.
18538         (vn_reference_lookup_2): Adjust signature.
18539         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18540         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18541         (vn_reference_lookup): Adjust.
18542         (vn_reference_insert): Likewise.
18543         (vn_reference_insert_pieces): Adjust signature.
18544         (visit_reference_op_call): Adjust.
18545         * tree-ssa-pre.c (get_expr_type): Simplify.
18546         (phi_translate_1): Adjust.
18547         (compute_avail): Likewise.
18548         (translate_vuse_through_block): Do not re-build trees.
18549         (value_dies_in_block_x): Likewise.
18550         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18551         fields.
18552         (vn_reference_lookup_pieces): Adjust declaration.
18553         (vn_reference_insert_pieces): Likewise.
18554
18555 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18556
18557         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18558         with checking disabled.
18559
18560 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18561
18562         PR target/37216
18563
18564         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18565         macro definition for support of three-operand format aligned
18566         .comm directive in assembler on cygwin/pe/mingw target OS.
18567         * configure:  Regenerate.
18568         * config.h:  Regenerate.
18569
18570         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18571         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18572         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18573
18574         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18575         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18576
18577 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18578
18579         PR tree-optimization/40254
18580         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18581         in analysis of basic blocks.
18582
18583 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18584
18585         PR middle-end/33699
18586         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18587         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18588         (TARGET_INITIALIZER): Use it.
18589         * cse.c (CHEAPER): Move it up to the other macros.
18590         (insert): Rename this ...
18591         (insert_with_costs): ... to this.  Add cost parameters.  Update
18592         function comment.
18593         (insert): New function.  Call insert_with_costs.
18594         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18595         find_reg_offset_for_const, try_const_anchors): New functions.
18596         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18597         when using a const-anchor.  Call insert_const_anchors.
18598         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18599         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18600
18601 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18602
18603         * tree-inline.c (remap_decls): Enable nonlocalized variables
18604         when not optimizing.
18605
18606 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18607
18608         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18609         Simplify other tests involving optimize.
18610
18611 2009-05-27  Tom Tromey  <tromey@redhat.com>
18612
18613         * unwind-dw2.c (_Unwind_DebugHook): New function.
18614         (uw_install_context): Call _Unwind_DebugHook.
18615
18616 2009-05-27  Tom Tromey  <tromey@redhat.com>
18617
18618         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
18619
18620 2009-05-27  Ian Lance Taylor  <iant@google.com>
18621
18622         * Makefile.in (LINKER, LINKER_FLAGS): Define.
18623         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
18624         (ALL_LINKERFLAGS): Define.
18625         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
18626         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18627         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
18628         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18629         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
18630         $(LINKER_FOR_BUILD).
18631         (build/gcov-iov$(build_exeext)): Likewise.
18632
18633 2009-05-27  Julian Brown  <julian@codesourcery.com>
18634
18635         * gcse.c (target.h): Include.
18636         (can_assign_to_reg_without_clobbers_p): Check that the target allows
18637         copy of argument to a pseudo register.
18638
18639 2009-05-27  Diego Novillo  <dnovillo@google.com>
18640
18641         * tree-ssa-live.c (dump_scope_block): Document arguments.
18642         (dump_scope_blocks): Document.
18643         (debug_scope_blocks): New.
18644         * tree-flow.h (debug_scope_blocks): Declare.
18645
18646 2009-05-21  Denis Chertykov  <denisc@overta.ru>
18647
18648         * doc/contrib.texi (Contributors): Add myself to the list.
18649
18650 2009-05-27  Olivier Hainque  <hainque@adacore.com>
18651
18652         * expr.c (target_align): New function.  Alignment the TARGET of an
18653         assignment may be assume to have.
18654         (highest_pow2_factor_for_target): Use it instead of relying on
18655         immediate tree attributes of TARGET, not necessarily honored when
18656         intermediate bitfields are involved.
18657
18658 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18659
18660         PR target/40266
18661         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18662         AVX, SSE4, AES, PCLMUL and POPCNT.
18663
18664 2009-05-27  Diego Novillo  <dnovillo@google.com>
18665
18666         * tree-pretty-print.c (dump_location): New.
18667         (dump_generic_node): Call it.
18668         Factor code to handle BLOCK nodes ...
18669         (dump_block_node): ... here.
18670
18671 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
18672
18673         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
18674         with it.
18675         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
18676         included.
18677         * gcc-plugin.h: Include config.h and system.h.
18678         (IN_GCC): Define if not defined.
18679
18680 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
18681
18682         PR middle-end/40249
18683         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
18684         with -fno-inline.
18685
18686 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
18687
18688         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
18689         applicable.
18690         * config/m32r/m32r.h: Ditto.
18691         * config/m32r/m32r.md: Ditto.
18692         * config/m32r/predicates.md: Ditto.
18693
18694 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
18695
18696         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
18697
18698 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
18699
18700         * doc/plugins.texi
18701         (Loading plugins): typo.
18702         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
18703         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18704         (Interacting with the GCC Garbage Collector): Added new section.
18705         (Giving information about a plugin): Added new section for
18706         PLUGIN_INFO.
18707         * ggc.h (ggc_register_root_tab): Added declaration.
18708         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
18709         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
18710         (register_callback): Improved comment in declaration.
18711         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
18712         (extra_root_vec) Added static variable for dynamic roots registration.
18713         (ggc_register_root_tab) Added new routine.
18714         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
18715         PLUGIN_GGC_MARKING event.
18716         * ggc-zone.c: Include plugin.h.
18717         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18718         * ggc-page.c: Include plugin.h.
18719         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
18720         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
18721         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
18722         (register_callback): check lack of callbacks for
18723         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
18724         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
18725         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
18726         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
18727         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
18728         dependency on plugin.h.
18729         (plugin.o): Added dependency on ggc.h...
18730
18731 2009-05-26  Richard Guenther  <rguenther@suse.de>
18732
18733         PR middle-end/40248
18734         Revert
18735         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
18736         with mismatched comparison modes.
18737
18738         * expr.c (expand_expr_real_1): Expand the operand of a
18739         VIEW_CONVERT_EXPR in its natural mode.
18740
18741 2009-05-26  Ian Lance Taylor  <iant@google.com>
18742
18743         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
18744         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
18745         (ALL_COMPILERFLAGS): Define.
18746         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
18747         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
18748         (collect2$(exeext), collect2.o): Likewise.
18749         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
18750         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
18751         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
18752         (libbackend.o, intl.o, cppdefault.o): Likewise.
18753         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
18754         (build/%.o): Use $(COMPILER_FOR_BUILD).
18755         (build/gen%$(build_exeext)): Likewise.
18756         (build/gcov-iov$(build_exeext)): LIkewise.
18757         * config/t-darwin (darwin.o): Use $(COMPILER).
18758         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
18759         * config/t-sol2 (sol2-c.o): Likewise.
18760         (sol2.o): Likewise.
18761         * config/t-vxworks (vxworks.o): Likewise.
18762         * config/x-darwin (host-darwin.o): Likewise.
18763         * config/x-hpux (host-hpux.o): Likewise.
18764         * config/x-linux (host-linux.o): Likewise.
18765         * config/x-solaris (host-solaris.o): Likewise.
18766         * config/alpha/x-alpha (driver-alpha.o): Likewise.
18767         * config/arm/t-arm (arm-c.o): Likewise.
18768         * config/arm/t-pe (pe.o): Likewise.
18769         * config/arm/t-wince-pe (pe.o): Likewise.
18770         * config/i386/t-cygming (winnt.o): Likewise.
18771         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
18772         * config/i386/t-cygwin (cygwin1.o): Likewise.
18773         (cygwin2.o): Likewise.
18774         * config/i386/t-i386 (i386-c.o): Likewise.
18775         * config/i386/t-interix (winnt.o): Likewise.
18776         * config/i386/t-netware (netware.o): Likewise.
18777         * config/i386/t-nwld (nwld.o): Likewise.
18778         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
18779         * config/i386/x-i386 (driver-i386.o): Likewise.
18780         * config/i386/x-cygwin (host-cygwin.o): Likewise.
18781         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
18782         * config/ia64/t-ia64 (ia64-c.o): Likewise.
18783         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
18784         * config/mips/x-native (driver-native.o): Likewise.
18785         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
18786         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
18787         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
18788         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
18789         * config/score/t-score-elf (score7.o): Likewise.
18790         (score3.o): Likewise.
18791         * config/sh/t-sh (sh-c.o): Likewise.
18792         * config/sh/t-symbian (sh-c.o): Likewise.
18793         (symbian.o): Likewise.
18794         * config/spu/t-spu-elf (spu-c.o): Likewise.
18795         * config/v850/t-v850 (v850-c.o): Likewise.
18796         * config/v850/t-v850e (v850-c.o): Likewise.
18797
18798 2009-05-26  Richard Guenther  <rguenther@suse.de>
18799
18800         PR tree-optimization/40122
18801         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
18802         VECTOR_CSTs if possible.
18803         (fold_gimple_assign): Likewise.
18804
18805 2009-05-26  Richard Guenther  <rguenther@suse.de>
18806
18807         PR middle-end/40252
18808         * fold-const.c (fold_binary): Use the correct types for building
18809         rotates.
18810
18811 2009-05-26  Richard Guenther  <rguenther@suse.de>
18812
18813         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
18814         redundant calls to merge_alias_info.
18815         (bump_vector_ptr): Likewise.
18816         * tree-ssa-copy.c (merge_alias_info): Remove.
18817         (replace_exp_1): Remove call to merge_alias_info.
18818         (propagate_tree_value): Likewise.
18819         (fini_copy_prop): Propagate points-to info.
18820         * tree-flow.h (merge_alias_info): Remove.
18821
18822 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
18823
18824         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
18825
18826 2009-05-25  Jan Hubicka  <jh@suse.cz>
18827
18828         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
18829         * cgraph.h (struct inline_summary): New filed self_wize,
18830         size_inlining_benefit, self_time and time_inlining_benefit.
18831         (struct cgraph_global_info): Replace insns by time ans size fields.
18832         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
18833         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
18834         (ipcp_update_callgraph): Do not touch function bodies.
18835         * ipa-inline.c: Include except.h
18836         (MAX_TIME): New constant.
18837         (overall_insns): Remove.
18838         (leaf_node_p): New.
18839         (overall_size, max_benefit): New static variables.
18840         (cgraph_estimate_time_after_inlining): New function.
18841         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
18842         (cgraph_clone_inlined_nodes): Update size.
18843         (cgraph_mark_inline_edge): Update size.
18844         (cgraph_estimate_growth): Use size info.
18845         (cgraph_check_inline_limits): Check size.
18846         (cgraph_default_inline_p): Likewise.
18847         (cgraph_edge_badness): Compute badness based on benefit and size cost.
18848         (cgraph_decide_recursive_inlining): Check size.
18849         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
18850         and times.
18851         (cgraph_decide_inlining): Likewise.
18852         (cgraph_decide_inlining_incrementally): Likewise; honor
18853         PARAM_EARLY_INLINING_INSNS.
18854         (likely_eliminated_by_inlining_p): New predicate.
18855         (estimate_function_body_sizes): New function.
18856         (compute_inline_parameters): Use it.
18857         * except.c (must_not_throw_labels): New function.
18858         * except.h (must_not_throw_labels): Declare.
18859         * tree-inline.c (init_inline_once): Kill inlining_weigths
18860         * tree-ssa-structalias.c: Avoid uninitialized warning.
18861         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
18862         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
18863         (PARAM_INLINE_CALL_COST): Remove.
18864         (PARAM_EARLY_INLINING_INSNS): New.
18865
18866 2009-05-25  Richard Guenther  <rguenther@suse.de>
18867
18868         PR tree-optimization/36327
18869         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
18870         callback for reference translation or lookup at the point of may-defs.
18871         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
18872         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
18873         for union COMPONENT_REFs.
18874         (vn_reference_lookup_3): New callback.  Lookup from memset
18875         and CONSTRUCTOR assignment, translate through struct copies.
18876         (vn_reference_lookup_pieces): Make sure to not free the
18877         passed operands array.  Adjust walk_non_aliased_vuses call.
18878         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
18879         make sure we do not leak memory.
18880
18881 2009-05-25  Richard Guenther  <rguenther@suse.de>
18882
18883         * tree-ssa-alias.h (dump_points_to_solution): Declare.
18884         * tree-inline.c (expand_call_inline): Reset the escaped and
18885         callused solutions.
18886         * tree-ssa-structalias.c (pass_build_ealias): New.
18887         * tree-pass.h (pass_build_ealias): Declare.
18888         * passes.c (init_optimization_passes): Add PTA during
18889         early optimizations.
18890         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
18891         and CALLUSED solutions.
18892         (dump_points_to_solution): New function, split out from ...
18893         (dump_points_to_info_for): ... here.
18894         * tree-parloops.c (parallelize_loops): Reset the escaped and
18895         callused solutions.
18896
18897 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18898
18899         PR bootstrap/40027
18900         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
18901         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
18902
18903 2009-05-25  Ira Rosen  <irar@il.ibm.com>
18904
18905         PR tree-optimization/40238
18906         * tree-vect-stmts.c (vect_init_vector): Insert initialization
18907         statements after basic block's labels.
18908         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
18909         to free the allocated memory.
18910
18911 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
18912
18913         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
18914         return address with a USE.
18915
18916 2009-05-24  Richard Guenther  <rguenther@suse.de>
18917
18918         PR middle-end/40233
18919         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
18920         array type from the main variant of the inner type.
18921
18922 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
18923
18924         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
18925         definition to bool (from int) to un-break build.
18926         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
18927
18928 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
18929
18930         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
18931         discard_stmt_changes): Delete.
18932         * tree-ssa-operands.c (scb_stack): Delete.
18933         (init_ssa_operands): Do not initialize it.
18934         (fini_ssa_operands): Do not free it.
18935         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
18936
18937         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
18938         update_stmt, remove the others.  Fix comments.
18939         * tree-dfa.c (optimize_stack_restore): Likewise.
18940         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
18941         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
18942         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18943         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
18944         Likewise.
18945         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
18946         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
18947         (dom_opt_finalize_block): Likewise, adjusting access to
18948         stmts_to_rescan.
18949         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
18950         (stmts_to_rescan): Change item type to gimple.
18951         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
18952
18953 2009-05-24  Ira Rosen  <irar@il.ibm.com>
18954
18955         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
18956         * tree-pass.h (pass_slp_vectorize): New pass.
18957         * params.h (SLP_MAX_INSNS_IN_BB): Define.
18958         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
18959         * tree-vectorizer.c (timevar.h): Include.
18960         (user_vect_verbosity_level): Declare.
18961         (vect_location): Fix comment.
18962         (vect_set_verbosity_level): Update user_vect_verbosity_level
18963         instead of vect_verbosity_level.
18964         (vect_set_dump_settings): Add an argument. Ignore user defined
18965         verbosity if dump flags require higher level of verbosity. Print to
18966         stderr only for loop vectorization.
18967         (vectorize_loops): Update call to vect_set_dump_settings.
18968         (execute_vect_slp): New function.
18969         (gate_vect_slp): Likewise.
18970         (struct gimple_opt_pass pass_slp_vectorize): New.
18971         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
18972         access its members.
18973         (vec_info_for_bb): New function.
18974         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
18975         (VECTORIZATION_ENABLED): New macro.
18976         (SLP_ENABLED, SLP_DISABLED): Likewise.
18977         (vect_is_simple_use): Add bb_vec_info argument.
18978         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
18979         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
18980         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
18981         vect_schedule_slp, vect_analyze_slp): Likewise.
18982         (vect_analyze_stmt): Add slp_tree argument.
18983         (find_bb_location): Declare.
18984         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18985         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
18986         (vect_analyze_loop_operations, vect_analyze_loop,
18987         get_initial_def_for_induction, vect_create_epilog_for_reduction,
18988         vect_finalize_reduction, vectorizable_reduction,
18989         vectorizable_live_operation, vect_transform_loop): Likewise.
18990         * tree-data-ref.c (dr_analyze_innermost): Update comment,
18991         skip evolution analysis if analyzing a basic block.
18992         (dr_analyze_indices): Likewise.
18993         (initialize_data_dependence_relation): Skip the test whether the
18994         object is invariant for basic blocks.
18995         (compute_all_dependences): Skip dependence analysis for data
18996         references in basic blocks.
18997         (find_data_references_in_stmt): Don't fail in case of invariant
18998         access in basic block.
18999         (find_data_references_in_bb): New function.
19000         (find_data_references_in_loop): Move code to
19001         find_data_references_in_bb and add a call to it.
19002         (compute_data_dependences_for_bb): New function.
19003         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
19004         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
19005         that STEP is 0.
19006         (vect_analyze_data_ref_dependence): Check for interleaving in case of
19007         unknown dependence in basic block and fail in case of dependence in
19008         basic block.
19009         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
19010         dependence instances from either loop or basic block vectorization
19011         info.
19012         (vect_compute_data_ref_alignment): Check if it is loop vectorization
19013         before calling nested_in_vect_loop_p.
19014         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
19015         dependence instances from either loop or basic block vectorization
19016         info.
19017         (vect_verify_datarefs_alignment): Likewise.
19018         (vect_enhance_data_refs_alignment): Adjust function calls.
19019         (vect_analyze_data_refs_alignment): Likewise.
19020         (vect_analyze_group_access): Fix printing. Skip different checks if
19021         DR_STEP is 0. Keep strided stores either in loop or basic block
19022         vectorization data structure. Fix indentation.
19023         (vect_analyze_data_ref_access): Fix comments, allow zero step in
19024         basic blocks.
19025         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
19026         dependence instances from either loop or basic block vectorization
19027         info.
19028         (vect_analyze_data_refs): Update comment. Call
19029         compute_data_dependences_for_bb to analyze basic blocks.
19030         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
19031         case of loop vectorization. In case of basic block vectorization use
19032         data-ref itself as a base.
19033         (vect_create_data_ref_ptr): In case of basic block vectorization:
19034         don't advance the pointer, add new statements before the current
19035         statement.  Adjust function calls.
19036         (vect_supportable_dr_alignment): Support only aligned accesses in
19037         basic block vectorization.
19038         * common.opt (ftree-slp-vectorize): New flag.
19039         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
19040         (vect_pattern_recog_1): Likewise.
19041         * tree-vect-stmts.c (process_use): Likewise.
19042         (vect_init_vector): Add new statements in the beginning of the basic
19043         block in case of basic block SLP.
19044         (vect_get_vec_def_for_operand): Adjust function calls.
19045         (vect_finish_stmt_generation): Likewise.
19046         (vectorizable_call): Add assert that it is loop vectorization, adjust
19047         function calls.
19048         (vectorizable_conversion, vectorizable_assignment): Likewise.
19049         (vectorizable_operation): In case of basic block SLP, take
19050         vectorization factor from statement's type and skip the relevance
19051         check. Adjust function calls.
19052         (vectorizable_type_demotion): Add assert that it is loop
19053         vectorization, adjust function calls.
19054         (vectorizable_type_promotion): Likewise.
19055         (vectorizable_store): Check for outer loop only in case of loop
19056         vectorization. Adjust function calls. For basic blocks, skip the
19057         relevance check and don't advance pointers.
19058         (vectorizable_load): Likewise.
19059         (vectorizable_condition): Add assert that it is loop vectorization,
19060         adjust function calls.
19061         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
19062         that it is not reduction, get vector type, call only supported
19063         functions, skip loop specific parts.
19064         (vect_transform_stmt): Check for outer loop only in case of loop
19065         vectorization.
19066         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
19067         (vect_is_simple_use): Fix comment, add new argument, fix conditions
19068         for external definition.
19069         * passes.c (pass_slp_vectorize): New pass.
19070         * tree-vect-slp.c (find_bb_location): New function.
19071         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
19072         check for patterns only in loops.
19073         (vect_build_slp_tree): Add argument, adjust function calls, fail in
19074         case of multiple types in basic block SLP.
19075         (vect_mark_slp_stmts_relevant): New function.
19076         (vect_supported_load_permutation_p): Fix comment.
19077         (vect_analyze_slp_instance): Add argument. In case of basic block
19078         SLP, take vectorization factor from statement's type, check that
19079         unrolling factor is 1. Adjust function call. Save SLP instance in
19080         either loop or basic block vectorization structure. Return FALSE,
19081         if SLP failed.
19082         (vect_analyze_slp): Add argument. Get strided stores groups from
19083         either loop or basic block vectorization structure. Return FALSE
19084         if basic block SLP failed.
19085         (new_bb_vec_info): New function.
19086         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
19087         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
19088         (vect_schedule_slp): Add argument. Get SLP instances from either
19089         loop or basic block vectorization structure. Set vectorization factor
19090         to be 1 for basic block SLP.
19091         (vect_slp_transform_bb): New function.
19092         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
19093
19094 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
19095
19096         * final.c (shorten_branches): Do not align labels for jump tables.
19097         (final_scan_insn): Use JUMP_TABLE_DATA_P.
19098
19099 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
19100
19101         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
19102         Remove outdated reference to flow.c and fix nits.
19103         * doc/gccint.texi: Tweak RTL description.
19104         * doc/rtl.texi: Likewise.
19105
19106 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
19107
19108         * config/avr/avr.c: Change my email address.
19109         * config/avr/avr.h: Likewise.
19110         * config/avr/avr.md: Likewise.
19111         * config/avr/avr-protos.h: Likewise.
19112         * config/avr/libgcc.S: Likewise.
19113
19114 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
19115
19116         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
19117         (spu_split_load, spu_split_store): Change return type to int.
19118         (spu_split_convert): Declare.
19119         * config/spu/predicates.md (spu_mem_operand): Remove.
19120         (spu_mov_operand): Update.
19121         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
19122         * config/spu/spu.c (regno_aligned_for_load): Remove.
19123         (reg_aligned_for_addr, spu_expand_load): Define.
19124         (spu_expand_extv): Reimplement and handle MEM.
19125         (spu_expand_insv): Handle MEM.
19126         (spu_sched_reorder): Handle insn's with length 0.
19127         (spu_legitimate_address_p): Reimplement.
19128         (store_with_one_insn_p): Return TRUE for any mode with size
19129         larger than 16 bytes.
19130         (address_needs_split): Define.
19131         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
19132         operands.
19133         (spu_convert_move): Define.
19134         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
19135         (spu_split_store): Change all MEM's to TImode.
19136         (spu_init_expanders): Preallocate registers that correspond to
19137         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
19138         mark_reg_pointer.
19139         (spu_split_convert): Define.
19140         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
19141         (_move<mode>, _movdi, _movti): Update predicate and condition.
19142         (load, store): Change to define_split.
19143         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
19144         extend<mode>ti2.
19145         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
19146         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
19147         define_insn_and_split of lshr<mode>3.
19148         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
19149         (<v>ashr<mode>3_imm): Define.
19150         (extv, extzv, insv): Allow MEM operands.
19151         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
19152         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
19153         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
19154         (_spu_convert2): Change to define_insn_and_split and remove the
19155         corresponding define_peephole2.
19156         (stack_protect_set, stack_protect_test, stack_protect_test_si):
19157         Change predicates to memory_operand.
19158
19159 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19160
19161         * config/arm/thumb2.md: Add 16-bit multiply instructions.
19162
19163 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19164
19165         PR tree-optimization/40219
19166         * tree.c (iterative_hash_expr): Make sure the builtin function is
19167         a normal builtin function and not a front end or back end builtin
19168         before indexing into the built_in_decls array.
19169
19170 2009-05-22  Richard Guenther  <rguenther@suse.de>
19171
19172         PR middle-end/38964
19173         * alias.c (write_dependence_p): Do not use TBAA for answering
19174         anti-dependence or output-dependence.
19175         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
19176         (emit_pointer_definition): Remove.
19177         (emit_alias_warning): Likewise.
19178         (find_what_var_points_to): Remove TBAA pruning code.
19179         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
19180         violations.
19181         (compute_points_to_sets): Remove code computing the set of
19182         dereferenced pointers.
19183         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19184         oracle for querying anti and output dependencies.
19185         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19186         if TBAA may be applied.
19187         (refs_anti_dependent_p): New function.
19188         (refs_output_dependent_p): Likewise.
19189         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19190         (refs_output_dependent_p): Likewise.
19191         * doc/tree-ssa.texi (Memory model): New section.
19192         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19193         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19194         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19195         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19196         * expr.c (expand_expr_real_1): Likewise.
19197         * gimple-low.c (lower_stmt): Likewise.
19198         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19199         (dump_gimple_cdt): Remove.
19200         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19201         (gimple_size): Likewise.
19202         (walk_gimple_op): Likewise.
19203         (is_gimple_stmt): Likewise.
19204         (walk_stmt_load_store_addr_ops): Likewise.
19205         (gimple_build_cdt): Remove.
19206         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19207         * gimple.h (gimple_cdt_new_type): Remove.
19208         (gimple_cdt_new_type_ptr): Likewise.
19209         (gimple_cdt_set_new_type): Likewise.
19210         (gimple_cdt_location): Likewise.
19211         (gimple_cdt_location_ptr): Likewise.
19212         (gimple_cdt_set_location): Likewise.
19213         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19214         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19215         GIMPLE_CHANGE_DYNAMIC_TYPE.
19216         (verify_types_in_gimple_stmt): Likewise.
19217         * tree-inline.c (estimate_num_insns): Likewise.
19218         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19219         (copy_decl_to_var): Likewise.
19220         (copy_result_decl_to_var): Likewise.
19221         * tree-pretty-print.c (dump_generic_node): Do not handle
19222         CHANGE_DYNAMIC_TYPE_EXPR.
19223         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19224         * tree-ssa-operands.c (get_expr_operands): Likewise.
19225         * tree-ssa-structalias.c (struct variable_info): Remove
19226         no_tbaa_pruning member.
19227         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19228         (unify_nodes): Do not copy it.
19229         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19230         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19231         (set_uids_in_ptset): Do not check it.
19232         (find_what_var_points_to): Likewise.
19233         (compute_tbaa_pruning): Remove.
19234         (compute_points_to_sets): Do not call it.
19235         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19236         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19237         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19238         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19239         (DECL_NO_TBAA_P): Likewise.
19240         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19241         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19242         (expand_omp_atomic_pipeline): Do not set it.
19243         * print-tree.c (print_node): Do not dump it.
19244         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19245         redundant check.
19246
19247 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19248
19249         PR target/39856
19250         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19251         for clobber.
19252
19253 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19254
19255         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19256         non-external.
19257
19258 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19259
19260         * Makefile.in (bversion.h, s-bversion): New targets.
19261         (TOPLEV_H): Add bversion.h.
19262         * toplev.h: Include "bversion.h".
19263         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19264         the __format__ attribute only if compiling with the same version
19265         of GCC as the sources (the "build version").
19266
19267 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19268
19269         * c-format.c (handle_format_attribute): Fix comment typo.
19270
19271 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19272
19273         PR target/37846
19274         * config/ia64/ia64.opt (mfused-madd): New.
19275         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19276         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19277         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19278         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19279         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19280         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19281         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19282         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19283         instruction if !TARGET_FUSED_MADD.
19284         (fpma, fpms): Remove colon from name.
19285
19286 2009-05-22  Richard Guenther  <rguenther@suse.de>
19287
19288         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19289         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19290         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19291         TARGET_MEM_REF.
19292         (create_expression_by_pieces): Only convert if necessary.
19293         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19294         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19295
19296 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19297
19298         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19299         regular pattern from a template and rename it ...
19300         (*extzv_truncsi_exts): ... to this.
19301
19302 2009-05-21  Richard Guenther  <rguenther@suse.de>
19303
19304         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19305         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19306         (cgraph_default_inline_p): Likewise.
19307         (cgraph_decide_inlining_incrementally): Likewise.
19308
19309 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19310             Uros Bizjak  <ubizjak@gmail.com>
19311
19312         * config/i386/cpuid.h (bit_MOVBE): New.
19313
19314         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19315
19316         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19317         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19318         (ix86_handle_option): Handle OPT_mmovbe.
19319         (ix86_target_string): Add -mmovbe.
19320         (pta_flags): Add PTA_MOVBE.
19321         (processor_alias_table): Add PTA_MOVBE to "atom".
19322         (override_options): Handle PTA_MOVBE.
19323
19324         * config/i386/i386.h (TARGET_MOVBE): New.
19325
19326         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19327         (*bswapsi_movbe): New.
19328         (*bswapdi_movbe): Likewise.
19329         (bswapdi2): Renamed to ...
19330         (*bswapdi_1): This.
19331         (bswapdi2): New expander.
19332
19333         * config/i386/i386.opt (mmovbe): New.
19334
19335         * doc/invoke.texi: Document -mmovbe.
19336
19337 2009-05-21  Taras Glek  <tglek@mozilla.com>
19338
19339         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19340         * gcc-plugin.h (plugin_init): Updated signature.
19341         * gcc-plugin.h (plugin_name_args): Moved to this header.
19342         * doc/plugins.texi (plugin_init): Updated documention to reflect
19343         API change.
19344         * doc/plugins.texi (plugin_name_args): Added to documention.
19345
19346 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19347
19348         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19349         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19350
19351 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19352
19353         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19354         JUMP_TABLE_DATA_P predicates where applicable.
19355         * config/i386/predicates.md: Ditto.
19356         * config/i386/sse.md: Ditto.
19357
19358 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19359
19360         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19361         operand2 -128 override length_immediate attribute to 1.
19362         * config/i386/predicates.md (constm128_operand): New predicate.
19363
19364         * config/i386/i386.c (memory_address_length): Handle %r12
19365         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19366         also check REGNO.
19367         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19368         mode look through optional ZERO_EXTEND and SUBREG.
19369         * config/i386/i386.md (R12_REG): New define_constant.
19370         (prefix_data16): For sse unit set also for MODE_TI insns.
19371         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19372         insns set if operand 1 is ext_QIreg_operand.
19373         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19374         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19375         immediate.
19376         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19377         mode from MODE_DI to MODE_SI.
19378         (movdi_1_rex64): Override modrm and length_immediate attributes
19379         only for movabs (TYPE_IMOV, alternative 2).
19380         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19381         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19382         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19383         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19384         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19385         prefix_rex attribute if DImode.
19386         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19387         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19388         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19389         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19390         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19391         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19392         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19393         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19394         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19395         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19396         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19397         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19398         or one operand TYPE_ISHIFT.
19399         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19400         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19401         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19402         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19403         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19404         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19405         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19406         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19407         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19408         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19409         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19410         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19411         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19412         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19413         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19414         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19415         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19416         set mode attribute, don't override length attribute.
19417         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19418         to 1.
19419         (return_internal_long): Set length attribute to 2 instead of 1.
19420         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19421         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19422         prefix_rex attribute.
19423         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19424         New predicates.
19425         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19426
19427 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19428
19429         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19430
19431 2009-05-20  Ian Lance Taylor  <iant@google.com>
19432
19433         * tree.c (build_tree_list_vec_stat): New function.
19434         (ctor_to_vec): New function.
19435         (build_nt_call_vec): New function.
19436         (build_call_array): Change args to be a const pointer.
19437         (build_call_vec): New function.
19438         * tree.h (build_nt_call_vec): Declare.
19439         (build_tree_list_vec_stat): Declare.
19440         (build_tree_list_vec): Define.
19441         (build_call_array): Update declaration.
19442         (build_call_vec): Declare.
19443         (ctor_to_vec): Declare.
19444         * c-common.c (tree_vector_cache): New static variable.
19445         (make_tree_vector): New function.
19446         (release_tree_vector): New function.
19447         (make_tree_vector_single): New function.
19448         (make_tree_vector_copy): New function.
19449         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19450         (make_tree_vector_single, make_tree_vector_copy): Declare.
19451         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19452         (c_parser_expr_list): Don't manage cache here, instead call
19453         make_tree_vector.
19454         (c_parser_release_expr_list): Remove static function.
19455         (c_parser_vec_to_tree_list): Remove static function.
19456         (c_parser_attributes): Call build_tree_list_vec instead of
19457         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19458         c_parser_release_expr_list.
19459         (c_parser_postfix_expression_after_primary): Likewise.
19460         (c_parser_objc_keywordexpr): Likewise.
19461
19462 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19463
19464         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19465         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19466         TARGET_CONVERT_TO_TYPE.
19467         * hooks.c (hook_tree_const_tree_null): Define.
19468         * hooks.h (hook_tree_const_tree_null): Declare.
19469         * target.h (struct gcc_target):  Add invalid_parameter_type,
19470         invalid_return_type, promoted_type, and convert_to_type fields.
19471         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19472         (TARGET_INVALID_RETURN_TYPE): Define.
19473         (TARGET_PROMOTED_TYPE): Define.
19474         (TARGET_CONVERT_TO_TYPE): Define.
19475         (TARGET_INITIALIZER): Update for new fields.
19476         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19477         (grokparms): Check targetm.invalid_parameter_type.
19478         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19479         * c-convert.c (convert): Check targetm.convert_to_type.
19480
19481 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19482
19483         * config/mips/mips.md (*extenddi_truncate<mode>,
19484         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19485         defintions.
19486         (*extendhi_truncateqi): New define_insn_and_sptit.
19487
19488 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19489
19490         PR middle-end/40204
19491         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19492         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19493
19494 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19495
19496         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19497         the operand of VIEW_CONVERT_EXPR.
19498
19499 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19500
19501         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19502         extended family and model for Intel processors.  Support Intel Atom.
19503
19504 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19505
19506         * gstab.h (stab_code_type): Define, to be used instead of the
19507         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19508         notice.
19509         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19510         occurrences by stab_code_type.
19511         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19512
19513 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19514
19515         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19516         (sra_insert_before): Likewise.
19517         (sra_insert_after): Likewise.
19518         (sra_init_cache): Likewise.
19519         (sra_type_can_be_decomposed_p): Likewise.
19520         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19521         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19522         (sra_insert_before): Likewise.
19523         (sra_insert_after): Likewise.
19524         (sra_init_cache): Likewise.
19525         (insert_edge_copies_seq): Made static and moved upwards.
19526
19527         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19528         case.
19529
19530         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19531
19532         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19533         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19534         simple copies.
19535
19536 2009-05-20  Richard Guenther  <rguenther@suse.de>
19537
19538         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19539         with mismatched comparison modes.
19540
19541 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19542
19543         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19544         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19545         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19546         with shifts for Thumb2.
19547         (orsi_notsi): New for orn.
19548         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19549         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19550         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19551         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19552         Don't invert remainder for IOR.
19553
19554 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19555
19556         PR tree-optimization/40087
19557         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19558         number_of_iterations_ne): Rename never_infinite argument.
19559         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19560         number_of_iterations_le): Handle pointer-type ivs when
19561         exit_must_be_taken is false.
19562         (number_of_iterations_cond):  Do not always assume that
19563         exit_must_be_taken if the control variable is a pointer.
19564
19565 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19566
19567         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19568         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19569
19570 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19571
19572         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19573         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19574
19575 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19576
19577         PR c/40172
19578         * c.opt (Wlogical-op): Disabled by default.
19579         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19580         Wextra.
19581         * doc/invoke.texi (Wlogical-op): Likewise.
19582
19583 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19584
19585         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19586         into CASE_CONVERT.
19587         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19588         Propagate the type of the first operand.
19589         <ASSERT_EXPR>: Simplify.
19590         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19591         Rewrite using the RHS code as discriminant.
19592         <NOP_EXPR>: Turn into CASE_CONVERT.
19593         <PLUS_EXPR>: Propagate the type of the first operand.
19594
19595 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19596
19597         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19598         (ia64_dconst_0_375): New.
19599         * config/ia64/ia64.c (ia64_override_options): Remove
19600         -minline-sqrt-min-latency warning.
19601         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19602         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19603         * config/ia64/ia64.md (*sqrt_approx): Remove.
19604         (sqrtsf2): Remove #if 0.
19605         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19606         (sqrtdf): Remove assert.
19607         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19608         (sqrtxf2): Remove #if 0.
19609         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19610         * div.md (sqrt_approx_rf): New.
19611         (sqrtsf2_internal_thr): New implementation.
19612         (sqrtsf2_internal_lat): New.
19613         (sqrtdf2_internal_thr: New implementation.
19614         (sqrtxf2_internal): New implementation.
19615
19616 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19617             Hans-Peter Nilsson  <hp@axis.com>
19618
19619         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
19620         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
19621         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
19622         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
19623         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
19624         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
19625         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
19626         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
19627         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
19628         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
19629         * c-common.c: ...from here.
19630
19631 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19632
19633         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
19634
19635 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19636
19637         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
19638
19639 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19640
19641         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
19642         assignments with memcpy calls.
19643         (add_fdes): Likewise.
19644         (binary_search_unencoded_fdes): Likewise.
19645         (linear_search_fdes): Eliminate type puns.
19646
19647 2009-05-19  Richard Guenther  <rguenther@suse.de>
19648
19649         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
19650         not falsely claim to have propagated into all uses.
19651
19652 2009-05-19  Ben Elliston  <bje@au.ibm.com>
19653
19654         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
19655         version to v3.0.
19656
19657 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19658
19659         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
19660         * config/sh/sh.c (sh_legitimate_address_p): Make static.
19661         (TARGET_LEGITIMATE_ADDRESS_P): New.
19662         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
19663         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
19664
19665 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
19666
19667         PR debug/40109
19668         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
19669         child of the containing namespace's DIE.
19670
19671 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
19672
19673         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
19674         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
19675         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
19676         extend patterns.
19677
19678 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19679
19680         PR target/39942
19681         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
19682         gen_align with gen_pad.
19683         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
19684         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
19685
19686         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
19687         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
19688
19689         * config/i386/i386.md (align): Renamed to ...
19690         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
19691         ASM_OUTPUT_MAX_SKIP_PAD.
19692
19693 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
19694
19695         * config.gcc: Fix variable syntax.
19696
19697         PR target/39531
19698         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
19699         before calling exact_log2.
19700         (output_iorsi3): Likewise.
19701         (output_xorsi3): Likewise.
19702
19703 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
19704
19705         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
19706         for the none zero constant operand except for EQ and NE
19707         comprisons even when the first operand is R0.
19708
19709 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
19710
19711         * config/s390/2064.md: Remove trailing whitespaces.
19712         * config/s390/2084.md: Likewise.
19713         * config/s390/constraints.md: Likewise.
19714         * config/s390/fixdfdi.h: Likewise.
19715         * config/s390/libgcc-glibc.ver: Likewise.
19716         * config/s390/s390-modes.def: Likewise.
19717         * config/s390/s390-protos.h: Likewise.
19718         * config/s390/s390.c: Likewise.
19719         * config/s390/s390.h: Likewise.
19720         * config/s390/s390.md: Likewise.
19721         * config/s390/tpf-unwind.h: Likewise.
19722
19723 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19724
19725         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
19726
19727 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
19728
19729         M68K TLS support.
19730         * configure.ac (m68k-*-*): Check if binutils support TLS.
19731         * configure: Regenerate.
19732         * config/m68k/predicates.md (symbolic_operand): Extend comment.
19733         * config/m68k/constraints.md (Cu): New constraint.
19734         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
19735         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
19736         (movsi): Handle TLS symbols.
19737         (addsi3_5200): Handle XTLS symbols, indent.
19738         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
19739         (m68k_tls_reference_p): Declare.
19740         (m68k_legitimize_address): Declare.
19741         (m68k_unwrap_symbol): Declare.
19742         * config/m68k/m68k.opt (mxtls): New option.
19743         * config/m68k/m68k.c (ggc.h): Include.
19744         (m68k_output_dwarf_dtprel): Implement hook.
19745         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
19746         (m68k_expand_prologue): Load GOT pointer when function needs it.
19747         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
19748         (m68k_legitimate_constant_address_p): Same.
19749         (m68k_decompose_address): Handle TLS references.
19750         (m68k_get_gp): New static function.
19751         (enum m68k_reloc): New contants.
19752         (TLS_RELOC_P): New macro.
19753         (m68k_wrap_symbol): New static function.
19754         (m68k_unwrap_symbol): New function.
19755         (m68k_final_prescan_insn_1): New static function.
19756         (m68k_final_prescan_insn): New function.
19757         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
19758         functions.
19759         (legitimize_pic_address): Handle TLS references..
19760         (m68k_tls_get_addr, m68k_get_tls_get_addr)
19761         (m68k_libcall_value_in_a0_p)
19762         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
19763         (m68k_call_m68k_read_tp): Helper variables and functions for ...
19764         (m68k_legitimize_tls_address): Handle TLS references.
19765         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
19766         New functions.
19767         (m68k_legitimize_address): Handle TLS symbols.
19768         (m68k_get_reloc_decoration): New static function.
19769         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
19770         UNSPEC_RELOC32.
19771         (m68k_output_dwarf_dtprel): Implement hook.
19772         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
19773         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
19774         m68k_call_* routines.
19775         (sched_attr_op_type): Handle TLS symbols.
19776         (gt-m68k.h): Include.
19777         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19778         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
19779
19780 2009-05-18  Martin Jambor  <mjambor@suse.cz>
19781
19782         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
19783         (visit_store_addr_for_mod_analysis): New function.
19784         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
19785         (determine_cst_member_ptr): Use gimple_assign_single_p.
19786         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
19787         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
19788         operands.  Don't check number of operands of a NOP_EXPR.
19789
19790 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
19791
19792         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
19793
19794 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19795
19796         PR c/40172
19797         * c-common.c (warn_logical_operator): Don't warn if one of
19798         expression isn't always true or false.
19799
19800 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
19801
19802         * config/i386/biarch32.h: New file.
19803         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
19804
19805 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
19806
19807         * config/mips/mips.md (*zero_extend<mode>_trunchi,
19808         *zero_extend<mode>_truncqi): Merge these into ...
19809         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
19810         Name the pattern following this as *zero_extendhi_truncqi.
19811
19812 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
19813
19814         PR middle-end/39301
19815         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
19816         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
19817         (output_info): Make field HOST_WIDEST_INT.
19818         (print_statistics): Use HOST_WIDEST_INT_PRINT.
19819         (dump_bitmat_statistics): Same.
19820
19821 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
19822
19823         * config.gcc (use_gcc_stdint):  Set to wrap.
19824         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
19825         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
19826         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
19827         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
19828         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
19829         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
19830         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
19831         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
19832
19833 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
19834
19835         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
19836         tune_64.
19837         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
19838         Move definitions earlier.
19839         (OPT_ARCH64, OPT_ARCH32): Define.
19840         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
19841         and tune_64.
19842
19843 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19844
19845         PR target/40153
19846         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
19847         implies.
19848
19849 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
19850
19851         * arm.md (movdi2): Copy non-reg values to DImode registers.
19852
19853 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
19854
19855         PR target/39942
19856         * final.c (label_to_max_skip): New function.
19857         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
19858         CODE_LABEL_NUMBER <= max_labelno.
19859         * output.h (label_to_max_skip): New prototype.
19860         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
19861         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
19862         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
19863         Handle CODE_LABELs with >= 16 byte alignment or with
19864         max_skip == (1 << align) - 1.
19865         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
19866         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
19867
19868         PR target/39942
19869         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
19870         .p2align 3 if MAX_SKIP is smaller than 7.
19871         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
19872
19873 2009-05-15  Ian Lance Taylor  <iant@google.com>
19874
19875         * alias.c (struct alias_set_entry_d): Rename from struct
19876         alias_set_entry.  Change all uses.
19877         * except.c (struct call_site_record_d): Rename from struct
19878         call_site_record.  Change all uses.
19879         * except.h (struct eh_region_d): Rename from struct eh_region.
19880         Change all uses.
19881         * gcse.c (struct hash_table_d): Rename from struct hash_table.
19882         Change all uses.
19883         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
19884         ivtype_map_elt.  Change all uses.
19885         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
19886         Change all uses.
19887         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
19888         * graphite.h (struct name_tree_d): Rename from struct name_tree.
19889         Change all uses.
19890         (struct sese_d): Rename from struct sese.  Change all uses.
19891         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
19892         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
19893         * optabs.h (struct optab_d): Rename from struct optab.  Change all
19894         uses.
19895         (struct convert_optab_d): Rename from struct convert_optab.
19896         Change all uses.
19897         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
19898         ipa_opt_pass.  Change all uses.
19899         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
19900         all uses.
19901
19902         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
19903         defined as a typedef.
19904         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
19905         defined as a tag.
19906
19907 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19908
19909         PR 16302
19910         * fold-const.c (make_range,build_range_check,merge_ranges): Move
19911         declaration to...
19912         (merge_ranges): Returns bool.
19913         * tree.h (make_range): .. to here.
19914         (build_range_check): Likewise.
19915         (merge_ranges): Likewise. Renamed from merge_ranges.
19916         * c-typeck.c (parser_build_binary_op): Update calls to
19917         warn_logical_operator.
19918         * c-common.c (warn_logical_operator): Add new warning.
19919         * c-common.h (warn_logical_operator): Update declaration.
19920
19921 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19922
19923         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
19924
19925 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19926
19927         * doc/install.texi: Document MPC requirements, flags etc.
19928
19929         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
19930         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
19931         Evaluate constant arguments.
19932         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
19933         (fold_builtin_1): Likewise, also evaluate constant arguments.
19934         Remove superfluous break.
19935         (do_mpc_ckconv): New.
19936         * real.h: Include mpc.h.
19937         * toplev.c (print_version): Output MPC version info if available.
19938
19939 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19940
19941         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
19942
19943 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
19944
19945         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
19946         only once.
19947
19948 2009-05-15  Jan Hubicka  <jh@suse.cz>
19949
19950         * doc/invoke.texi (max-early-inliner-iterations): New flag.
19951         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
19952         (try_inline): Fix return value.
19953         (cgraph_decide_inlining_incrementally): Honor new value.
19954         (cgraph_early_inlining): Handle indirect inlining.
19955         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
19956
19957 2009-05-15  Jan Hubicka  <jh@suse.cz>
19958
19959         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
19960         * cgraphunit.c (cgraph_finalize_function): Set it.
19961         (cgraph_expand_function): Use it.
19962
19963 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19964
19965         * real.c (encode_ieee_half): Define.
19966         (decode_ieee_half): Define.
19967         (ieee_half_format): Define.
19968         (arm_half_format): Define.
19969         * real.h (ieee_half_format): Declare.
19970         (arm_half_format): Declare.
19971
19972 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
19973
19974         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
19975         swapped, and reversed optabs exist before trying to use them.
19976
19977 2009-05-15  Paul Brook  <paul@codesourcery.com>
19978             Sandra Loosemore  <sandra@codesourcery.com>
19979
19980         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
19981         loads.  Allow PRE_DEC.
19982         (output_move_neon): Handle PRE_DEC.
19983         (arm_print_operand): Add 'A' for neon structure loads.
19984         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
19985         * config/arm/neon.md (neon_mov): Update comment.
19986         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
19987         calls.
19988         (Um): New constraint.
19989
19990 2009-05-15  Jan Hubicka  <jh@suse.cz>
19991
19992         Revert the following patch until testsuite fallout is fixed:
19993         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19994         * cgraph.h (struct inline_summary): New filed self_wize,
19995         size_inlining_benefit, self_time and time_inlining_benefit.
19996         (struct cgraph_global_info): Replace insns by time ans size fields.
19997         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19998         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19999         (ipcp_update_callgraph): Do not touch function bodies.
20000         * ipa-inline.c: Include except.h
20001         (MAX_TIME): New constant.
20002         (overall_insns): Remove
20003         (overall_size, max_benefit): New static variables.
20004         (cgraph_estimate_time_after_inlining): New function.
20005         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20006         (cgraph_clone_inlined_nodes): Update size.
20007         (cgraph_mark_inline_edge): Update size.
20008         (cgraph_estimate_growth): Use size info.
20009         (cgraph_check_inline_limits): Check size.
20010         (cgraph_default_inline_p): Likewise.
20011         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20012         (cgraph_decide_recursive_inlining): Check size.
20013         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20014         and times.
20015         (cgraph_decide_inlining): Likewise.
20016         (cgraph_decide_inlining_incrementally): Likewise; honor
20017         PARAM_EARLY_INLINING_INSNS.
20018         (likely_eliminated_by_inlining_p): New predicate.
20019         (estimate_function_body_sizes): New function.
20020         (compute_inline_parameters): Use it.
20021         * except.c (must_not_throw_labels): New function.
20022         * except.h (must_not_throw_labels): Declare.
20023         * tree-inline.c (init_inline_once): Kill inlining_weigths
20024         * tree-ssa-structalias.c: Avoid uninitialized warning.
20025         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20026         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20027         (PARAM_INLINE_CALL_COST): Remove.
20028         (PARAM_EARLY_INLINING_INSNS): New.
20029
20030 2009-05-15  Richard Guenther  <rguenther@suse.de>
20031
20032         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
20033         not TODO_update_ssa.
20034
20035 2009-05-15  Richard Guenther  <rguenther@suse.de>
20036
20037         PR tree-optimization/39999
20038         * gimple.h (gimple_expr_type): Use the expression type looking
20039         through useless conversions.
20040         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
20041         (vn_nary_op_insert_stmt): Likewise.
20042         (simplify_binary_expression): Likewise.
20043
20044 2009-05-15  Richard Guenther  <rguenther@suse.de>
20045
20046         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20047         New options, enabled by default.
20048         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20049         Document.
20050         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
20051         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
20052         * tree-ssa-structalias.c (gate_tree_pta): New function.
20053         (pass_build_alias): Use it.
20054
20055 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
20056
20057         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
20058         recurse on an invariant address if a conversion from a pointer
20059         type to a wider integer type is involved.
20060
20061 2009-05-15  Jan Hubicka  <jh@suse.cz>
20062
20063         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20064         * cgraph.h (struct inline_summary): New filed self_wize,
20065         size_inlining_benefit, self_time and time_inlining_benefit.
20066         (struct cgraph_global_info): Replace insns by time ans size fields.
20067         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20068         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20069         (ipcp_update_callgraph): Do not touch function bodies.
20070         * ipa-inline.c: Include except.h
20071         (MAX_TIME): New constant.
20072         (overall_insns): Remove
20073         (overall_size, max_benefit): New static variables.
20074         (cgraph_estimate_time_after_inlining): New function.
20075         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20076         (cgraph_clone_inlined_nodes): Update size.
20077         (cgraph_mark_inline_edge): Update size.
20078         (cgraph_estimate_growth): Use size info.
20079         (cgraph_check_inline_limits): Check size.
20080         (cgraph_default_inline_p): Likewise.
20081         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20082         (cgraph_decide_recursive_inlining): Check size.
20083         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20084         and times.
20085         (cgraph_decide_inlining): Likewise.
20086         (cgraph_decide_inlining_incrementally): Likewise; honor
20087         PARAM_EARLY_INLINING_INSNS.
20088         (likely_eliminated_by_inlining_p): New predicate.
20089         (estimate_function_body_sizes): New function.
20090         (compute_inline_parameters): Use it.
20091         * except.c (must_not_throw_labels): New function.
20092         * except.h (must_not_throw_labels): Declare.
20093         * tree-inline.c (init_inline_once): Kill inlining_weigths
20094         * tree-ssa-structalias.c: Avoid uninitialized warning.
20095         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20096         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20097         (PARAM_INLINE_CALL_COST): Remove.
20098         (PARAM_EARLY_INLINING_INSNS): New.
20099         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
20100         (inline-call-cost): Remove.
20101         (early-inlining-insns): New.
20102
20103 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
20104
20105         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
20106         for bounds.
20107         (print_int_cst_bounds_in_octal_p): Likewise.
20108         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
20109         with subtypes.
20110         * dwarf2out.c (base_type_die): Likewise.
20111         (is_subrange_type): Delete.
20112         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
20113         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
20114         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
20115         if the destination type is boolean.
20116         (build_range_check): Do not special-case subtypes.
20117         (fold_sign_changed_comparison): Likewise.
20118         (fold_unary): Likewise.
20119         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
20120         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
20121         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
20122         * tree.c (subrange_type_for_debug_p): New predicate based on the
20123         former is_subrange_type.
20124         * tree.h (subrange_type_for_debug_p): Declare.
20125         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
20126         (convert_affine_scev): Remove call to above function.
20127         (chrec_convert_aggressive): Likewise.
20128         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
20129         false for conversions involving subtypes.
20130         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
20131         (vrp_val_min): Likewise.
20132         (needs_overflow_infinity): Likewise.
20133         (extract_range_from_unary_expr): Likewise.
20134
20135 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
20136
20137         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20138         * config/frv/frv.c: Likewise.
20139         * config/s390/s390.c: Likewise.
20140         * config/sparc/sparc.h: Likewise.
20141         * config/i386/i386.h: Likewise.
20142         * config/i386/i386.c: Likewise.
20143         * config/crx/crx.c: Likewise.
20144         * config/m68hc11/m68hc11.h: Likewise.
20145         * config/iq2000/iq2000.c: Likewise.
20146         * config/mn10300/mn10300.h: Likewise.
20147         * config/mn10300/mn10300.c: Likewise.
20148         * config/m68k/m68k.c: Likewise.
20149         * config/rs6000/rs6000.c: Likewise.
20150         * config/rs6000/xcoff.h: Likewise.
20151         * config/rs6000/linux64.h: Likewise.
20152         * config/rs6000/sysv4.h: Likewise.
20153         * config/score/score3.c: Likewise.
20154         * config/score/score7.c: Likewise.
20155         * config/score/score.c: Likewise.
20156         * config/arm/arm.md: Likewise.
20157         * config/mips/mips.c: Likewise.
20158         * config/mips/mips.md: Likewise.
20159         * config/bfin/bfin.h: Likewise.
20160         * config/pa/pa.c: Likewise.
20161         * config/pa/constraints.md: Likewise.
20162
20163         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
20164         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
20165         * config/pdp11/pdp11.h: Use memory_address_p instead.
20166
20167 2009-05-14  Ian Lance Taylor  <iant@google.com>
20168
20169         * passes.c (finish_optimization_passes): Change i to int.
20170         * plugin.c (plugins_active_p): Change event to int.
20171         (dump_active_plugins): Likewise.
20172         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
20173         Add cast.
20174         * tree.c (tree_range_check_failed): Change c to unsigned int.
20175         (omp_clause_range_check_failed): Likewise.
20176         (build_common_builtin_nodes): Change mode to int.  Add cast.
20177         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
20178         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
20179
20180         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
20181         ++ or -- with a variable of enum type.
20182
20183 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20184
20185         PR driver/40144
20186         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20187
20188 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20189
20190         * store-motion.c: Do not include params.h
20191         * Makefile.in: Fix dependencies for various files.
20192
20193 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20194
20195         * auto-inc-dec.c: Fix pass description, remove apparent
20196         accidental duplication.
20197
20198 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20199
20200         PR middle-end/40147
20201         * ipa-utils.h (memory_identifier_string): Moved to ...
20202         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20203
20204 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20205
20206         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20207         in the former documentation of...
20208         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20209         * ira-conflicts.c (get_dup_num): Use address_operand.
20210         * targhooks.c (default_legitimate_address_p): New.
20211         * targhooks.h (default_legitimate_address_p): New.
20212         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20213         Call hook.
20214         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20215         * target.h (struct target): Add legitimate_address_p.
20216         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20217         (TARGET_INITIALIZER): Include it.
20218
20219         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20220         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20221         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20222         (TARGET_LEGITIMATE_ADDRESS_P): New.
20223
20224         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20225         (REG_OK_STRICT_P): Delete.
20226         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20227         (frv_legitimate_address_p_1): ... this.
20228         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20229         (frv_legitimate_address_p_1): ... the renamed old
20230         frv_legitimate_address_p.
20231         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20232         (TARGET_LEGITIMATE_ADDRESS_P): New.
20233
20234         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20235         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20236         * config/s390/s390.c (legitimate_address_p): Rename to...
20237         (s390_legitimate_address_p): ... this, make static.
20238         (legitimize_address): Adjust call.
20239         (TARGET_LEGITIMATE_ADDRESS_P): New.
20240         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20241
20242         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20243         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20244         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20245         (TARGET_LEGITIMATE_ADDRESS_P): New.
20246
20247         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20248         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20249         * config/spu/spu.c (spu_legitimate_address): Rename to...
20250         (spu_legitimate_address_p): ... this, make static.
20251         (TARGET_LEGITIMATE_ADDRESS_P): New.
20252
20253         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20254         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20255         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20256         (sparc_legitimate_address_p): ... this, make static and return bool.
20257         (legitimize_address): Adjust call.
20258         (TARGET_LEGITIMATE_ADDRESS_P): New.
20259
20260         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20261         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20262         * config/i386/i386.c (legitimate_address_p): Rename to...
20263         (ix86_legitimate_address_p): ... this, make static.
20264         (constant_address_p): Move after it, adjust call.
20265         (TARGET_LEGITIMATE_ADDRESS_P): New.
20266
20267         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20268         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20269         * config/avr/avr.c (legitimate_address_p): Rename to...
20270         (avr_legitimate_address_p): ... this, make static.
20271         (legitimize_address): Adjust call.
20272         (TARGET_LEGITIMATE_ADDRESS_P): New.
20273
20274         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20275         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20276         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20277         (TARGET_LEGITIMATE_ADDRESS_P): New.
20278
20279         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20280         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20281         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20282         (TARGET_LEGITIMATE_ADDRESS_P): New.
20283
20284         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20285         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20286         Remove.
20287         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20288         Make static.
20289         (TARGET_LEGITIMATE_ADDRESS_P): New.
20290
20291         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20292         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20293         Remove.
20294         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20295         Rename to...
20296         (m68hc11_legitimate_address_p): ... this, make static.
20297         (go_if_legitimate_address_internal): Rename to...
20298         (m68hc11_legitimate_address_p_1): ... this.
20299         (legitimize_address): Adjust call.
20300         (TARGET_LEGITIMATE_ADDRESS_P): New.
20301
20302         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20303         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20304         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20305         (TARGET_LEGITIMATE_ADDRESS_P): New.
20306
20307         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20308         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20309         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20310         (mn10300_legitimate_address_p): ... this, make static.
20311         (TARGET_LEGITIMATE_ADDRESS_P): New.
20312
20313         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20314         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20315         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20316         (TARGET_LEGITIMATE_ADDRESS_P): New.
20317
20318         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20319         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20320         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20321         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20322         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20323         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20324         (rs6000_legitimate_address_p): ... this, make static.
20325         (TARGET_LEGITIMATE_ADDRESS_P): New.
20326         (REG_MODE_OK_FOR_BASE_P): Delete.
20327         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20328
20329         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20330         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20331         Delete.
20332         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20333         static, adjust types.
20334         (TARGET_LEGITIMATE_ADDRESS_P): New.
20335
20336         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20337         * config/score/score.c (score_address_p): Rename to...
20338         (score_legitimate_address_p): ... this.
20339         (TARGET_LEGITIMATE_ADDRESS_P): New.
20340         * config/score/score3.c (score3_address_p): Rename to...
20341         (score3_legitimate_address_p): ... this.
20342         * config/score/score7.c (score7_address_p): Rename to...
20343         (score7_legitimate_address_p): ... this.
20344
20345         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20346         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20347         GO_IF_LEGITIMATE_ADDRESS): Delete.
20348         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20349         thumb2_legitimate_address_p): Delete.
20350         (arm_legitimate_address_p): Rename to...
20351         (arm_legitimate_address_outer_p): ... this.
20352         * config/arm/constraints.md ("Uq"): Adjust call.
20353         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20354         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20355         to...
20356         (arm_legitimate_address_outer_p): ... this.
20357         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20358         static.
20359         (TARGET_LEGITIMATE_ADDRESS_P): New.
20360
20361         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20362         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20363         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20364         (TARGET_LEGITIMATE_ADDRESS_P): New.
20365
20366         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20367         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20368         * config/vax/vax.c (legitimate_address_p): Rename to...
20369         (vax_legitimate_address_p): ... this, make static.
20370         (TARGET_LEGITIMATE_ADDRESS_P): New.
20371
20372         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20373         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20374         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20375         (TARGET_LEGITIMATE_ADDRESS_P): New.
20376
20377         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20378         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20379         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20380         (mmix_legitimate_address_p): ... this, make static.
20381         (TARGET_LEGITIMATE_ADDRESS_P): New.
20382
20383         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20384         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20385         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20386         (TARGET_LEGITIMATE_ADDRESS_P): New.
20387
20388 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20389
20390         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20391         of MODE_COMPLEX_INT.
20392
20393 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20394
20395         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20396         LCT_NORMAL in function call.
20397         * mips-tdump.c (print_file_desc): Add cast to enum type.
20398         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20399         (mark_stabs): Add casts to enum types.
20400         (parse_stabs_common): Add casts to enum types.
20401
20402 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20403
20404         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20405         Check for invalid values of LETTER.
20406
20407 2009-05-13  Taras Glek  <tglek@mozilla.com>
20408
20409         * attribs.c (register_attribute): moved out attribute registration
20410         into register_attribute.
20411         * doc/plugins.texi: Documented register_attribute and
20412         PLUGIN_ATTRIBUTES.
20413         * gcc-plugin.h: Added forward decl for register_attribute.
20414         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20415         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20416         PLUGIN_ATTRIBUTES boilerplate.
20417
20418 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20419
20420         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20421         values even in sentinel and empty entries.
20422         (ms_printf_flag_specs):  Likewise.
20423         (ms_scanf_flag_specs):  Likewise.
20424         (ms_strftime_flag_specs):  Likewise.
20425         (ms_print_char_table):  Likewise.
20426         (ms_scan_char_table):  Likewise.
20427         (ms_time_char_table):  Likewise.
20428
20429 2009-05-13  Doug Kwan  <dougkwan@google.com>
20430
20431         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20432
20433 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20434
20435         * config/mips/mips.md (store): Add attributes for QI and HI.
20436         Update comment.
20437         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20438         (truncdi<mode>2): ... this new pattern.
20439
20440 2009-05-13  Brad Hards  <bradh@kde.org>
20441
20442         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20443
20444 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20445             Ben Elliston <bje@au.ibm.com>
20446
20447         PR middle-end/40035
20448         * dse.c (check_mem_read_rtx): Guard against width == -1.
20449
20450 2009-05-13  Michael Matz  <matz@suse.de>
20451
20452         PR middle-end/39976
20453         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20454         (trivially_conflicts_p): New function.
20455         (insert_backedge_copies): Use it.
20456
20457 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20458
20459         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20460         (handle_stdc_pragma): Use new enum constant names.
20461         (handle_pragma_float_const_decimal64): Ditto.
20462
20463 2009-05-13  Ian Lance Taylor  <iant@google.com>
20464
20465         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20466         tree.def.
20467
20468 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20469
20470         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20471         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20472         multilibs.
20473         * config/m68k/m68k.h (FL_UCLINUX): Define.
20474
20475 2009-05-13  Jan Hubicka  <jh@suse.cz>
20476
20477         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20478
20479 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20480
20481         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20482         unless -fschedule-insns is specified.
20483
20484 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20485
20486         PR target/39561
20487         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20488         TARGET_EXPAND_CBRANCHDI4.
20489         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20490         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20491         (cmpeqdi): Fix comment.
20492
20493 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20494
20495         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20496         (sh_legitimate_address_p): Likewise.
20497         * config/sh/sh.c (sh_legitimate_index_p): New.
20498         (sh_legitimate_address_p): Likewise.
20499         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20500         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20501         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20502         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20503         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20504         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20505         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20506         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20507         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20508
20509 2009-05-12  Jan Hubicka  <jh@suse.cz>
20510
20511         * tree-inline.c (estimate_operator_cost): Add operands;
20512         when division happens by constant, it is cheap.
20513         (estimate_num_insns): Loads and stores are not having cost of 0;
20514         EH magic stuff is cheap; when computing runtime cost of switch,
20515         use log2 base of amount of its cases; builtin_expect has cost of 0;
20516         compute cost for moving return value of call.
20517         (init_inline_once): Initialize time_based flags.
20518         * tree-inline.h (eni_weights_d): Add time_based flag.
20519
20520 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20521
20522         * df-core.c: Update head documentation.
20523
20524 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20525
20526         PR bootstrap/40118
20527         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20528         shadowing exisiting variable op1.
20529
20530 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20531
20532         PR target/37179
20533         * config/i386/driver-i386.c (processor_signatures): New enum.
20534         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20535         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20536         processor signature to detect geode processor.
20537
20538 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20539
20540         Revert:
20541
20542         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20543
20544         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20545         causes spurious differences between trunk and cond-optab branch.
20546
20547 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20548
20549         * dojump.c (compare_from_rtx): Delete.
20550         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20551         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20552         if the comparison does not satisfy the predicate; test predicates for
20553         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20554         further if one existing pattern fails.
20555         * expr.h (compare_from_rtx): Delete.
20556         (prepare_operand): Declare it.
20557         * optabs.c: Change "lib call" to "libcall" throughout.
20558         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20559         HAVE_conditional_trap, emit_cmp_insn): Delete.
20560         (can_compare_p): Delete cmp_optab case.
20561         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20562         Accept other parameters by value.
20563         (prepare_operand): Make non-static.
20564         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20565         other parameters by value.  Try to widen operands here based on
20566         an optab_methods argument and looking at cbranch_optab.
20567         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20568         loop.  Use cbranch_optab directly.
20569         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20570         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20571         assertion.
20572         (emit_conditional_move, emit_conditional_add): Inline what's needed
20573         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20574         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20575         with COMPARE.  Move cmov_optab and cstore_optab above
20576         with cbranch_optab, move cmp_optab down with ucmp_optab,
20577         remove tst_otpab.  Do not initialize trap_rtx.
20578         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20579         for trap code.  Do not check HAVE_conditional_trap.  Use
20580         prepare_cmp_insn.  Accept no predicate for operand 3.
20581         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20582         (OTI_ctrap, ctrap_optab): New.
20583         (tst_optab): Delete.
20584         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20585         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20586         with lookup of ctrap_optab.
20587         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20588         Delete.
20589         (ctrap_optab): New.
20590
20591         * combine.c (combine_simplify_rtx, simplify_set): Do not
20592         special case comparing against zero for cc0 machines.
20593         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20594         COMPARE on cc0 machines.
20595         (simplify_relational_operation): Return a new expression when
20596         a COMPARE could be removed.
20597         * final.c (final_scan_insn): Compare cc_status values
20598         against LHS of a (compare FOO (const_int 0)) cc0 source.
20599         Also check if cc_status.value is the full compare.
20600
20601         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20602         (cstoreMM4): Document.
20603         (conditional_trap): Document ctrapMM4 instead.
20604         (sync_compare_and_swapMM): Refer to cbranchcc4.
20605         (Dependent Patterns): Eliminate obsolete information referring to
20606         the old jump optimization phase.
20607         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20608         of compares with 0 on cc0 machines.
20609         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20610         avoiding references to cc0.  Remove text about storing operands
20611         in cmpMM.
20612         * doc/tm.texi (Condition Codes): Include blurb on different
20613         condition code representations, separate into subsections for
20614         CC0, MODE_CC and conditional execution.
20615
20616         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
20617         alpha_emit_setcc): Accept operands and a machine mode.
20618         * config/alpha/alpha.c (alpha_emit_conditional_branch):
20619         Get code/op0/op1 from operands, use machine mode argument
20620         instead of alpha_compare.fp_p.  Emit the branch here.
20621         (alpha_emit_setcc): Likewise, and return boolean.
20622         (alpha_emit_conditional_move): Likewise.  Assert that
20623         cmp_op_mode == cmp_mode, and simplify accordingly.
20624         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
20625         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
20626         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
20627         Delete.
20628         (stack probe test): Use cbranchdi4.
20629         * config/alpha/predicates.md (alpha_cbranch_operator): New.
20630
20631         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
20632         * config/arc/arc.h (movsicc, movsfcc): Use it.
20633         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
20634         (cbranchsi4, cstoresi4): New.
20635         (cmpsi, bCC and sCC expanders): Remove.
20636
20637         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
20638         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
20639         * config/arm/predicates.md (arm_comparison_operator): Only include
20640         floating-point operators if there is a hardware floating-point unit.
20641         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
20642         deferring to cbranch_cc and cstore_cc respectively.
20643         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
20644         cbranch_cc, cstore_cc): New.
20645         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
20646         arm_compare_op1.
20647         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
20648
20649         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
20650         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
20651         as an argument.
20652         (adjust_insn_length): Adjust calls.
20653         (avr_reorg): Handle (compare (foo) (const_int 0)).
20654         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
20655         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
20656         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
20657         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
20658         (bCC): Remove.
20659         (cbranchqi4, cbranchhi4, cbranchsi4): New.
20660         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
20661
20662         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
20663         (cbranchsi4, cstorebi4, cstoresi4): New.
20664         (movbisi): This insn is duplicate, split it to zero_extend.
20665         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
20666         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
20667         (bfin_optimize_loop): Use cbranch expander.
20668         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
20669         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
20670         (bfin_bimode_comparison_operator): ... this.
20671         (bfin_direct_comparison_operator): New.
20672
20673         * config/cris/cris.c (cris_normal_notice_update_cc): Look
20674         inside (compare FOO (const_int 0)).
20675         (cris_rtx_costs): Handle ZERO_EXTRACT.
20676         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
20677         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
20678         (*tstdi_v32): Delete.
20679         (*cmpdi_non_v32): Add M alternative for operand 1.
20680         (cmpsi, cmp<mode>): Make private.
20681         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
20682         with COMPARE.
20683         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
20684
20685         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
20686         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
20687         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
20688         (cc_reg_operand): New.
20689         (any_cond): Delete.
20690         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
20691         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
20692         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
20693         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
20694         crx_expand_scond): Delete.
20695
20696         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
20697         (cbranchsi4): New.
20698         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
20699         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
20700
20701         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
20702         cstoresi4, cstoresf4, cstoredf4): New.
20703         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
20704         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20705         Receive the entire operands array.
20706         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
20707         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
20708         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
20709         Get test/op0/op1 from the operands array.
20710         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
20711
20712         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
20713         (h8300_expand_store): New.
20714         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
20715         (const_int 0)).
20716         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
20717         (h8300_expand_store): New.
20718         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
20719         or do not try to produce (set (cc0) REG).
20720         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
20721         change a compare into a move to a scratch register.  Disable some
20722         peepholes when comparing with zero.
20723         (tstsi, tsthi, tstsi, cmpqi): Make private.
20724         (cmphi): Delete.
20725         (bCC, sCC): Delete.
20726         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
20727         cstoresi4): New.
20728
20729         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
20730         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
20731         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
20732         (ix86_emit_i387_log1p): Use cbranchxf2.
20733         (ix86_expand_setcc): Return void.
20734         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
20735         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
20736         cmp<MODEF>, cmpcc): Remove.
20737         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
20738         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
20739         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
20740         (sCC and bCC expanders): Remove.
20741         (stack_protect_test): Use cbranchcc4.
20742
20743         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
20744         Delete.
20745         (ia64_expand_compare): Accept three rtx by reference and return void.
20746         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
20747         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
20748         from *expr.  Update *expr with the BImode comparison to do.
20749         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
20750         cmptf, bCC, sCC, conditional_trap): Delete.
20751         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
20752         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
20753         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
20754         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
20755         * config/ia64/predicates.md (ia64_cbranch_operator): New.
20756
20757         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
20758         type of last argument.
20759         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
20760         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
20761         use machine mode argument instead of branch_type.  Remove dead
20762         code for floating-point comparisons.
20763         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
20764         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
20765         Remove.
20766         (cbranchsi4, cstoresi4): New.
20767         * config/iq2000/predicates.md (reg_or_const_operand): New.
20768
20769         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
20770         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
20771         (b<code>_op): Rewrite to...
20772         (bcc_op): ... this, using match_operator.
20773         (s<code>_op): Rewrite to...
20774         (scc_op): ... this, using match_operator.
20775         (s<code>_24_op): Rewrite to...
20776         (scc_op_24): ... this, using match_operator.
20777         (s<code>_<mode>): Rewrite to...
20778         (cstore<mode>4): ... this, using match_operator.
20779         (s<code>_<mode>_24): Rewrite to...
20780         (cstore<mode>4_24): ... this, using match_operator.
20781         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
20782         m32c_unpend_compare, m32c_expand_scc): Delete.
20783         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
20784         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
20785         (m32c_expand_movcc): Change NE to EQ if necessary.
20786         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
20787
20788         * config/m32r/m32r-protos.h (gen_cond_store): New.
20789         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
20790         (gen_cond_store): New, from sCC patterns.
20791         (m32r_expand_block_move): Use cbranchsi4.
20792         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
20793         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
20794         (cbranchsi4, cstoresi4): New.
20795
20796         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
20797         Delete.
20798         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
20799         (m68hc11_notice_update_cc): Look into a compare with 0.
20800         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
20801         Delete.
20802         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
20803         cmphi, cmpqi, bCC): Delete.
20804         (cbranchsi4, cbranchhi4, cbranchqi4): New.
20805         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
20806         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
20807         sets with COMPARE.
20808
20809         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
20810         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
20811         * config/m68k/constraints.md (H): New.
20812         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
20813         the define_insn below.
20814         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
20815         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
20816         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
20817         patterns): Wrap RHS with COMPARE.
20818         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
20819         (*cmpdi_internal): Name this pattern.
20820         (cmpdi): Change to define_insn.
20821         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
20822         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
20823         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
20824         predicate.
20825         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
20826         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
20827         (conditional_trap): Change to...
20828         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
20829         (*conditional_trap): Use the ordered_comparison_operator and
20830         const1_operand predicates.
20831         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
20832         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
20833         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
20834         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
20835
20836         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
20837         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
20838         (mcore_gen_compare): New.
20839         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
20840         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
20841         (mcore_gen_compare): ... this.
20842         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
20843         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
20844         (stack probe pattern): Use cbranchsi4.
20845
20846         * config/mips/predicates.md (mips_cstore_operator): New.
20847         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
20848         * config/mips/mips.md (any_cond): Delete.
20849         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
20850         always succeed.
20851         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
20852         fixuns_truncsfdi2): Use cbranch patterns.
20853         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
20854         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
20855         Adjust call to mips_expand_conditional_branch.
20856         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
20857         cstore<GPR:mode>4.
20858         * config/mips/mips-protos.h (mips_expand_conditional_branch,
20859         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
20860         * config/mips/mips.c (cmp_operands): Delete.
20861         (mips_emit_compare): Get comparison operands from *op0/*op1.
20862         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
20863         that it succeeds.  Use op0/op1 instead of cmp_operands.
20864         (mips_expand_conditional_branch, mips_expand_conditional_move,
20865         mips_expand_conditional_trap): Likewise.
20866         (mips_block_move_loop): Use cbranch patterns.
20867         * config/mips/mips.h (cmp_operands): Delete.
20868
20869         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
20870         (mmix_gen_compare_reg): Just return a register in the right CC mode.
20871         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
20872         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
20873         (*cmpcc_folded): Rename to...
20874         (*cmpdi_folded): this.
20875         (*cmpcc): Rename to...
20876         (*cmps): ... this.
20877         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
20878         (bCC): Remove.
20879         (cbranchdi4): New.
20880         (cbranchdf4): New.  Handle invalid comparisons here.
20881         * config/mmix/predicates.md (float_comparison_operator): New.
20882
20883         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
20884         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
20885         * config/mn10300/mn10300.md (tst): Delete.
20886         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
20887         Name these patterns and wrap RHS in a compare.
20888         (*cmpsi): Make this pattern private.  Include tst.
20889         (*cmpsf): Make this pattern private.
20890         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
20891         (compare with zero peepholes): Likewise.
20892         (bCC): Remove.
20893         (cbranchsi4, cbranchsf4): New.
20894         (casesi): Use cbranchsi4.
20895
20896         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
20897         hppa_branch_type): Delete.
20898         (return_addr_rtx): Use cbranchsi4.
20899         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
20900         Emit CCFPmode comparison here.
20901         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
20902         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
20903         hppa_branch_type): Delete.
20904         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
20905         (movsicc, movdicc): Remove references to hppa_compare_op0,
20906         hppa_compare_op1 and compare_from_rtx.
20907         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
20908         (casesi): Use cbranchsi4.
20909
20910         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
20911         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
20912         * config/pdp11/pdp11.md (register_or_const0_operand): New.
20913         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
20914         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
20915         (bCC): Delete.
20916         (cbranchdf4, cbranchhi4, cbranchqi4): New.
20917         (*branch, *branch_inverted): New.
20918
20919         * config/picochip/picochip.md (cbranchhi4): Use
20920         ordered_comparison_operator.
20921         (cmphi, bCC): Remove.
20922
20923         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
20924         (trap_comparison_operator): Delete.
20925         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
20926         rs6000_emit_cbranch): Accept mode and operands.
20927         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
20928         rs6000_compare_fp_p): Delete.
20929         (rs6000_generate_compare): Accept mode and comparison.  Extract code
20930         and op0/op1 from there.  Replace references to rs6000_compare_op0
20931         and rs6000_compare_op1.
20932         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
20933         extract result from passed operands.
20934         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
20935         extract loc from passed operands.
20936         (rs6000_emit_cmove): Likewise.
20937         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
20938         rs6000_compare_fp_p): Delete.
20939         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
20940         (cbranch<GPR>4, cbranch<FP>4): New.
20941         (cstore<mode>4): New.  Consolidate here all choices about when to use
20942         portable or specialized sCC sequences.
20943         (stack_protect_test): Use cbranchsi4.
20944         (conditional_trap): Replace with ctrap<GPR>4.
20945         (conditional trap insn): Replace trap_comparison_operator with
20946         ordered_comparison_operator.
20947
20948         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
20949         (s390_emit_prologue): Use ctrap.
20950         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
20951         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
20952         New predicates replacing...
20953         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
20954         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
20955         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
20956         (add<mode>cc): Do not use s390_compare_op0/op1.
20957         (s<code>): Change to...
20958         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
20959         (seq): Change to...
20960         (cstorecc4): ... this.  Handle EQ or NE equally.
20961         (*sne): Un-privatize for use in cstorecc4.
20962         (b<code>): Change to...
20963         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
20964         (conditional_trap): Replace with...
20965         (ctrap<GPR>4, ctrap<FP>4): ... these.
20966         (stack_protect): Use cbranchcc4.
20967
20968         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
20969         * config/score/score-protos.h (score_gen_cmp): Delete.
20970         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
20971         (score_block_move-loop): Use cbranchsi4.
20972         * config/score/score.md (cbranchsi4): New.
20973         (cmpsi, bCC): Delete.
20974         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
20975         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20976         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
20977         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
20978         * config/score/score3.h (score3_gen_cmp): Delete.
20979         * config/score/score7.h (score7_gen_cmp): Delete.
20980
20981         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
20982         (sh_emit_scc_to_t): ... this.  Return void.
20983         (from_compare): Rename to...
20984         (sh_emit_compare_and_branch): ... this.
20985         (sh_emit_compare_and_set): New.
20986         (sh_expand_t_scc): Accept operands.
20987         * config/sh/predicates.md (sh_float_comparison_operator): New.
20988         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
20989         (prepare_scc_operands): Rename to...
20990         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
20991         arguments.
20992         (sh_emit_cheap_store_flag): New.
20993         (sh_emit_set_t_insn): New.
20994         (from_compare): Rename to...
20995         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
20996         handling of TARGET_SH2E floating point to avoid recursive call.
20997         Generate branch here.
20998         (sh_emit_compare_and_set): New.
20999         (sh_expand_t_scc): Get op0/op1 from arguments.
21000         (sh_emit_cheap_store_flag): New.
21001         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
21002         cases.
21003         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
21004         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
21005         (movsicc, movdicc): Do nothing when it recreated operands from
21006         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
21007         prepare_scc_operands (now sh_emit_scc_to_t).
21008         (udivdi3): Use cstoresi4.
21009         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
21010         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
21011         (cbranchint4_media, cbranchfp4_media): New.
21012         (casesi): Use cbranchdi4.
21013         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
21014         Delete.
21015         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
21016         (movnegt): Remove second operand.
21017         (cbranchsf4, cbranchdf4): New.
21018         (stack_protect): Use cbranchdi4/cbranchsi4.
21019
21020         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
21021         (gen_compare_reg): Accept comparison, extract part of it to...
21022         (gen_compare_reg_1): ... this.
21023         (gen_compare_operator): Delete.
21024         (gen_v9_scc): Accept separate destination, comparison code and arms.
21025         Do not use sparc_compare_op0/sparc_compare_op1.
21026         (emit_scc_insn, emit_conditional_branch_insn): New.
21027         (emit_v9_brxx): Make static.  Remove useless assertion.
21028         (sparc_emit_float_lib_cmp): Return RTL instead of calling
21029         emit_cmp_insn.
21030         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
21031         * config/sparc/sparc-protos.h (gen_compare_reg,
21032         sparc_emit_float_lib_cmp): Adjust prototype.
21033         (emit_scc_insn, emit_conditional_branch_insn): New.
21034         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
21035         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
21036         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
21037         iterators to the top.
21038         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
21039         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
21040         snedi_special_trunc): Delete.
21041         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
21042         and snedi_special_trunc.
21043         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
21044         cbranchdi4, cbranch<F:mode>4): New.
21045         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
21046         here.  Use gen_compare_reg instead of gen_compare_operator.
21047         (conditional_trap): Replace with...
21048         (ctrapsi4, ctrapdi4): ... this.
21049         (stack_protect_test): Use cbranchcc4.
21050
21051         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
21052         argument to rtx.
21053         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
21054         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
21055         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
21056         from operands[0] or operands[3] depending on is_set.
21057         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
21058         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
21059         cmpdf, bCC), sCC: Remove.
21060         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
21061         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
21062         cstoredf4): New.
21063         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
21064         spu_emit_branch_or_set.
21065
21066         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
21067         Add two arguments.
21068         * config/stormy16/stormy16.h (xstormy16_compare_op0,
21069         xstormy16_compare_op1): Delete.
21070         * config/stormy16/stormy16.c (xstormy16_compare_op0,
21071         xstormy16_compare_op1): Delete.
21072         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
21073         Adjust calls.
21074         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
21075         (cmphi, cmpsi, bCC): Remove.
21076
21077         * config/v850/v850.md (tstsi, cmpsi): Fold into...
21078         (*cmpsi): ... this one.
21079         (cbranchsi4, cstoresi4): New.
21080         (bCC expanders): Delete.
21081         (sCC insns): Fold into...
21082         (*setcc): ... this one.
21083         (casesi): Do not use gen_cmpsi and gen_bgtu.
21084         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
21085         (movsicc): Simplify.
21086         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
21087
21088         * config/vax/vax-protos.h (cond_name): New.
21089         (vax_output_conditional_branch): Remove.
21090         * config/vax/vax.c (cond_name): New.
21091         (vax_output_conditional_branch): Remove.
21092         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
21093         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
21094         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
21095         (bit<VAXint>): Wrap source with (compare).
21096         (b<code> and following unnamed pattern): Rename to *branch and
21097         *branch_reversed.  Change macroization to match_operator.
21098         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
21099
21100         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
21101         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
21102         Change last argument to machine_mode.
21103         (xtensa_expand_scc): Add machine_mode argument.
21104         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
21105         (gen_conditional_move, xtensa_expand_conditional_branch,
21106         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
21107         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
21108         Adjust operand numbers.
21109         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
21110         Delete.
21111         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
21112         (cmpsi, cmpsf, b<code>, s<code>): Delete.
21113         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
21114
21115 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21116
21117         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21118         causes spurious differences between trunk and cond-optab branch.
21119
21120 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21121
21122         PR target/37137
21123         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
21124
21125 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21126
21127         * tree.c (iterative_hash_pointer): Delete.
21128         (iterative_hash_expr): Short-circuit handling of NULL pointer.
21129         Hash UIDs and versions of SSA names.  Don't special-case built-in
21130         function declarations.
21131
21132 2009-05-11  Ian Lance Taylor  <iant@google.com>
21133
21134         PR bootstrap/40103
21135         * graphite.c: Force -Wc++-compat to only be a warning before
21136         #including "cloog/cloog.h".
21137
21138 2009-05-11  Martin Jambor  <mjambor@suse.cz>
21139
21140         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
21141
21142 2009-05-11  Jan Hubicka  <jh@suse.cz>
21143
21144         * tree-ssa-loop-ivcanon.c: Include target.h
21145         (struct loop_size): new structure.
21146         (constant_after_peeling): New predicate.
21147         (tree_estimate_loop_size): New function.
21148         (estimated_unrolled_size): Rewrite for new estimates.
21149         (try_unroll_loop_completely): Use new estimates.
21150         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
21151
21152 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21153
21154         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
21155         libcpp interface change.
21156         (spu_macro_to_expand): Likewise.
21157
21158 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
21159
21160         PR tree-optimization/40026
21161         * gimplify.c (gimplify_init_constructor): Change initial conditional
21162         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
21163         optimize_compound_literals_in_ctor.
21164
21165 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
21166
21167         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
21168         New devices.
21169         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
21170
21171 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
21172
21173         * tree-vect-data-refs.c (vect_analyze_group_access): Use
21174         HOST_WIDE_INT for gap.
21175
21176 2009-05-11  Ira Rosen  <irar@il.ibm.com>
21177
21178         PR tree-optimization/40074
21179         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
21180         account in group size and step comparison.
21181
21182 2009-05-11  Richard Guenther  <rguenther@suse.de>
21183
21184         * passes.c (init_optimization_passes): Strip now incorrect comment.
21185         (execute_function_todo): Do not set PROP_alias.
21186         * tree-pass.h (PROP_alias): Remove.
21187         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21188         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21189         * tree-nrv.c (pass_return_slot): Likewise.
21190         * tree-object-size.c (pass_object_sizes): Likewise.
21191         * tree-ssa-dom.c (pass_dominator): Likewise.
21192         (pass_phi_only_cprop): Likewise.
21193         * tree-ssa-dse.c (pass_dse): Likewise.
21194         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21195         (pass_cselim): Likewise.
21196         * tree-ssa-pre.c (pass_pre): Likewise.
21197         (pass_fre): Likewise.
21198         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21199         * tree-ssa-sink.c (pass_sink_code): Likewise.
21200         * tree-stdarg.c (pass_stdarg): Likewise.
21201         * tree-tailcall.c (pass_tail_calls): Likewise.
21202         * tree-vrp.c (pass_vrp): Likewise.
21203
21204 2009-05-10  Ian Lance Taylor  <iant@google.com>
21205
21206         * basic-block.h (enum profile_status): Break out of struct
21207         control_flow_graph.
21208         * cgraph.h (struct inline_summary): Break out of struct
21209         cgraph_local_info.
21210         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21211         of struct cgraph_order_sort.
21212         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21213         * cse.c (struct branch_path): Break out of struct
21214         cse_basic_block_data.
21215         * except.h (enum eh_region_type): Break out of struct eh_region.
21216         * gcc.c (enum add_del): Break out of struct modify_target.
21217         * genrecog.c (enum decision_type): Break out of struct decision_test.
21218         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21219         ggc_pch_data.
21220         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21221         * regmove.c (enum match_use): New enum, broken out of struct match.
21222         * sched-int.h (enum post_call_group): New enum, broken out of
21223         struct deps.
21224         (struct deps_reg): Break out of struct deps.
21225         * target.h (struct asm_int_op): Break out of struct gcc_target.
21226         * tree-eh.c (struct goto_queue_node): Break out of struct
21227         leh_tf_state.
21228         * tree-inline.h (enum copy_body_cge_which): Break out of
21229         copy_body_data.
21230         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21231
21232         * c-decl.c (in_struct, struct_types): New static variables.
21233         (pushtag): Add loc parameter.  Change all callers.
21234         (lookup_tag): Add ploc parameter.  Change all callers.
21235         (check_compound_literal_type): New function.
21236         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21237         -Wc++-compat, warn about struct/union/enum types defined within a
21238         struct or union.
21239         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21240         and loc parameters.  Change all callers.  Change error calls to
21241         error_at, using loc.  For a redefinition, if the location of the
21242         original definition is known, report it.  Set in_struct and
21243         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21244         (finish_struct): Add new parameters enclosing_in_struct and
21245         enclosing_struct_types.  Change all callers.  Set
21246         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21247         in the struct.  If in a struct, add this struct to struct_types.
21248         (start_enum): Add loc parameter.  Change all callers.  Use
21249         error_at for errors, using loc.  For a redefinition, if the
21250         location of the original definition is known, report it.  If in a
21251         struct, add this enum type to struct_types.  If -Wc++-compat warn
21252         if in sizeof, typeof, or alignof.
21253         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21254         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21255         (c_parser_enum_specifier): Get enum location for start_enum.
21256         (c_parser_struct_or_union_specifier): Get struct location for
21257         start_struct.  Save in_struct and struct_types status between
21258         start_struct and finish_struct.
21259         (c_parser_cast_expression): Get location of cast.
21260         (c_parser_alignof_expression): Get location of type.
21261         (c_parser_postfix_expression): Likewise.
21262         (c_parser_postfix_expression_after_paren_type): Add type_loc
21263         parameter.  Change all callers.  Call check_compound_literal_type.
21264         Use type_loc for error about variable size type.
21265         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21266         of an enum constant from an enum type defined in a struct or union.
21267         (c_cast_expr): Add loc parameter.  Change all callers.  If
21268         -Wc++-compat, warn about defining a type in a cast.
21269         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21270         (start_enum, start_struct, finish_struct): Update declarations.
21271         (parser_xref_tag, c_cast_expr): Update declarations.
21272         (check_compound_literal_type): Declare.
21273
21274 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21275
21276         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21277         for recent libcpp interface change.
21278         (rs6000_macro_to_expand): Likewise.
21279
21280 2009-05-10  Michael Matz  <matz@suse.de>
21281
21282         PR target/40031
21283         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21284         not at entry of function.
21285
21286 2009-05-10  Richard Guenther  <rguenther@suse.de>
21287
21288         PR tree-optimization/40081
21289         Revert
21290         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21291         using the main variant of the element type.  Do not fiddle with
21292         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21293
21294         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21295         structs with volatile fields.
21296
21297 2009-05-10  Jan Hubicka  <jh@suse.cz>
21298
21299         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21300         (estimate_move_cost): Assert that it does not get called for
21301         VOID_TYPE_P.
21302         (estimate_num_insns): Skip VOID types in argument handling.
21303         (optimize_inline_calls): Delete unreachable blocks and verify that
21304         callgraph is valid.
21305
21306 2009-05-10  Jan Hubicka  <jh@suse.cz>
21307
21308         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21309         * cgraph.c (cgraph_mark_address_taken_node): New function.
21310         (dump_cgraph_node): Dump new flag.
21311         * cgraph.h (struct cgraph_node): Add address_taken.
21312         (cgraph_mark_address_taken_node): New function.
21313         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21314         since new direct calls can be born.
21315
21316 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21317
21318         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21319         tok->val.node.node.
21320
21321 2009-05-10  Jan Hubicka  <jh@suse.cz>
21322
21323         PR middle-end/40084
21324         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21325         argument; rewrite.
21326         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21327         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21328         * tree-inline.c (copy_bb): Set frequency correctly.
21329         (fold_marked_statements): Update call to
21330         cgraph_update_edges_for_call_stmt.
21331
21332 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21333
21334         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21335         identifiers in diagnostics.
21336         * config/arm/arm.c (arm_handle_fndecl_attribute,
21337         arm_handle_isr_attribute): Likewise.
21338         * config/avr/avr.c (avr_handle_progmem_attribute,
21339         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21340         * config/bfin/bfin.c (handle_int_attribute,
21341         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21342         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21343         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21344         Likewise.
21345         * config/darwin.c (darwin_handle_kext_attribute,
21346         darwin_handle_weak_import_attribute): Likewise.
21347         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21348         h8300_handle_eightbit_data_attribute,
21349         h8300_handle_tiny_data_attribute): Likewise.
21350         * config/i386/i386.c (ix86_handle_cconv_attribute,
21351         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21352         * config/i386/winnt.c (ix86_handle_shared_attribute,
21353         ix86_handle_selectany_attribute): Likewise.
21354         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21355         * config/m32c/m32c.c (function_vector_handler): Likewise.
21356         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21357         m68hc11_handle_fntype_attribute): Likewise.
21358         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21359         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21360         * config/mips/mips.c (mips_insert_attributes,
21361         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21362         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21363         rs6000_handle_struct_attribute): Likewise.
21364         * config/sh/sh.c (sh_insert_attributes,
21365         sh_handle_resbank_handler_attribute,
21366         sh_handle_interrupt_handler_attribute,
21367         sh2a_handle_function_vector_handler_attribute,
21368         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21369         Likewise.
21370         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21371         * config/spu/spu.c (spu_handle_fndecl_attribute,
21372         spu_handle_vector_attribute): Likewise.
21373         * config/stormy16/stormy16.c
21374         (xstormy16_handle_interrupt_attribute): Likewise.
21375         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21376         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21377
21378 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21379
21380         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21381         (pp_translate_identifiers): New.
21382         (pp_identifier): Only conditionally translate identifier to locale
21383         character set.
21384         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21385         (pp_base_tree_identifier): Only conditionally translate identifier
21386         to locale character set.
21387         * c-pretty-print.c (M_): Define.
21388         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21389         fragments for conditional translation with M_.
21390         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21391         identifier translation.
21392
21393 2009-05-10  Richard Guenther  <rguenther@suse.de>
21394
21395         PR tree-optimization/40081
21396         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21397         using the main variant of the element type.  Do not fiddle with
21398         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21399
21400 2009-05-09  Jan Hubicka  <jh@suse.cz>
21401
21402         PR middle-end/40080
21403         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21404         indirect calls; verify cgraph afterwards.
21405
21406 2009-05-09  Jan Hubicka  <jh@suse.cz>
21407
21408         PR bootstrap/40082
21409         * ipa.c (update_inlined_to_pointer): New function.
21410         (cgraph_remove_unreachable_nodes): Use it.
21411
21412 2009-05-09  Jan Hubicka  <jh@suse.cz>
21413
21414         * tree-eh.c (struct leh_state): Remove prev_try.
21415         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21416         not track prev_try.
21417         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21418         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21419         remove_eh_handler_and_replace, foreach_reachable_handler,
21420         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21421         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21422         (gen_eh_region_cleanup): Update prototype.
21423
21424 2009-05-09  Jan Hubicka  <jh@suse.cz>
21425
21426         PR middle-end/40043
21427         * except.c (copy_eh_region): Always set prev_try.
21428         (redirect_eh_edge_to_label): Find outer try.
21429         (foreach_reachable_handler): When looking for prev try
21430         handle case where previous try is not going to be taken.
21431
21432 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21433
21434         PR tree-optimization/40049
21435         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21436         only vector/vector shifts, convert the type of the constant to the
21437         appropriate type to avoid building incorrect trees, which
21438         eventually have problems with garbage collection.
21439
21440 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21441
21442         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21443         -1 for complex floating-point types if honoring signed zeros.
21444
21445 2009-05-08  Jan Hubicka  <jh@suse.cz>
21446
21447         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21448         argument; handle correctly when profile is absent.
21449         (build_cgraph_edges): Update.
21450         (rebuild_cgraph_edges): Update.
21451         * cgraph.c: Do not include varray.h.
21452         (cgraph_set_call_stmt_including_clones): New function.
21453         (cgraph_create_edge_including_clones): Likewise
21454         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21455         (cgraph_update_edges_for_call_stmt): Handle clones.
21456         (cgraph_remove_node): Handle clone tree.
21457         (cgraph_remove_node_and_inline_clones): New function.
21458         (dump_cgraph_node): Dump clone tree.
21459         (cgraph_clone_node): Handle clone tree.
21460         (clone_function_name): Bring here from tree-inline.c.
21461         (cgraph_create_virtual_clone): New function.
21462         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21463         (cgraph_clone_info): New function.
21464         (strut cgraph_node): Add clone_info and new clone tree pointers.
21465         (cgraph_remove_node_and_inline_clones,
21466         cgraph_set_call_stmt_including_clones,
21467         cgraph_create_edge_including_clones,
21468         cgraph_create_virtual_clone): Declare.
21469         (cgraph_function_versioning): Use VEC argument.
21470         (compute_call_stmt_bb_frequency): Update prototype.
21471         (cgraph_materialize_all_clones): New function.
21472         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21473         (ipcp_create_replace_map): Update to VECtors.
21474         (ipcp_update_callgraph): Use virtual clones.
21475         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21476         (ipcp_update_profiling): Do not update local profiling.
21477         (ipcp_insert_stage): Use VECtors and virtual clones.
21478         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21479         (clone_of_p): New function.
21480         (cgraph_preserve_function_body_p): Use clone tree.
21481         (cgraph_optimize): Materialize clones.
21482         (cgraph_function_versioning): Update for VECtors.
21483         (save_inline_function_body): Use clone tree.
21484         (cgraph_materialize_clone): New function.
21485         (cgraph_materialize_all_clones): Likewise.
21486         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21487         * ipa.c: Include gimple.h.
21488         (cgraph_remove_unreachable_nodes): Use clone tree.
21489         * ipa-prop.c (ipa_note_param_call): Update call to
21490         compute_call_stmt_bb_frequencycall.
21491         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21492         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21493         (copy_bb): Handle updating of clone tree; add new edge when new call
21494         appears.
21495         (expand_call_inline): Be strict about every call having edge.
21496         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21497         (delete_unreachable_blocks_update_callgraph): New function.
21498         (tree_function_versioning): Use VECtors; always remove unreachable
21499         blocks and fold conditionals.
21500         * tree-inline.h: Do not include varray.h.
21501         (tree_function_versioning): Remove.
21502         * Makefile.in (GTFILES): Remove tree-inline.c
21503         * passes.c (do_per_function): Do only functions having body.
21504         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21505         tree.
21506
21507 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21508             Andrew Morrow  <acm@google.com>
21509
21510         PR c/36892
21511         * c-common.c (c_common_attribute_table): Permit deprecated
21512         attribute to take an optional argument.
21513         (handle_deprecated_attribute): If the optional argument to
21514         __attribute__((deprecated)) is not a string ignore the attribute
21515         and emit a warning.
21516
21517         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21518         * c-typeck.c (build_component_ref): Likewise.
21519         (build_external_ref): Likewise.
21520
21521         * toplev.c (warn_deprecated_use): Add an attribute argument.
21522         Emit the message associated with __attribute__((deprecated)).
21523
21524         * toplev.h (warn_deprecated_use): Updated.
21525
21526         * doc/extend.texi: Document new optional parameter to
21527         __attribute__((deprecated))
21528
21529 2009-05-08  Michael Eager <eager@eagercon.com>
21530
21531         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21532         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21533
21534 2009-05-08  Richard Guenther  <rguenther@suse.de>
21535
21536         PR tree-optimization/40062
21537         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21538         Avoid exponential behavior.
21539
21540 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21541
21542         PR rtl-optimization/33928
21543         PR 26854
21544         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21545         process_uses, build_single_def_use_links): New.
21546         (update_df): Update use_def_ref.
21547         (forward_propagate_into): Use get_def_for_use instead of use-def
21548         chains.
21549         (fwprop_init): Call build_single_def_use_links and let it initialize
21550         dataflow.
21551         (fwprop_done): Free use_def_ref.
21552         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21553         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21554         df_rd_simulate_one_insn): New.
21555         (df_rd_bb_local_compute_process_def): Update head comment.
21556         (df_chain_create_bb): Use the new RD simulation functions.
21557         * df.h (df_rd_simulate_artificial_defs_at_top,
21558         df_rd_simulate_one_insn): New.
21559         * opts.c (decode_options): Enable fwprop at -O1.
21560         * doc/invoke.texi (-fforward-propagate): Document this.
21561
21562 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21563
21564         PR c/24581
21565         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21566         and one complex operand specially.
21567         * tree-complex.c (some_nonzerop): Do not identify a real value as
21568         zero if flag_signed_zeros.
21569
21570 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21571
21572         PR rtl-optimization/33928
21573         * loop-invariant.c (record_use): Fix && vs. || mishap.
21574
21575 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21576
21577         PR rtl-optimization/33928
21578         * loop-invariant.c (struct use): Add addr_use_p.
21579         (struct def): Add n_addr_uses.
21580         (struct invariant): Add cheap_address.
21581         (create_new_invariant): Set cheap_address.
21582         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21583         (record_uses): Pass df_ref to record_use.
21584         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21585         used only as such.
21586
21587 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21588
21589         * config/sh/sh.c: Do not include c-pragma.h.
21590
21591 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21592
21593         * config/spu/spu.c: Remove include of c-common.h.
21594
21595 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21596
21597         PR c/39037
21598         * c-common.h (mark_valid_location_for_stdc_pragma,
21599         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21600         clear_float_const_decimal64, float_const_decimal64_p): New.
21601         * c.opt (Wunsuffixed-float-constants): New.
21602         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21603         unsuffixed float constant, handle new warning.
21604         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21605         * c-decl.c (c_scope): New flag float_const_decimal64.
21606         (set_float_const_decimal64, clear_float_const_decimal64,
21607         float_const_decimal64_p): New.
21608         (push_scope): Set new flag.
21609         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21610         to use STDC pragmas.
21611         (c_parser_external_declaration): Ditto.
21612         (c_parser_compound_statement_nostart): Ditto.
21613         * c-pragma.c (valid_location_for_stdc_pragma,
21614         mark_valid_location_for_stdc_pragma,
21615         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
21616         handle_pragma_float_const_decimal64): New.
21617         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
21618         * cp/semantics.c (valid_location_for_stdc_pragma_p,
21619         set_float_const_decimal64, clear_float_const_decimal64,
21620         float_const_decimal64_p): New dummy functions.
21621         * doc/extend.texi (Decimal Float): Remove statement that the
21622         pragma, and suffix for double constants, are not supported.
21623         * doc/invoke.texi (Warning Options): List new option.
21624         (-Wunsuffixed-float-constants): New.
21625
21626 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
21627
21628         * config/i386/i386.c: Do not include c-common.h.
21629
21630 2009-05-07  Mark Heffernan  <meheff@google.com>
21631
21632         * doc/invoke.texi (Debugging Options): Document change of debugging
21633         dump location.
21634         * opts.c (decode_options): Make dump_base_name relative to
21635         aux_base_name directory.
21636
21637 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21638
21639         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
21640         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
21641
21642 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
21643
21644         * Makefile.in (install-plugin): Simplify a bit.
21645
21646 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
21647
21648         * Makefile.in (OBJS-common): Add regcprop.o.
21649         (regcprop.o): New.
21650         * timevar.def (TV_CPROP_REGISTERS): New.
21651         * regrename.c (regrename_optimize): Return 0.
21652         (rest_of_handle_regrename): Delete.
21653         (pass_rename_registers): Point to regrename_optimize.
21654         (struct value_data_entry, struct value_data,
21655         kill_value_one_regno, kill_value_regno, kill_value,
21656         set_value_regno, init_value_data, kill_clobbered_value,
21657         kill_set_value, kill_autoinc_value, copy_value,
21658         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
21659         replace_oldest_value_reg, replace_oldest_value_addr,
21660         replace_oldest_value_mem, copyprop_hardreg_forward_1,
21661         debug_value_data, validate_value_data): Move...
21662         * regcprop.c: ... here.
21663         (rest_of_handle_cprop): Delete.
21664         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
21665
21666 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
21667
21668         PR middle-end/40057
21669         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
21670         GEN_INT for 1 << bitnum.
21671         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
21672         build_int_cst_type.
21673
21674 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
21675
21676         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
21677         Remove wrong description of "nand" operation.
21678
21679 2009-05-06  Richard Guenther  <rguenther@suse.de>
21680             Adam Nemet  <anemet@caviumnetworks.com>
21681
21682         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
21683         comment.  Add that if LHS is not a gimple register, then RHS1 has
21684         to be a single object (GIMPLE_SINGLE_RHS).
21685
21686 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
21687
21688         * expr.c (get_def_for_expr): Move it up in the file.
21689         (store_field): When expanding a bit-field store, look at the
21690         defining gimple stmt for the masking conversion.
21691
21692 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
21693
21694         PR middle-end/39986
21695         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
21696         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
21697         32-bit memcpy into long.
21698
21699 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
21700
21701         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
21702         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
21703         new_reg_loc_descr.
21704         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
21705         instead of appending DW_OP_deref*.
21706
21707 2009-05-06  Michael Matz  <matz@suse.de>
21708
21709         PR middle-end/40021
21710         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
21711         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
21712
21713 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
21714
21715         * Makefile.in (install-plugin): Fix srcdir handling.
21716
21717 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
21718
21719         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
21720         when processing for not_regs_needed bitmap.
21721         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
21722         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
21723         handling it for rhs.
21724
21725 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21726
21727         * config/i386/i386.md (unnamed inc/dec peephole): Use
21728         optimize_insn_for_size_p instead of optimize_size.
21729         * config/i386/predicates.md (incdec_operand): Likewise.
21730         (aligned_operand): Likewise.
21731         * config/i386/sse.md (divv8sf3): Likewise.
21732         (sqrtv8sf2): Likewise.
21733
21734 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21735
21736         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
21737
21738         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
21739
21740 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
21741
21742         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
21743         ssemodesuffixf2c with avxmodesuffixf2c.
21744
21745 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
21746
21747         PR c/40032
21748         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
21749
21750 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
21751
21752         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
21753         (struct tree_base): Adjust spacing for 8 bit boundaries.
21754         (struct tree_decl_common): Add decl_by_reference_flag bit.
21755         (DECL_BY_REFERENCE): Adjust.
21756         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
21757         print DECL_BY_REFERENCE bit.
21758         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
21759         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
21760         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
21761         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
21762         unconditionally.
21763
21764         PR middle-end/39666
21765         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
21766         range of the type, but default label is missing, add it with one
21767         of the existing labels instead of adding a new label for it.
21768
21769 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
21770
21771         * dwarf.h: Remove.
21772
21773 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
21774
21775         * Makefile.in (enable_plugin, plugin_includedir): New.
21776         (install): Depend on install-plugin.
21777         (PLUGIN_HEADERS): New.
21778         (install-plugin): New.
21779         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
21780
21781 2009-05-05  Richard Guenther  <rguenther@suse.de>
21782
21783         PR tree-optimization/40022
21784         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
21785         the only vuse.
21786         (phivn_valid_p): Fix tuplification error, simplify.
21787         (phiprop_insert_phi): Add dumps.
21788         (propagate_with_phi): Simplify.
21789
21790 2009-05-05  Richard Guenther  <rguenther@suse.de>
21791
21792         PR middle-end/40023
21793         * builtins.c (gimplify_va_arg_expr): Properly build the address.
21794
21795 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
21796
21797         * tree.h (strip_float_extensions): Remove duplicate declaration.
21798         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
21799         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
21800         block_ultimate_origin): Rearrange the declarations line to match the
21801         comment that indicates the .c file which the functions are defined.
21802         (dwarf2out_*, set_decl_rtl): Add comment.
21803         (get_base_address): Adjust comment.
21804         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
21805         declarations line and add comment.
21806         (is_builtin_name): Add blank after function name, for clarity.
21807
21808 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21809
21810         * attribs.c (decl_attributes): Use %qE for identifiers in
21811         diagnostics.
21812         * cgraphunit.c (verify_cgraph_node): Translate function names to
21813         locale character set in diagnostics.
21814         * coverage.c (get_coverage_counts): Use %qE for identifiers in
21815         diagnostics.
21816         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
21817         Document that functions are named in UTF-8.
21818         * expr.c (expand_expr_real_1): Translate function names to locale
21819         character set in diagnostics.
21820         * gimplify.c (omp_notice_variable, omp_is_private,
21821         gimplify_scan_omp_clauses): Use %qE for identifiers in
21822         diagnostics.
21823         * langhooks.c (lhd_print_error_function): Translate function names
21824         to locale character set.
21825         * langhooks.h (decl_printable_name): Document that return value is
21826         in internal character set.
21827         * stmt.c: Include pretty-print.h
21828         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
21829         diagnostics.
21830         (resolve_operand_name_1): Translate named operand name to locale
21831         character set.
21832         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
21833         diagnostics.
21834         * toplev.c (announce_function): Translate function names to locale
21835         character set.
21836         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
21837         (default_tree_printer): Use pp_identifier or translate identifiers
21838         to locale character set.  Mark "<anonymous>" for translation.
21839         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
21840         for identifiers in diagnostics.
21841         * tree.c (handle_dll_attribute): Use %qE for identifiers in
21842         diagnostics.
21843         * varasm.c (output_constructor): Use %qE for identifiers in
21844         diagnostics.
21845
21846 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
21847
21848         * configure.ac: use ` ` instead of $()
21849         * configure: Regenerate.
21850
21851 2009-05-05  Ben Elliston  <bje@au.ibm.com>
21852
21853         * config/pa/linux-atomic.c: Eliminate conditional include of
21854         errno.h on non-LP64 systems to simplify build requirements.
21855
21856 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21857
21858         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
21859         diagnostics.
21860         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
21861         and pass value to identifier_to_locale.
21862         (warn_variable_length_array): Make name a tree.
21863         (grokdeclarator): Separate diagnostic texts for named and unnamed
21864         declarators.  Use %qE for named declarators.
21865         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
21866         diagnostics.
21867         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
21868         identifiers in diagnostics.
21869         * c-typeck.c (push_member_name, start_init): Pass identifiers to
21870         identifier_to_locale.  Mark "anonymous" strings for translation.
21871
21872 2009-05-04  Michael Eager <eager@eagercon.com>
21873
21874         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
21875         address for DImode/DFmode only if double-precision FP regs.
21876
21877 2009-05-04  Michael Eager <eager@eagercon.com>
21878
21879         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
21880         TARGET_SINGLE_FLOAT check.
21881
21882 2009-05-04  Michael Eager <eager@eagercon.com>
21883
21884         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
21885
21886 2009-05-04  Michael Eager <eager@eagercon.com>
21887
21888         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
21889         * config/rs6000/t-xilinx: New
21890
21891 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
21892
21893         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
21894         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
21895         * gcc/explow.c (memory_address): Use target hook.
21896         * gcc/targhooks.c (default_legitimize_address): New.
21897         * gcc/targhooks.h (default_legitimize_address): New.
21898         * gcc/target.h (legitimize_address): New.
21899         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
21900         (TARGET_INITIALIZER): Include it.
21901         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
21902
21903         * config/bfin/bfin-protos.h (legitimize_address): Remove.
21904         * config/bfin/bfin.c (legitimize_address): Remove.
21905         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
21906         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
21907         Remove.
21908         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
21909         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
21910
21911         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
21912         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
21913         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
21914         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
21915         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
21916         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
21917         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
21918         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
21919         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
21920         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
21921         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
21922         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
21923         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
21924         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
21925         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
21926         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
21927         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
21928         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
21929         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
21930         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
21931         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
21932         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
21933         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
21934
21935         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
21936         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
21937         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
21938         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
21939         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
21940         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
21941         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
21942         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
21943         (thumb_legitimize_address): Delete.
21944         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
21945         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
21946         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
21947         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
21948         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
21949         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
21950         Delete.
21951         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
21952         Delete.
21953
21954         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
21955         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
21956         * config/m32r/m32r.c (m32r_legitimize_address): New.
21957         * config/m68k/m68k.c (m68k_legitimize_address): New.
21958         * config/score/score.c (score_legitimize_address): Standardize.
21959         * config/score/score3.c (score3_legitimize_address): Standardize.
21960         * config/score/score3.h (score3_legitimize_address): Adjust.
21961         * config/score/score7.c (score7_legitimize_address): Standardize.
21962         * config/score/score7.h (score7_legitimize_address): Adjust.
21963         * config/sh/sh.c (sh_legitimize_address): New.
21964         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
21965
21966         * gcc/config/s390/s390.c (legitimize_address): Rename to...
21967         (s390_legitimize_address): ... this.
21968         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
21969         (sparc_legitimize_address): ... this.
21970         * gcc/config/i386/i386.c (legitimize_address): Rename to...
21971         (ix86_legitimize_address): ... this.
21972         * gcc/config/avr/avr.c (legitimize_address): Rename to...
21973         (avr_legitimize_address): ... this.
21974         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
21975         (mn10300_legitimize_address): ... this.
21976         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
21977         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
21978         (alpha_expand_mov): Adjust call.
21979
21980         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
21981         * config/spu/spu.c (spu_legitimize_address): Likewise.
21982         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
21983         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
21984
21985 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
21986
21987         * intl.c (locale_encoding, locale_utf8): New.
21988         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
21989         * intl.h (locale_encoding, locale_utf8): Declare.
21990         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
21991         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
21992         New.
21993         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
21994         argument.
21995         (pp_tree_identifier): Define to call pp_base_tree_identifier.
21996         (pp_base_tree_identifier): Declare as function.
21997         (identifier_to_locale): Declare.
21998         * Makefile.in (pretty-print.o): Update dependencies.
21999         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
22000
22001 2009-05-04  Richard Guenther  <rguenther@suse.de>
22002
22003         PR middle-end/40015
22004         * builtins.c (fold_builtin_memory_op): Do not decay to element
22005         type if the size matches the whole array.
22006
22007 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22008
22009         * expmed.c (synth_mult): When trying out a shift, pass the result
22010         of a signed shift.
22011
22012 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22013
22014         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
22015         (shiftsub1_cost): New.
22016         (init_expmed): Compute shiftsub1_cost.
22017         (synth_mult): Optimize multiplications by constants of the form
22018         -(2^^m-1) for some constant positive integer m.
22019
22020 2009-05-03  Richard Guenther  <rguenther@suse.de>
22021
22022         PR c/39983
22023         * c-typeck.c (array_to_pointer_conversion): Do not built
22024         ADDR_EXPRs of arrays of pointer-to-element type.
22025         * c-gimplify.c (c_gimplify_expr): Revert change fixing
22026         up wrong ADDR_EXPRs after-the-fact.
22027         * c-common.c (strict_aliasing_warning): Strip pointer
22028         conversions for obtaining the original type.
22029         * builtins.c (fold_builtin_memset): Handle array types.
22030         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
22031         and array types
22032
22033 2009-05-03  Richard Guenther  <rguenther@suse.de>
22034
22035         PR middle-end/23329
22036         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
22037         Do not lose casts from array types with unknown extent to array
22038         types with known extent.
22039         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
22040         alias set compatibility.
22041
22042 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22043
22044         * flags.h (extra_warnings): Delete.
22045         * toplev.c (process_options): Handle Wuninitialized here.
22046         * opts.c (extra_warnings): Delete.
22047         (set_Wextra): Delete.
22048         (common_handle_option): -Wextra can be handled automatically.
22049         * c-opts.c (c_common_handle_option): Delete obsolete code.
22050         (c_common_post_options): Simplify comment.
22051         * common.opt (W): Add Var.
22052         (Wextra): Add Var.
22053         (Wuninitialized): Initialize to -1.
22054
22055 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
22056             Richard Guenther  <rguenther@suse.de>
22057
22058         * expr.c (get_def_for_expr): New function.
22059         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
22060         SSA rather than trees.
22061         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
22062         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
22063
22064 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
22065
22066         * c-common.c (reswords): Add _Imaginary.
22067         * c-common.c (enum rid): Add RID_IMAGINARY.
22068
22069 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
22070
22071         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
22072         Patch by Richard Guenther.
22073
22074 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
22075
22076         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
22077         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
22078         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
22079         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
22080         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
22081         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
22082         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
22083         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
22084         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
22085         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
22086         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
22087         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
22088         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
22089         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
22090         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
22091         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
22092         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
22093         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
22094
22095 2009-05-02  Richard Guenther  <rguenther@suse.de>
22096
22097         PR tree-optimization/39940
22098         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
22099         doing so.
22100
22101 2009-05-02  Richard Guenther  <rguenther@suse.de>
22102
22103         PR middle-end/40001
22104         * tree-ssa.c (execute_update_addresses_taken): Properly check
22105         if we can mark a variable DECL_GIMPLE_REG_P.
22106         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
22107         back to the end of the function.
22108         (is_gimple_reg_type): Remove complex type special casing.
22109         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
22110         if not optimizing.
22111
22112 2009-05-02  Ben Elliston  <bje@au.ibm.com>
22113
22114         * doc/collect2.texi (Collect2): Document search path behaviour
22115         when configured with --with-ld.
22116
22117 2009-05-02  Jan Hubicka  <jh@suse.cz>
22118
22119         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
22120         parameter; update callers.
22121         (coalesce_cost_edge): EH edges are costier because they needs
22122         splitting even if not critical and even more costier when there are
22123         multiple EH predecestors.
22124
22125 2009-05-02  Jan Hubicka  <jh@suse.cz>
22126
22127         * except.c (remove_eh_handler_and_replace): Handle updating after
22128         removing TRY blocks.
22129
22130 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
22131
22132         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
22133
22134 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
22135
22136         * varasm.c: Do not include c-pragma.h.
22137         * attribs.c: Do not incude c-common.h.
22138
22139 2009-05-01  Michael Matz  <matz@suse.de>
22140
22141         * calls.c (initialize_argument_information): Handle SSA names like
22142         decls with a non MEM_P DECL_RTL.
22143
22144 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22145
22146         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
22147         * ipa-utils.c: Likewise.
22148         * ipa-type-escape.c: Likewise.
22149         * cgraphunit.c Do not include c-common.h.
22150         * ipa-pure-const.c: Likewise.
22151         * tree-if-conv.c: Likewise.
22152         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
22153         * ipa-struct-reorg.c: Likewise.
22154         * tree-nomudflap.c: Likewise.
22155         * tree-ssa-structalias.c: Likewise.
22156
22157 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22158
22159         * store-motion.c: Many cleanups to make this pass a first-class
22160         citizen instead of an appendix to gcse load motion.  Add TODO list
22161         to make this pass faster/cleaner/better.
22162
22163         (struct ls_expr): Post gcse.c-split cleanups.
22164         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
22165         "stores" field to "avail_stores".
22166         (pre_ldst_mems): Rename to store_motion_mems.
22167         (pre_ldst_table): Rename to store_motion_mems_table.
22168         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
22169         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
22170         (ldst_entry): Rename to st_expr_entry, update users.
22171         (free_ldst_entry): Rename to free_st_expr_entry, update users.
22172         (free_ldst_mems): Rename to free_store_motion_mems, update users.
22173         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
22174         update caller.
22175         (first_ls_expr): Rename to first_st_expr, update users.
22176         (next_ls_expr): Rename to next_st_expr, update users.
22177         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
22178         fields properly for store motion instead of names inherited from load
22179         motion in gcse.c.
22180         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
22181         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
22182         are done with it.
22183
22184         (ae_kill): Rename to st_kill, update users.
22185         (ae_gen): Rename to st_avloc, update users.
22186         (transp): Rename to st_transp, update users.
22187         (pre_insert_map): Rename to st_insert_map, update users.
22188         (pre_delete_map): Rename to st_delete_map, update users.
22189         (insert_store, build_store_vectors, free_store_memory,
22190         one_store_motion_pass): Update for abovementioned changes.
22191
22192         (gcse_subst_count, gcse_create_count): Remove.
22193         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22194         and "n_stores_created", local variables.
22195
22196         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22197         use for_each_rtx.
22198
22199         (regvec, compute_store_table_current_insn): Remove.
22200         (reg_set_info, reg_clear_last_set): Remove.
22201         (compute_store_table): Use DF caches instead of local dataflow
22202         solvers.
22203
22204 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22205
22206         * c-objc-common.c (c_tree_printer): Print identifiers with
22207         pp_identifier, not pp_string.  Mark "({anonymous})" for
22208         translation.
22209         * c-pretty-print.c (pp_c_ws_string): New.
22210         (pp_c_cv_qualifier, pp_c_type_specifier,
22211         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22212         pp_c_storage_class_specifier, pp_c_function_specifier,
22213         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22214         pp_c_primary_expression, pp_c_postfix_expression,
22215         pp_c_unary_expression, pp_c_shift_expression,
22216         pp_c_relational_expression, pp_c_equality_expression,
22217         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22218         use pp_string and pp_c_ws_string in place of pp_identifier and
22219         pp_c_identifier for non-identifiers.  Mark English strings for
22220         translation.
22221         * c-pretty-print.h (pp_c_ws_string): Declare.
22222
22223 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22224             Roland McGrath <roland@redhat.com>
22225
22226         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22227         (ENABLE_LD_BUILDID): New configuration option.
22228         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22229         (LINK_BUILDID_SPEC): New macro.
22230         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22231         link_spec.
22232         * doc/install.texi: Document --enable-linker-build-id option.
22233         * configure: Rebuild.
22234         * config.in: Rebuild.
22235
22236 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22237
22238         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22239         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22240         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22241         MIPS_GP_SAVE_AREA_SIZE.
22242         * config/mips/mips.c (struct mips_frame_info): Update comment
22243         before arg_pointer_offset and hard_frame_pointer_offset.
22244         (mips_compute_frame_info): Update diagram before function: to
22245         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22246         indicate the position of frame_pointer_rtx with -fstack-protector and
22247         to show args_size.  Don't allocate cprestore area for leaf functions
22248         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22249         cprestore_size.
22250         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22251
22252 2009-04-30  Michael Matz  <matz@suse.de>
22253
22254         PR tree-optimization/39955
22255         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22256
22257 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22258
22259         * ira.c (setup_cover_and_important_classes):  Use safe macro
22260         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22261         directly.
22262         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22263         REG_CLASS_FOR_CONSTRAINT.
22264
22265 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22266
22267         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22268         instead of an int.
22269         * bitmap.c (bitmap_descriptor): Likewise.
22270         * ggc-common.c (loc_descriptor): Likewise.
22271         * varray.c (varray_descriptor): Likewise.
22272         * vec.c (vec_descriptor): Likewise.
22273
22274 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22275
22276         * Makefile.in (dce.o): Add $(EXCEPT_H).
22277         * dce.c: Include except.h and delete redundant vector definitions.
22278         (deletable_insn_p): Return false for non-call insns that can throw
22279         if DF is running.
22280
22281 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22282
22283         * gcse.c (ae_gen): Remove.
22284         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22285         and make non-static function to make it available in store-motion.c.
22286         Update call sites with search-and-replace.
22287         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22288         extract_mentioned_regs, extract_mentioned_regs_helper,
22289         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22290         store_killed_in_insn, store_killed_after, store_killed_before,
22291         build_store_vectors, insert_insn_start_basic_block, insert-store,
22292         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22293         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22294         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22295         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22296         and clean up to remove parts not used by store motion.
22297         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22298         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22299
22300 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22301
22302         PR target/38571
22303         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22304         when optimizing for size.
22305
22306 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22307
22308         * gcse.c (gcse_constant_p): Fix typo in last change.
22309
22310 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22311
22312         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22313
22314 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22315
22316         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22317
22318 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22319
22320         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22321         CONST_HIGH_PART result.
22322
22323 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22324
22325         * config/avr/avr.c (initial_elimination_offset): Rename to
22326         avr_initial_elimination_offset.
22327         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22328         change return type to bool.
22329         (avr_can_eliminate): New function.
22330         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22331         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22332         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22333         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22334         avr_initial_elimination_offset.
22335         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22336         (avr_initial_elimination_offset): Define.
22337
22338 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22339             Steven Bosscher  <steven@gcc.gnu.org>
22340
22341         PR rtl-optimization/39938
22342         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22343         * cfgrtl.c: Include insn-attr.h.
22344         (rest_of_pass_free_cfg): New function.
22345         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22346         * resource.c (init_resource_info): Remove call to df_analyze.
22347
22348 2009-04-29  Richard Guenther  <rguenther@suse.de>
22349
22350         PR target/39943
22351         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22352         allow conversion to signed integers.
22353
22354 2009-04-29  Richard Guenther  <rguenther@suse.de>
22355
22356         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22357         shifts of floating point vectors if the shift amount is
22358         a constant multiple of the element size.
22359
22360 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22361             Michael Matz  <matz@suse.de>
22362
22363         PR middle-end/39927
22364         PR bootstrap/39929
22365         * tree-outof-ssa.c (emit_partition_copy): New function.
22366         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22367         insert_part_to_rtx_on_edge): Perform the partition base var
22368         copy using emit_partition_copy.
22369         (insert_value_copy_on_edge): Convert constants to the right mode.
22370         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22371         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22372
22373 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22374
22375         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22376         scan backwards to try to find a constant to initialize it.
22377
22378         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22379         insn before the loop_end instruction, don't look past labels.
22380
22381 2009-04-29  Richard Guenther  <rguenther@suse.de>
22382
22383         PR middle-end/39937
22384         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22385         loose type conversions.
22386         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22387         stmts only if there are no uses of its definition.
22388
22389 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22390
22391         * config/bfin/bfin.h (splitting_loops): Declare.
22392         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22393         Reorder bit definitions to be ascending.
22394         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22395         * config/bfin/bfin.c (splitting_loops): New variable.
22396         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22397         (struct loop_info): Remove members INIT and LOOP_INIT.
22398         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22399         the LSETUP sequence.  Allow LC to be loaded from any register, but
22400         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22401         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22402         set to 1.
22403         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22404         of reload_completed.
22405
22406         From Jie Zhang:
22407         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22408
22409 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22410
22411         * Makefile.in (PLUGIN_VERSION_H): New.
22412         (OBJS-common): Remove plugin-version.o.
22413         (plugin.o): Depend on (PLUGIN_VERSION_H).
22414         (plugin-version.o): Remove.
22415         * configure: Regenerate
22416         * configure.ac: Create plugin-version.h.
22417         * gcc-plugin.h (plugin_gcc_version): Remove.
22418         (plugin_default_version_check): Change signature.
22419         * plugin-version.c: Remove.
22420         * plugin.c: Include plugin-version.h.
22421         (str_plugin_gcc_version_name): Remove.
22422         (try_init_one_plugin): Pass gcc version to plugin_init.
22423         (plugin_default_version_check): Both gcc and plugin versions are now
22424         arguments.
22425
22426 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22427
22428         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22429         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22430         Remove special case testing for last insn of inner loops. Don't fail
22431         if the loop ends with a jump, emit an extra nop instead.
22432
22433         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22434         DREGS rather than comparing directly.  Remove code that tries to
22435         account for latencies.
22436
22437 2009-04-29  Richard Guenther  <rguenther@suse.de>
22438
22439         PR tree-optimization/39941
22440         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22441         eliminating an indirect call.
22442
22443 2009-04-29  Richard Guenther  <rguenther@suse.de>
22444
22445         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22446         parameter.  Allow invariants as base if !require_lvalue.
22447         (verify_gimple_assign_single): Adjust.
22448
22449 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22450
22451         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22452         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22453         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22454         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22455         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22456         a VEC_SELECT.
22457         * config/bfin/bfin.c (bfin_expand_builtin,
22458         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22459
22460 2009-04-28  Richard Guenther  <rguenther@suse.de>
22461
22462         * tree-vect-loop.c (get_initial_def_for_induction): Use
22463         correct types for pointer increment.
22464
22465 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22466
22467         * toplev.c (print_version): Update GMP version string calculation.
22468
22469 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22470
22471         PR rtl-optimization/39938
22472         * resource.c (init_resource_info): Add call to df_analyze.
22473
22474 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22475
22476         * config/alpha/alpha.md (usegp): Cast the result of
22477         alpha_find_lo_sum_using_gp to enum attr_usegp.
22478         * config/alpha/alpha.c (override_options): Remove end-of-structure
22479         marker element from cpu_table.  Use array size of cpu_table to handle
22480         -mcpu and -mtune options.
22481         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22482
22483 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22484
22485         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22486         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22487         tune_32 and tune_64.
22488         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22489         support on PowerPC.
22490         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22491         * config/rs6000/option-defaults.h: ... here.  New file.
22492         (OPT_64, OPT_32): Define.
22493         (MASK_64BIT): Define to 0 if not already defined.
22494         (OPT_ARCH64, OPT_ARCH32): Define.
22495         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22496         and tune_64.
22497
22498 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22499
22500         * config/arm/arm.c (arm_override_options): Emit error on using
22501         fpa with AAPCS.
22502
22503 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22504
22505         PR rtl-optimization/39914
22506         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22507         registers for allocnos created from user-defined variables only
22508         when not optimizing.
22509
22510 2009-04-28  Richard Guenther  <rguenther@suse.de>
22511
22512         PR middle-end/39937
22513         * fold-const.c (fold_binary): Use distribute_real_division only
22514         on float types.
22515
22516 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22517
22518         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22519         add hpux-stdint.h to tm_file.
22520         (hppa[12]*-*-hpux11*): Ditto.
22521         (ia64*-*-hpux*): Ditto.
22522         * config/hpux-stdint.h: New.
22523         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22524         __STDC_EXT__ for all compiles.
22525         * config/pa/pa-hpux.h: Ditto.
22526         * config/pa/pa-hpux10.h: Ditto.
22527         * config/pa/pa-hpux11.h: Ditto.
22528
22529 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22530
22531         * debug.h (set_name): Add comment.
22532
22533 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22534
22535         PR target/39929
22536         * config/darwin.c (machopic_gen_offset): Check
22537         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22538         * config/arm/arm.c (require_pic_register): Likewise.
22539
22540 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22541
22542         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22543         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22544         m32c_promote_prototypes): Delete.
22545
22546 2009-04-28  Michael Matz  <matz@suse.de>
22547
22548         PR middle-end/39922
22549         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22550         constants.
22551
22552 2009-04-28  Richard Guenther  <rguenther@suse.de>
22553
22554         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22555
22556 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22557
22558         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22559         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22560         * config/arm/arm-tune.md: Regenerate.
22561
22562 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22563
22564         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22565         block if there are complex incoming edges.
22566         (sel_merge_blocks): Remove useless assert.
22567         (sel_redirect_edge_and_branch): Check that edge was redirected.
22568         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22569         (sel_find_rgns): Delete declaration.
22570         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22571         the region when it is not a preheader.
22572
22573 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22574
22575         PR c/39323
22576         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22577
22578 2009-04-28  Richard Guenther  <rguenther@suse.de>
22579
22580         * tree.h (SSA_NAME_VALUE): Remove.
22581         (struct tree_ssa_name): Remove value_handle member.
22582         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22583         array for jump threading.
22584         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22585         SSA_NAME_VALUEs.
22586         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22587         * tree-flow.h (threadedge_initialize_values): Declare.
22588         (threadedge_finalize_values): Likewise.
22589         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22590         (SSA_NAME_VALUE): Define.
22591         (threadedge_initialize_values): New function.
22592         (threadedge_finalize_values): Likewise.
22593         * tree-ssa-dom.c (ssa_name_values): New global variable.
22594         (SSA_NAME_VALUE): Define.
22595         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22596
22597 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22598
22599         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22600         Use REPORT_VECTORIZED_LOCATIONS instead
22601         REPORT_VECTORIZED_LOOPS.
22602         * tree-vectorizer.c (vect_verbosity_level): Make static.
22603         (vect_loop_location): Rename to vect_location.
22604         (vect_set_verbosity_level): Update comment.
22605         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22606         and vect_location.
22607         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22608         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22609         instead REPORT_UNVECTORIZED_LOOPS.
22610         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22611         and vect_loop_def to vect_external_def and vect_internal_def.
22612         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22613         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
22614         REPORT_UNVECTORIZED_LOCATIONS.
22615         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
22616         and vect_used_in_loop and to vect_unused_in_scope and
22617         vect_used_in_scope.
22618         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
22619         (vect_verbosity_level): Remove declaration.
22620         (vect_analyze_operations): Likewise.
22621         (vect_analyze_stmt): Declare.
22622         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
22623         REPORT_UNVECTORIZED_LOCATIONS.
22624         (vect_get_loop_niters): Fix indentation.
22625         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
22626         (vect_analyze_loop_operations): New function.
22627         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
22628         vect_analyze_operations.
22629         (vect_is_simple_reduction): Use new names.
22630         (vectorizable_live_operation, vect_transform_loop): Likewise.
22631         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
22632         to specify whether the data references can be a part of interleaving
22633         chain.
22634         (vect_analyze_data_ref_dependence): Use new names.
22635         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
22636         (vect_create_addr_base_for_vector_ref): Remove redundant code.
22637         * tree-vect-patterns.c (widened_name_p): Use new names.
22638         (vect_recog_dot_prod_pattern): Likewise.
22639         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
22640         (process_use, vect_mark_stmts_to_be_vectorized,
22641         vect_model_simple_cost, vect_model_store_cost,
22642         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
22643         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
22644         vectorizable_operation, vectorizable_type_demotion,
22645         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
22646         vectorizable_condition): Likewise.
22647         (vect_analyze_operations): Split into vect_analyze_loop_operations
22648         and ...
22649         (vect_analyze_stmt): ... new function.
22650         (new_stmt_vec_info): Use new names.
22651         (vect_is_simple_use): Use new names and fix comment.
22652         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
22653         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
22654
22655 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22656
22657         PR target/39911
22658         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
22659         and integer modes for x87 operands.  Do not ICE for unsupported size,
22660         generate error instead.  Generate error for unsupported operand types.
22661         ['z']: Do not handle HImode memory operands specially.  Warning
22662         for floating-point operands.  Fallthru to 'Z' for unsupported operand
22663         types.  Do not ICE for unsupported size, generate error instead.
22664         (output_387_binary_op): Use %Z to output operands.
22665         (output_fp_compare): Ditto.
22666         (output_387_reg_move): Ditto.
22667
22668 2009-04-28  Ben Elliston  <bje@au.ibm.com>
22669
22670         PR c++/35652
22671         Revert:
22672
22673         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22674
22675         * builtins.c (c_strlen): Do not warn here.
22676         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
22677         * c-common.c (pointer_int_sum): Take an explicit location.
22678         Warn about offsets out of bounds.
22679         * c-common.h (pointer_int_sum): Adjust declaration.
22680
22681 2009-04-27  Ian Lance Taylor  <iant@google.com>
22682
22683         * collect2.c (is_ctor_dtor): Change type of ret field in struct
22684         names to symkind.
22685         * dce.c (run_fast_df_dce): Change type of old_flags to int.
22686         * df-core.c (df_set_flags): Change return type to int.  Change
22687         type of old_flags to int.
22688         (df_clear_flags): Likewise.
22689         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
22690         (df_get_conditional_uses): Likewise.
22691         * df.h (df_set_flags, df_clear_flags): Update declarations.
22692         * dwarf2out.c (struct indirect_string_node): Change type of form
22693         field to enum dwarf_form.
22694         (AT_string_form): Change return type to enum dwarf_form.
22695         * fixed-value.c (fixed_compare): Add cast to enum type.
22696         * fwprop.c (update_df): Change 0 to VOIDmode.
22697         * gensupport.c: Change 0 to UNKNOWN.
22698         * gimple.h (gimple_cond_code): Add cast to enum type.
22699         * haifa-sched.c (reemit_notes): Add cast to enum type.
22700         * hooks.c (hook_int_void_no_regs): Remove function.
22701         * hooks.h (hook_int_void_no_regs): Remove declaration.
22702         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
22703         * predict.c (combine_predictions_for_insn): Add casts to enum type.
22704         * real.c (real_arithmetic): Add cast to enum type.
22705         (real_compare): Likewise.
22706         * target.h (struct gcc_target): Change return type of
22707         branch_target_register_class to enum reg_class.
22708         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
22709         default_branch_target_register_class.
22710         * targhooks.c (default_branch_target_register_class): New function.
22711         * targhooks.h (default_branch_target_register_class): Declare.
22712         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
22713         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
22714         cast to int.
22715         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
22716         ERROR_MARK.
22717         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
22718         vect_uninitialized_def.  Change 0 to ERROR_MARK.
22719         * tree-vect-stmts.c (supportable_widening_operation): Don't
22720         initialize icode1 and icode2.
22721         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
22722         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
22723         and to STD_C89.
22724         (cmn_err_flag_specs): Change 0 to STD_C89.
22725         (cmn_err_char_table): Likewise.
22726         * config/arm/arm.c (get_arm_condition_code): Change type of code
22727         to enum arm_cond_code.
22728         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
22729         (IWMMXT_BUILTIN2): Likewise.
22730         (neon_builtin_type_bits): Don't define typedef.
22731         (neon_builtin_datum): Change type of bits field to int.
22732         (arm_expand_neon_args): Add cast to enum type.
22733         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
22734         TLS_MODEL_NONE.
22735         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
22736         casts to enum type.
22737         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
22738         MIPS_FP_COND_f.
22739         * config/mips/mips.md (jal_macro): Return enum constant.
22740         (single_insn): Likewise.
22741         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
22742         CODE_FOR_nothing.
22743         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22744         casts to enum type.
22745         * config/s390/s390.c (s390_tune_flags): Change type to int.
22746         (s390_arch_flags): Likewise.
22747         (s390_handle_arch_option): Change flags field of struct pta to int.
22748         * config/s390/s390.h (s390_tune_flags): Update declaration.
22749         (s390_arch_flags): Likewise.
22750         * config/sh/sh.c (prepare_move_operands): Compare
22751         tls_symbolic_operand result with enum constant.
22752         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
22753         (sh_expand_prologue): Add cast to enum type.
22754         (sh_expand_epilogue): Likewise.
22755         (tls_symbolic_operand): Change return type to enum tls_model.
22756         (fpscr_set_from_mem): Add cast to enum type.
22757         (legitimize_pic_address): Compare tls_symbolic_operand result with
22758         enum constant.
22759         (sh_target_reg_class): Change return type to enum reg_class.
22760         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
22761         PROCESSOR_xxx.
22762         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
22763         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
22764         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
22765         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
22766         (delayed_branch, tls_call_delay): Likewise.
22767         (eligible_for_sibcall_delay): Likewise.
22768         (eligible_for_return_delay): Likewise.
22769         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
22770         (spu_expand_builtin_1): Likewise.
22771
22772         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
22773         for all types of conversions.
22774         (output_init_element): Issue -Wc++-compat warning if needed when
22775         initializing a bitfield with enum type.
22776         * c-parser.c (c_parser_expression): Set original_type to
22777         original_type of right hand operand of comma operator.
22778
22779 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22780
22781         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
22782         grammar nits.
22783         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
22784         * doc/cpp.texi (Standard Predefined Macros)
22785         (Implementation-defined behavior): Likewise.
22786         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
22787         * doc/gimple.texi (GIMPLE Exception Handling)
22788         (@code{GIMPLE_ASSIGN}): Likewise.
22789         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
22790         * doc/invoke.texi (Warning Options, Optimize Options)
22791         (AVR Options, Darwin Options): Likewise.
22792         (Optimize Options): Reformulate -fwhole-program description.
22793         * doc/loop.texi (Lambda): Likewise.
22794         * doc/md.texi (Output Template, Define Constraints)
22795         (Standard Names, Insn Splitting): Likewise.
22796         * doc/options.texi (Option properties): Likewise.
22797         * doc/passes.texi (Tree-SSA passes): Likewise.
22798         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
22799         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
22800         (File Names and DBX): Likewise.
22801         * doc/trouble.texi (Incompatibilities): Likewise.
22802
22803 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22804
22805         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
22806         instruction is correct.
22807
22808 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
22809
22810         Allow non-constant arguments to conversion intrinsics.
22811         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
22812         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
22813         * spu.c (print_operand): Handle 'v' and 'w'.
22814         (exp2_immediate_p, spu_gen_exp2): Define.
22815         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
22816         spu_convtf_1): Update parameter descriptions.
22817         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
22818         * constraints.md ('v', 'w'): New.
22819         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
22820         Remove.
22821         (i2f, I2F): New define_mode_attr.
22822         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
22823         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
22824         fixuns_truncv4sfv4si2):  Update to use mode attribute.
22825         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
22826         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
22827         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
22828         patterns for combine.
22829
22830 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
22831
22832         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
22833         (cprop, hoist, pre, store_motion): New debug counters.
22834         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
22835         is not an RTL pass anymore.
22836         (pass_profiling): Remove extern decl for pass removed in 2005.
22837         (pass_gcse, pass_jump_bypass): Remove.
22838         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
22839         to 0 for clean state.
22840         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
22841         * cse.c (gate_handle_cse_after_global_opts,
22842         rest_of_handle_cse_after_global_opts): New functions.
22843         (pass_cse_after_global_opts): New pass, does local CSE.
22844         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
22845         (TV_CPROP): New timevar.
22846         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
22847         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
22848         (gcse_main, recompute_all_luids): Remove.
22849         (compute_hash_table_work): Call max_reg_num instead of reading
22850         max_gcse_regno.
22851         (cprop_jump): Don't set run_jump_opt_after_gcse.
22852         (constprop_register): Always allow to alter jumps.
22853         (cprop_insn): Likewise.
22854         (do_local_cprop): Likewise.
22855         (local_cprop_pass): Likewise.  Return non-zero if something changed.
22856         (cprop): Remove function, fold interesting bits into one_cprop_pass.
22857         (find_implicit_sets): Add note about missed optimization opportunity.
22858         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
22859         pass_rtl_cprop execute function.
22860         Don't bother tracking the pass number, each pass gets its own dumpfile
22861         now anyway.
22862         Always allow to alter jumpsand bypass jumps.
22863         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
22864         will just find no suitable set.
22865         (pre_edge_insert): Fix dumping, this function is for PRE only.
22866         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
22867         pass_rtl_pre execute function.
22868         (hoist_code): Return non-zero if something changed.  Keep track of
22869         substitutions and insertions for statistics gathering similar to PRE.
22870         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
22871         called from the pass_rtl_hoist execute function.  Show pass statistics.
22872         (compute_store_table): Use max_reg_num directly instead of using the
22873         formerly global max_gcse_regno.
22874         (build_store_vectors): Likewise.
22875         (replace_store_insn): Fix dumping.
22876         (store_motion): Rename to ...
22877         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
22878         pass, called from the pass_rtl_store_motion execute function.  Keep
22879         track of substitutions and insertions for statistics gathering similar
22880         to PRE.
22881         (bypass_jumps): Remove, fold interesting bits into ...
22882         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
22883         from the pass_rtl_cprop execute function.
22884         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
22885         pass_jump_bypass): Remove.
22886         (gate_handle_gcse, rest_of_handle_gcse): Remove.
22887         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
22888         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
22889         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
22890         (gate_rtl_store_motion, execute_rtl_store_motion,
22891         pass_rtl_store_motion): New.
22892         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
22893         make it clear that -fcse-skip-blocks is a no-op for backward compat.
22894         * passes.c (init_optimization_passes): Remove pass_gcse and
22895         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
22896         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
22897         instead of pass_jump_bypass.
22898
22899 2009-04-27  Richard Guenther  <rguenther@suse.de>
22900
22901         PR middle-end/39928
22902         * gimplify.c (gimplify_expr): If we are required to create
22903         a temporary make sure it ends up as register.
22904
22905 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
22906
22907         PR target/39903
22908         * config/i386/i386.c (construct_container): Don't call
22909         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
22910         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
22911
22912 2009-04-27  Michael Matz  <matz@suse.de>
22913
22914         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
22915         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
22916         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
22917         (dump_replaceable_exprs): Take a bitmap.
22918         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
22919         array.
22920         (expand_gimple_basic_block): Likewise.
22921         * tree-ssa-ter.c (struct temp_expr_table_d): Make
22922         replaceable_expressions member a bitmap.
22923         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
22924         (mark_replaceable): Likewise.
22925         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
22926         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
22927
22928 2009-04-27  Richard Guenther  <rguenther@suse.de>
22929
22930         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
22931         (verify_stmts): Dispatch to gimple/type verification code.
22932         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
22933         issue with call argument types.
22934
22935 2009-04-27  Michael Matz  <matz@suse.de>
22936
22937         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
22938         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
22939         to above.
22940
22941 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
22942             Eric Botcazou  <ebotcazou@adacore.com>
22943
22944         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
22945         a label's basic block.
22946         (mark_target_live_regs): Tidy and rework obsolete comments.
22947         Change back DF problem to LIVE.  If a label starts a basic block,
22948         assume that all registers that used to be live then still are.
22949         (init_resource_info): If a label starts a basic block, set its
22950         BLOCK_FOR_INSN accordingly.
22951         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
22952
22953 2009-04-27  Richard Guenther  <rguenther@suse.de>
22954
22955         * tree-flow-inline.h (function_ann): Remove.
22956         (get_function_ann): Likewise.
22957         * tree-dfa.c (create_function_ann): Remove.
22958         * tree-flow.h (struct static_var_ann_d): Remove.
22959         (struct function_ann_d): Likewise.
22960         (union tree_ann_d): Remove fdecl member.
22961         (function_ann_t): Remove.
22962         (function_ann, get_function_ann, create_function_ann): Remove
22963         declarations.
22964
22965 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
22966
22967         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
22968
22969 2009-04-27  Jan Hubicka  <jh@suse.cz>
22970
22971         * ipa-pure-const.c (struct funct_state_d): New fields
22972         state_previously_known, looping_previously_known; remove
22973         state_set_in_source.
22974         (analyze_function): Use new fields.
22975         (propagate): Avoid assumption that state_set_in_source imply
22976         nonlooping.
22977
22978         * tree-ssa-loop-niter.c (finite_loop_p): New function.
22979         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
22980         * cfgloop.h (finite_loop_p): Declare.
22981
22982 2009-04-26  Michael Matz  <matz@suse.de>
22983
22984         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
22985
22986 2009-04-26  Michael Matz  <matz@suse.de>
22987
22988         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
22989         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
22990         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
22991         pass_mark_used_blocks): Remove.
22992         * tree-optimize.c (pass_free_datastructures,
22993         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
22994         * passes.c (init_optimization_passes): Don't call
22995         pass_mark_used_blocks, remove dead code.
22996
22997 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
22998
22999         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
23000         * tree-ssa-live.h (register_ssa_partition): Likewise.
23001
23002 2009-04-26  Michael Matz  <matz@suse.de>
23003
23004         Expand from SSA.
23005         * builtins.c (fold_builtin_next_arg): Handle SSA names.
23006         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
23007         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
23008         SSA names.
23009         (compare_pairs): Swap cost comparison.
23010         (coalesce_ssa_name): Don't use change_partition_var.
23011         * tree-nrv.c (struct nrv_data): Add modified member.
23012         (finalize_nrv_r): Set it.
23013         (tree_nrv): Use it to update statements.
23014         (pass_nrv): Require PROP_ssa.
23015         * tree-mudflap.c (mf_decl_cache_locals,
23016         mf_build_check_statement_for): Use make_rename_temp.
23017         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
23018         * alias.c (find_base_decl): Handle SSA names.
23019         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
23020         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
23021         * rtl.h (set_reg_attrs_for_parm): Declare.
23022         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
23023         to "optimized", remove unused locals at finish.
23024         (execute_free_datastructures): Make global, call
23025         delete_tree_cfg_annotations.
23026         (execute_free_cfg_annotations): Don't call
23027         delete_tree_cfg_annotations.
23028
23029         * ssaexpand.h: New file.
23030         * expr.c (toplevel): Include ssaexpand.h.
23031         (expand_assignment): Handle SSA names the same as register variables.
23032         (expand_expr_real_1): Expand SSA names.
23033         * cfgexpand.c (toplevel): Include ssaexpand.h.
23034         (SA): New global variable.
23035         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
23036         (SSAVAR): New macro.
23037         (set_rtl): New helper function.
23038         (add_stack_var): Deal with SSA names, use set_rtl.
23039         (expand_one_stack_var_at): Likewise.
23040         (expand_one_stack_var): Deal with SSA names.
23041         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
23042         before unique numbers.
23043         (expand_stack_vars): Use set_rtl.
23044         (expand_one_var): Accept SSA names, add asserts for them, feed them
23045         to above subroutines.
23046         (expand_used_vars): Expand all partitions (without default defs),
23047         then only the local decls (ignoring those expanded already).
23048         (expand_gimple_cond): Remove edges when jumpif() expands an
23049         unconditional jump.
23050         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
23051         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
23052         SSA name.
23053         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
23054         members of SA; deal with PARM_DECL partitions here; expand
23055         all PHI nodes, free tree datastructures and SA.  Commit instructions
23056         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
23057         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
23058         info and statements at start, collect garbage at finish.
23059         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
23060         (VAR_ANN_PARTITION) Remove.
23061         (change_partition_var): Don't declare.
23062         (partition_to_var): Always return SSA names.
23063         (var_to_partition): Only accept SSA names.
23064         (register_ssa_partition): Only check argument.
23065         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
23066         member.
23067         (delete_var_map): Don't free it.
23068         (var_union): Only accept SSA names, simplify.
23069         (partition_view_init): Mark only useful SSA names as used.
23070         (partition_view_fini): Only deal with SSA names.
23071         (change_partition_var): Remove.
23072         (dump_var_map): Use ssa_name instead of partition_to_var member.
23073         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
23074         basic blocks.
23075         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
23076         (struct _elim_graph): New member const_dests; nodes member vector of
23077         ints.
23078         (set_location_for_edge): New static helper.
23079         (create_temp): Remove.
23080         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
23081         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
23082         (new_elim_graph): Allocate const_dests member.
23083         (clean_elim_graph): Truncate const_dests member.
23084         (delete_elim_graph): Free const_dests member.
23085         (elim_graph_size): Adapt to new type of nodes member.
23086         (elim_graph_add_node): Likewise.
23087         (eliminate_name): Likewise.
23088         (eliminate_build): Don't take basic block argument, deal only with
23089         partition numbers, not variables.
23090         (get_temp_reg): New static helper.
23091         (elim_create): Use it, deal with RTL temporaries instead of trees.
23092         (eliminate_phi): Adjust all calls to new signature.
23093         (assign_vars, replace_use_variable, replace_def_variable): Remove.
23094         (rewrite_trees): Only do checking.
23095         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
23096         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
23097         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
23098         contains_tree_r, MAX_STMTS_IN_LATCH,
23099         process_single_block_loop_latch, analyze_edges_for_bb,
23100         perform_edge_inserts): Remove.
23101         (expand_phi_nodes): New global function.
23102         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
23103         functions, initialize new parameter, remember partitions having a
23104         default def.
23105         (finish_out_of_ssa): New global function.
23106         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
23107         don't reset in_ssa_p here, don't disable TER when mudflap.
23108         (pass_del_ssa): Remove.
23109         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
23110         partition members.
23111         (execute_free_datastructures): Declare.
23112         * Makefile.in (SSAEXPAND_H): New variable.
23113         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
23114         * basic-block.h (commit_one_edge_insertion): Declare.
23115         * passes.c (init_optimization_passes): Move pass_nrv and
23116         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
23117         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
23118         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
23119         (redirect_branch_edge): Deal with super block when expanding, split
23120         out jump patching itself into ...
23121         (patch_jump_insn): ... here, new static helper.
23122
23123 2009-04-26  Michael Matz  <matz@suse.de>
23124
23125         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
23126         beyond num_ssa_names.
23127         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
23128         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
23129
23130 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23131
23132         PR inline-asm/39543
23133         * fwprop.c (forward_propagate_asm): New function.
23134         (forward_propagate_and_simplify): Propagate also into __asm, if it
23135         doesn't increase the number of referenced registers.
23136
23137         PR c/39889
23138         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
23139
23140 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23141
23142         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
23143         note_nonlocal_vla_type for nonlocal VLAs.
23144         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
23145         contains_remapped_vars, remap_vla_decls): New functions.
23146         (convert_nonlocal_reference_stmt): If not optimizing, call
23147         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
23148         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
23149         if it wasn't found in var_map.
23150         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
23151         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
23152         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
23153         declare_vars.
23154         * gimplify.c (nonlocal_vlas): New variable.
23155         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
23156         referenced VLAs.
23157         (gimplify_body): Create and destroy nonlocal_vlas.
23158
23159         * dwarf2out.c (loc_descr_plus_const): New function.
23160         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
23161         mem_loc_descriptor, loc_descriptor_from_tree_1,
23162         descr_info_loc, gen_variable_die): Use it.
23163
23164         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
23165         !TREE_STATIC VAR_DECLs.
23166         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
23167         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
23168         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
23169         DECL_BY_REFERENCE is valid.
23170         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
23171         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
23172         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
23173         Copy DECL_BY_REFERENCE.
23174         (struct nesting_copy_body_data): New type.
23175         (nesting_copy_decl): New function.
23176         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
23177         if they have variable length.
23178
23179 2009-04-26  Michael Matz  <matz@suse.de>
23180
23181         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
23182         mark new temporaries for renaming.
23183
23184 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23185
23186         PR c/39581
23187         * c-decl.c (global_bindings_p): Return negative value.
23188         (c_variable_size): New.  Based on variable_size from
23189         stor-layout.c.
23190         (grokdeclarator): Call c_variable_size not variable_size.
23191
23192 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23193
23194         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23195
23196 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23197
23198         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23199         Redefine it to just use mingw/include.
23200         (ASM_SPEC): Rules for -m32 and -m64.
23201         (LINK_SPEC): Use Likewise.
23202         (SPEC_32): New define.
23203         (SPEC_64): Likewise.
23204         (SUB_LINK_SPEC): Likewise.
23205         (MULTILIB_DEFAULTS): New define.
23206         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23207         Add multilib options.
23208         (MULTILIB_DIRNAMES): Likewise.
23209         (MULTILIB_OSDIRNAMES): Likewise.
23210         (LIBGCC): Likewise.
23211         (INSTALL_LIBGCC): Likewise.
23212
23213 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23214
23215         PR c/39556
23216         * c-tree.h (enum c_inline_static_type): New.
23217         (record_inline_static): Declare.
23218         * c-decl.c (struct c_inline_static, c_inline_statics,
23219         record_inline_static, check_inline_statics): New.
23220         (pop_file_scope): Call check_inline_statics.
23221         (start_decl): Call record_inline_static instead of pedwarning
23222         directly for static in inline function.
23223         * c-typeck.c (build_external_ref): Call record_inline_static
23224         instead of pedwarning directly for static referenced in inline
23225         function.
23226
23227 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23228
23229         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23230         not new but only being rescanned.
23231         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23232         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23233         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23234         record_set_info, compute_set, grealloc): Remove.
23235         (recompute_all_luids): New function.
23236         (gcse_main): Don't compute sets, and don't do related memory
23237         allocations/free-ing.  If something changed before the end of the
23238         pass, update LUIDs using recompute_all_luids.
23239         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23240         (free_gcse_mem): Don't free it either.
23241         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23242         Use the df insn LUIDs.
23243         (load_killed_in_block): Likewise.
23244         (compute_hash_table_work): Don't compute reg_set_in_block.
23245         (compute_transp): Use DF_REG_DEF_CHAINs.
23246         (local_cprop_pass): Don't use compute_sets and related functions.
23247         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23248         Use get_max_uid() instead of max_cuid.
23249         (insert_insn_end_basic_block, pre_insert_copy_insn,
23250         update_ld_motion_stores): Don't try to
23251         keep reg_set tables up to date.
23252         (pre_insert_copies): Use df insn LUIDs.
23253         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23254         (reg_set_info): Don't use extra bitmap argument.
23255         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23256         information to compute regs_set_in_block.
23257         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23258         (bypass_jumps): Don't use compute_sets and friends.
23259
23260 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23261
23262         PR testsuite/39710
23263         * opts.c (undocumented_msg): Do not leave blank even with
23264         ENABLE_CHECKING.
23265
23266 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23267
23268         * c-decl.c (build_enumerator): Allow values folding to integer
23269         constants but not integer constant expressions with a pedwarn if
23270         pedantic.
23271
23272 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23273
23274         PR c/39582
23275         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23276         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23277         type is an integer constant.
23278
23279 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23280
23281         PR target/39897
23282         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23283         HImode operands.
23284
23285 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23286
23287         PR c/39564
23288         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23289         with variably modified return type and no storage class
23290         specifiers, except for the case of nested functions.  Distinguish
23291         extern declarations of functions with variably modified return
23292         types from those of objects with variably modified types.
23293
23294 2009-04-25  Jan Hubicka  <jh@suse.cz>
23295
23296         * tree.c (list_equal_p): New function.
23297         * tree.h (list_equal_p): Declare.
23298         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23299         basic_block_def, basic_block, const_basic_block): New.
23300         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23301         (redirect_eh_edge): New function.
23302         (make_eh_edge_update_phi): EH edges are not abnormal.
23303         * except.c: Include tree-flow.h.
23304         (list_match): New function.
23305         (eh_region_replaceable_by_p): New function.
23306         (replace_region): New function.
23307         (hash_type_list): New function.
23308         (hash_eh_region): New function.
23309         (eh_regions_equal_p): New function.
23310         (merge_peers): New function.
23311         (remove_unreachable_regions): Verify EH tree when checking;
23312         merge peers.
23313         (copy_eh_region_1): New function.
23314         (copy_eh_region): New function.
23315         (push_reachable_handler): New function.
23316         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23317         regions without label but with live RESX.
23318         * except.h (redirect_eh_edge_to_label): New.
23319         * tree-flow.h (redirect_eh_edge): New.
23320         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23321         basic_block_def, basic_block, const_basic_block): Remove.
23322         * Makefile.in (except.o): Add dependency on tree-flow.h
23323         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23324         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23325         Remove.
23326
23327 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23328
23329         PR bootstrap/39645
23330         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23331         on the destination of memcpy.
23332
23333 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23334
23335         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23336         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23337         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23338
23339 2009-04-25  Jan Hubicka  <jh@suse.cz>
23340
23341         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23342         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23343         to be reached by different label than left.
23344         (update_eh_edges): Update comment; remove edge_to_remove if possible
23345         and return true if suceeded.
23346         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23347         (cleanup_eh): Compute sharing map.
23348         * except.c (remove_eh_handler_and_replace): Add argument if we should
23349         update regions.
23350         (remove_unreachable_regions): Update for label sharing.
23351         (label_to_region_map): Likewise.
23352         (get_next_region_sharing_label): New function.
23353         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23354         prev_try pointers.
23355         (remove_eh_handler): Update.
23356         (remove_eh_region_and_replace_by_outer_of): New function.
23357         * except.h (struct eh_region): Add next_region_sharing_label.
23358         (remove_eh_region_and_replace_by_outer_of,
23359         get_next_region_sharing_label): Declare.
23360         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23361
23362 2009-04-25  Jan Hubicka  <jh@suse.cz>
23363
23364         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23365         insert code even if they are not critical.
23366
23367 2009-04-25  Jan Hubicka  <jh@suse.cz>
23368
23369         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23370         (gimple_can_remove_branch_p): EH edges won't remove branch by
23371         redirection.
23372         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23373         updating of non-abnormal EH edges.
23374         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23375         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23376         (split_critical_edges): Split also edges where emitting code on them
23377         will lead to splitting later.
23378
23379 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23380             H.J. Lu  <hongjiu.lu@intel.com>
23381
23382         PR target/39590
23383         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23384         the configured assembler supports fildq and fistpq mnemonics.
23385         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23386         * configure: Regenerated.
23387         * config.in: Ditto.
23388
23389         * config/i386/i386.c (print_operand): Handle 'Z'.
23390         ['z']: Remove handling of special fild/fist suffixes.
23391         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23392         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23393         suffix of fild insn.
23394         (*floatsi<mode>2_vector_mixed): Ditto.
23395         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23396         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23397         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23398         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23399         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23400
23401 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23402
23403         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23404         the source of a set operation.
23405
23406 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23407
23408         * target.h (struct gcc_target): Add case_values_threshold field.
23409         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23410         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23411         * targhooks.c (default_case_values_threshold): New function.
23412         * targhooks.h (default_case_values_threshold): Declare function.
23413         * stmt.c (expand_case): Use case_values_threshold target hook.
23414         * expr.h (case_values_threshold): Remove declartation.
23415         * expr.c (case_values_threshold): Remove function.
23416         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23417
23418         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23419         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23420         (avr_case_values_threshold): Declare as static.
23421         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23422
23423         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23424         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23425         (mn10300_case_values_threshold): New function.
23426
23427 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23428
23429         * ira.c (setup_cover_and_important_classes): Add enum cast.
23430
23431 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23432
23433         * genpreds.c (write_enum_constraint_num): Output definition of
23434         CONSTRAINT_NUM_DEFINED_P macro.
23435         * ira.c (setup_cover_and_important_classes): Use
23436         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23437
23438 2009-04-24  DJ Delorie  <dj@redhat.com>
23439
23440         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23441         __SH2A_SINGLE_ONLY__ also.
23442
23443 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23444
23445         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23446         (movdf_internal): Ditto.
23447         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23448         SFmode and DFmode constants.
23449         (ia64_print_operand): Add 'G' format for printing
23450         floating point constants.
23451
23452 2009-04-24  Richard Guenther  <rguenther@suse.de>
23453
23454         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23455         from unsigned additions.
23456
23457 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23458
23459         * c-typeck.c (set_init_index): Allow array designators that are
23460         not integer constant expressions with a pedwarn if pedantic.
23461
23462 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23463
23464         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23465         zero if no overlap in nonzero bits between the operands.
23466
23467 2009-04-24  Ian Lance Taylor  <iant@google.com>
23468
23469         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23470         (record_dead_and_set_regs): Likewise.
23471         * df.h (struct df_mw_hardreg): Change flags field to int.
23472         (struct df_base_ref): Likewise.
23473         (struct df): Change changeable_flags field to int.
23474         * df-scan.c (df_defs_record): Change clobber_flags to int.
23475         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23476         constants rather than #define macros.
23477         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23478         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23479         (enum dwarf_calling_convention): Likewise.
23480         (enum dwarf_line_number_x_ops): Likewise.
23481         (enum dwarf_call_frame_info): Likewise.
23482         (enum dwarf_source_language): Likewise.
23483         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23484         (add_calling_convention_attribute): Likewise.
23485         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23486         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23487         * genrecog.c (maybe_both_true_2): Change c to int.
23488         (write_switch): Likewise.  Add cast to enum type.
23489         * gimplify.c (gimplify_omp_for): Handle return values from
23490         gimplify_expr using MIN rather than bitwise or.
23491         (gimplify_expr): Add cast to enum type.
23492         * ipa-prop.c (update_jump_functions_after_inlining): Change
23493         IPA_BOTTOM to IPA_JF_UNKNOWN.
23494         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23495         Add casts to enum type.
23496         (setup_cover_and_important_classes): Change cl to int.  Add casts
23497         to enum type.
23498         (setup_class_translate): Change cl and mode to int.
23499         (ira_init_once): Change mode to int.
23500         (free_register_move_costs): Likewise.
23501         (setup_prohibited_mode_move_regs): Add casts to enum type.
23502         * langhooks.c (add_builtin_function_common): Rework assertion that
23503         value fits bitfield.
23504         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23505         * omega.c (omega_do_elimination): Avoid math on enum types.
23506         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23507         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23508         int local to handle integral_argment value.
23509         * regmove.c (try_auto_increment): Change PUT_MODE to
23510         PUT_REG_NOTE_KIND.
23511         * reload.c (push_secondary_reload): Add casts to enum type.
23512         (secondary_reload_class, find_valid_class): Likewise.
23513         * reload1.c (emit_input_reload_insns): Likewise.
23514         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23515         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23516         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23517         constant.
23518         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23519         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23520         enum type.
23521         (expand_complex_libcall): Add casts to enum type.
23522         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23523         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23524         with ERROR_MARK, not NUM_TREE_CODES.
23525         (vect_create_epilog_for_reduction): Likewise.
23526         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23527         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23528         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23529         enum machine_mode.
23530         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23531         vect_unused_in_loop.  Change 0 to loop_vect.
23532         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23533         * var-tracking.c (get_init_value): Change return type to enum
23534         var_init_status.
23535         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23536         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23537         arm_fp_model.
23538         (arm_override_options): Add casts to enum type.
23539         (arm_emit_tls_decoration): Likewise.
23540         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23541         to enum type.
23542         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23543         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23544         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23545         enum type.
23546         * config/s390/s390.c (code_for_builtin_64): Change to array of
23547         enum insn_code.
23548         (code_for_builtin_31): Likewise.
23549         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23550         const *.
23551         * config/sparc/sparc.c (sparc_override_options): Change value
23552         field in struct code_model to enum cmodel.  In initializer change
23553         0 to NULL and add cast to enum type.
23554
23555         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23556         Change all callers.  Issue a -Wc++-compat warning using
23557         lhs_origtype if necessary.
23558         (convert_for_assignment): Issue -Wc++-compat warnings about
23559         invalid conversions to enum type on assignment.
23560         * c-common.h (build_modify_expr): Update declaration.
23561
23562 2009-04-24  Nick Clifton  <nickc@redhat.com>
23563
23564         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23565         (function_arg_advance): Likewise.
23566         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23567         5th alternative.
23568
23569 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23570
23571         * config/s390/constraints.md ('I', 'J'): Fix condition.
23572
23573 2009-04-24  Diego Novillo  <dnovillo@google.com>
23574
23575         * gengtype-parse.c (parse_error): Add newline after message.
23576
23577 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23578
23579         * config/i386/sse.md (avxmodesuffixs): Removed.
23580         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23581         (*avx_pinsr<ssevecsize>): This.
23582
23583 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23584
23585         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23586         follow chains of regs with a single definition, and allow expressions
23587         that are function_invariant_p.
23588         (simple_rhs_p): Allow expressions that are function_invariant_p.
23589
23590 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23591
23592         PR middle-end/39867
23593         * fold-const.c (fold_cond_expr_with_comparison): When folding
23594         > and >= to MAX, make sure the MAX uses the same type as the
23595         comparison's operands.
23596
23597 2009-04-24  Nick Clifton  <nickc@redhat.com>
23598
23599         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23600         addressing for DImode accesses.
23601         (frv_print_operand_address): Handle PLUS case.
23602         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23603
23604 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23605
23606         PR rtl-optimization/39794
23607         * alias.c (canon_true_dependence): Add x_addr argument.
23608         * rtl.h (canon_true_dependence): Adjust prototype.
23609         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23610         * cselib.c (cselib_invalidate_mem): Likewise.
23611         * gcse.c (compute_transp): Likewise.
23612         * dse.c (scan_reads_nospill): Likewise.
23613         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
23614         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
23615         canon_base_addr of the group, plus optional offset.
23616         (struct group_info): Rename canon_base_mem to
23617         canon_base_addr.
23618         (get_group_info): Set canon_base_addr to canon_rtx of base, not
23619         canon_rtx of base_mem.
23620
23621 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
23622
23623         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
23624         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
23625
23626 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23627
23628         * config/spu/spu-builtins.h: Delete file.
23629
23630         * config/spu/spu.h (enum spu_builtin_type): Move here from
23631         spu-builtins.h.
23632         (struct spu_builtin_description): Likewise.  Add GTY marker.
23633         Do not use enum spu_function_code or enum insn_code.
23634         (spu_builtins): Add extern declaration.
23635
23636         * config/spu/spu.c: Do not include "spu-builtins.h".
23637         (enum spu_function_code, enum spu_builtin_type_index,
23638         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
23639         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
23640         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
23641         unsigned_V2DI_type_node): Move here from spu-builtins.h.
23642         (spu_builtin_types): Make static.  Add GTY marker.
23643         (spu_builtins): Add extern declaration with GTY marker.
23644         Include "gt-spu.h".
23645
23646         * config/spu/spu-c.c: Do not include "spu-builtins.h".
23647         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
23648         Check programmatically whether all parameters are scalar.
23649
23650         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
23651
23652 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
23653
23654         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
23655         assignment from the constructor either if the target is volatile.
23656
23657 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
23658
23659         * config/arm/arm.md (insv): Do not share operands[0].
23660
23661 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
23662
23663         * config/vxlib-tls.c (active_tls_threads): Delete.
23664         (delete_hook_installed): New.
23665         (tls_delete_hook): Don't delete the delete hook.
23666         (tls_destructor): Delete it here.
23667         (__gthread_set_specific): Adjust installing the delete hook.
23668         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
23669         __gthread_leave_tsd_dtor_context.
23670
23671 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
23672
23673         * c-format.c (gcc_tdiag_char_table): Add support for %E.
23674
23675 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
23676
23677         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
23678         enum type.
23679         (alpha_rtx_costs): Ditto.
23680         (emit_unlikely_jump): Use add_reg_note.
23681         (emit_frame_store_1): Ditto.
23682         (alpha_expand_prologue): Ditto.
23683         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23684         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
23685
23686 2009-04-23  Nick Clifton  <nickc@redhat.com>
23687
23688         * config/v850/v850.md (epilogue): Remove suppressed code.
23689         (return): Rename to return_simple and remove test of frame size.
23690         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
23691         to gen_return_simple.
23692
23693 2009-04-22  Jing Yu  <jingyu@google.com>
23694
23695         PR testsuite/39781
23696         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
23697
23698 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23699
23700         PR C/31499
23701         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
23702         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
23703         value is a VECTOR_CST, the element type is the element type of the
23704         vector.
23705
23706 2009-04-22  DJ Delorie  <dj@redhat.com>
23707
23708         * config/m32c/m32c.h: Update GTY annotations to new syntax.
23709
23710 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
23711
23712         * alias.c (find_base_term): Move around LO_SUM case, so that
23713         CONST falls through into PLUS/MINUS handling.
23714
23715         PR c/39855
23716         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
23717         into 0, use omit_one_operand.
23718
23719 2009-04-23  Ben Elliston  <bje@au.ibm.com>
23720
23721         * config/rs6000/linux-unwind.h (get_regs): Remove type
23722         puns. Change the type of `pc' to an array of unsigned ints and
23723         update all users.  Constify frame24.
23724
23725 2009-04-22  DJ Delorie  <dj@redhat.com>
23726
23727         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
23728         declarations before code.
23729         (current_function_special_page_vector): Likewise.
23730         (m32c_expand_insv): Silence a warning.
23731
23732 2009-04-21  Taras Glek  <tglek@mozilla.com>
23733
23734         * alias.c: Update GTY annotations to new syntax.
23735         * basic-block.h: Likewise.
23736         * bitmap.h: Likewise.
23737         * c-common.h: Likewise.
23738         * c-decl.c: Likewise.
23739         * c-parser.c: Likewise.
23740         * c-pragma.c: Likewise.
23741         * c-tree.h: Likewise.
23742         * cfgloop.h: Likewise.
23743         * cgraph.h: Likewise.
23744         * config/alpha/alpha.c: Likewise.
23745         * config/arm/arm.h: Likewise.
23746         * config/avr/avr.h: Likewise.
23747         * config/bfin/bfin.c: Likewise.
23748         * config/cris/cris.c: Likewise.
23749         * config/darwin.c: Likewise.
23750         * config/frv/frv.c: Likewise.
23751         * config/i386/i386.c: Likewise.
23752         * config/i386/i386.h: Likewise.
23753         * config/i386/winnt.c: Likewise.
23754         * config/ia64/ia64.h: Likewise.
23755         * config/iq2000/iq2000.c: Likewise.
23756         * config/mips/mips.c: Likewise.
23757         * config/mmix/mmix.h: Likewise.
23758         * config/pa/pa.c: Likewise.
23759         * config/pa/pa.h: Likewise.
23760         * config/rs6000/rs6000.c: Likewise.
23761         * config/s390/s390.c: Likewise.
23762         * config/sparc/sparc.c: Likewise.
23763         * config/xtensa/xtensa.c: Likewise.
23764         * cselib.h: Likewise.
23765         * dbxout.c: Likewise.
23766         * dwarf2out.c: Likewise.
23767         * except.c: Likewise.
23768         * except.h: Likewise.
23769         * fixed-value.h: Likewise.
23770         * function.c: Likewise.
23771         * function.h: Likewise.
23772         * gimple.h: Likewise.
23773         * integrate.c: Likewise.
23774         * optabs.c: Likewise.
23775         * output.h: Likewise.
23776         * real.h: Likewise.
23777         * rtl.h: Likewise.
23778         * stringpool.c: Likewise.
23779         * tree-data-ref.c: Likewise.
23780         * tree-flow.h: Likewise.
23781         * tree-scalar-evolution.c: Likewise.
23782         * tree-ssa-address.c: Likewise.
23783         * tree-ssa-alias.h: Likewise.
23784         * tree-ssa-operands.h: Likewise.
23785         * tree.c: Likewise.
23786         * tree.h: Likewise.
23787         * varasm.c: Likewise.
23788         * varray.h: Likewise.
23789         * vec.h: Likewise.
23790         * coretypes.h: Do not define GTY macro if it is already defined.
23791         * doc/gty.texi: Update GTY documentation to new syntax.
23792         * gengtype-lex.l: Enforce attribute-like syntax for GTY
23793         annotations on structs.
23794         * gengtype-parse.c: Likewise.
23795
23796 2009-04-22  Mark Heffernan  <meheff@google.com>
23797
23798         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
23799
23800 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23801
23802         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
23803         where appropriate.
23804
23805 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
23806
23807         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
23808         the same as a PLUS without a shift.  Increase the cost of a
23809         CONST_INT in MULT.
23810
23811 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23812
23813         * Makefile.in: Update dependencies.
23814         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
23815         * errors.h: Remove bogus comment about compatibility.
23816         (warning): Update declaration.
23817         * genautomata.c: Update all calls to warning.
23818         * gimple.c: Do not include errors.h. Include toplev.h.
23819         * tree-ssa-structalias.c: Do not include errors.h.
23820         * omega.c: Likewise.
23821         * tree-ssa-reassoc.c: Likewise.
23822         * config/spu/spu-c.c: Likewise.
23823         * config/spu/t-spu-elf: Update dependencies.
23824
23825 2009-04-22  Richard Guenther  <rguenther@suse.de>
23826
23827         PR tree-optimization/39824
23828         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
23829         make sure the types are compatible.
23830
23831 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23832
23833         PR c++/14875
23834         * c-common.c (c_parse_error): Take a token_flags parameter.
23835         Use token_type for the token type instead.
23836         Pass token_flags to cpp_type2name.
23837         * c-common.h (c_parse_error): Update declaration.
23838         * c-parser.c (c_parser_error): Pass 0 as token flags.
23839
23840 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
23841
23842         PR rtl-optimization/39580
23843         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
23844
23845 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23846
23847         * function.c (expand_function_end): Do not emit a jump to the "naked"
23848         return label for fall-through returns.
23849         * except.c (sjlj_emit_function_exit): Always place the call to the
23850         unregister function at the location installed by expand_function_end.
23851
23852 2009-04-22  Richard Guenther  <rguenther@suse.de>
23853
23854         PR tree-optimization/39845
23855         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
23856         (gen_inbound_check): Likewise.
23857
23858 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
23859
23860         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
23861         padding for PPC.
23862         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
23863         * config/vxlib.c (__gthread_once): Add race guard for PPC.
23864
23865 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23866
23867         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
23868         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
23869         shift counts to avoid out-of-bounds array accesses.
23870
23871 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23872
23873         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
23874         (Pmode): Move above.
23875
23876 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
23877
23878         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
23879         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
23880         GET_CODE macro.  Use IN_RANGE macro where appropriate.
23881         * config/alpha/alpha.h: Ditto.
23882         * config/alpha/alpha.md: Ditto.
23883         * config/alpha/constraints.md: Ditto.
23884         * config/alpha/predicates.md: Ditto.
23885
23886 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
23887
23888         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
23889         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23890         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23891         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23892         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23893         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23894         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23895         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23896         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23897         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23898         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23899         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23900         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23901         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23902         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23903         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23904         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23905         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23906         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23907         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23908         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23909         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23910         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23911         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23912         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23913         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23914         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
23915
23916 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
23917
23918         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
23919         references from comments.
23920         * cfgbuild.c (count_basic_blocks): Delete.
23921         (find_basic_blocks_1): Delete.
23922         (find_basic_blocks): Delete.
23923         * except.c (finish_eh_generation): Make static.  Move comment from
23924         except.h here.  Remove find_basic_blocks references from comments.
23925         * except.h (finish_eh_generation): Delete.
23926         * basic-block.h (find_basic_blocks): Delete.
23927         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
23928
23929 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
23930
23931         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
23932         (sdbout_parms):  Likewise.
23933
23934 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
23935
23936         * config/sh/sh.c (prepare_cbranch_operands): Use
23937         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
23938         (expand_cbranchdi4): Likewise.
23939         (from_compare): Add cast to enum type.
23940         (expand_cbranchsi4): Use add_reg_note.
23941         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
23942         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
23943         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
23944         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
23945         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
23946         instead of CODE_FOR_nothing.
23947         (cbranchdi4): Likewise.  Fix the order of arguments for
23948         gen_rtx_fmt_ee.
23949         (push_fpscr): Use add_reg_note.
23950         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
23951         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
23952
23953 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
23954
23955         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
23956         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
23957         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
23958         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
23959         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
23960         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
23961         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
23962         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
23963         config/alpha/x-vms, config/arc/t-arc,
23964         config/arm/README-interworking, config/arm/arm-c.c,
23965         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
23966         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
23967         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
23968         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
23969         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
23970         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
23971         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
23972         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
23973         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
23974         config/cris/t-elfmulti, config/crx/t-crx,
23975         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
23976         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
23977         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
23978         config/h8300/t-h8300, config/i386/athlon.md,
23979         config/i386/darwin-libgcc.10.4.ver,
23980         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
23981         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
23982         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
23983         config/i386/t-linux64, config/i386/t-nwld,
23984         config/i386/t-rtems-i386, config/i386/t-sol2-10,
23985         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
23986         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
23987         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
23988         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
23989         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
23990         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
23991         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
23992         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
23993         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
23994         config/m68k/t-uclinux, config/mcore/t-mcore,
23995         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
23996         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
23997         config/mips/crtn.asm, config/mips/irix-crti.asm,
23998         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
23999         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
24000         config/mips/mips-fixed.md, config/mips/sb1.md,
24001         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
24002         config/mips/t-iris6, config/mips/t-isa3264,
24003         config/mips/t-libgcc-mips16, config/mips/t-linux64,
24004         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
24005         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
24006         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
24007         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
24008         config/mn10300/t-linux, config/mn10300/t-mn10300,
24009         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
24010         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
24011         config/picochip/libgccExtras/clzsi2.asm,
24012         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
24013         config/rs6000/darwin-libgcc.10.4.ver,
24014         config/rs6000/darwin-libgcc.10.5.ver,
24015         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
24016         config/rs6000/t-aix43, config/rs6000/t-aix52,
24017         config/rs6000/t-darwin, config/rs6000/t-fprules,
24018         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
24019         config/rs6000/t-lynx, config/rs6000/t-netbsd,
24020         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
24021         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
24022         config/rs6000/t-rtems, config/rs6000/t-spe,
24023         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
24024         config/score/t-score-elf, config/sh/divcost-analysis,
24025         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
24026         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
24027         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
24028         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
24029         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
24030         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
24031         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
24032         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
24033         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
24034         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
24035         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
24036         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
24037         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
24038         limitx.h, version.c, xcoff.h: Add copyright and license notices.
24039         * config/h8300/genmova.sh: Include copyright and license notices
24040         in generated output.
24041         * config/h8300/mova.md: Regenerate.
24042         * doc/install.texi2html: Include word "Copyright" in copyright
24043         notice and use name "Free Software Foundation, Inc.".
24044         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24045         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24046         ChangeLog-2007, ChangeLog-2008: Correct dates.
24047
24048 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
24049
24050         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
24051         NE_EXPR operations as well.
24052         * c-parser.c (c_parser_condition): Do not set location information on
24053         the condition.
24054         (c_parser_conditional_expression): Likewise.
24055         (c_parser_binary_expression): Set location information on operators.
24056         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
24057         TRUTH_NOT_EXPR has been folded.
24058         * fold-const.c (fold_truth_not_expr): Copy location information from
24059         the incoming expression to the outgoing one.
24060         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
24061         recursive calls on the LHS of the operator but pass that of the
24062         operator to recursive calls on the RHS of the operator.  Set it
24063         on the COND_EXPR.
24064         (shortcut_cond_expr): Set the locus of the operator on the second
24065         COND_EXPR and that of the expression on the first in degenerate cases.
24066         Pass the locus of the expression to calls to shortcut_cond_r.
24067         Set the locus of the 'then' block on the associated jump, if any.
24068         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
24069         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
24070         expression to call to gimplify_boolean_expr.
24071
24072 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
24073
24074         * config.gcc: Add additional configuration for
24075         i686-w64-mingw* and x86_64-w64-mingw* triplet.
24076         * config/i386/mingw-w64.h: New mingw-w64 specific header.
24077         (CPP_SPEC): Redefine for allowing -municode option.
24078         (STARTFILE_SPEC): Likewise.
24079         * config/i386/t-mingw-w64: New.
24080         * config/i386/mingw-w64.opt: New.
24081         (municode): Add new target option.
24082         * doc/invoke.texi (municode): Add documentation for new option.
24083
24084 2009-04-21  Ian Lance Taylor  <iant@google.com>
24085
24086         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24087         Correct test for number of arguments.
24088         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
24089
24090 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
24091
24092         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
24093         argument of emit_library_call.
24094
24095 2009-04-21  Richard Guenther  <rguenther@suse.de>
24096
24097         PR middle-end/39829
24098         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
24099         inside VIEW_CONVERT_EXPRs.
24100
24101 2009-04-21  Martin Jambor  <mjambor@suse.cz>
24102
24103         * tree-switch-conversion.c (build_constructors): Split a long line.
24104         (constructor_contains_same_values_p): New function.
24105         (build_one_array): Create assigns of constants if possible, do not
24106         call mark_sym_for_renaming, call update_stmt.
24107         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
24108         make_rename_temp.  Do not call mark_symbols_for_renaming, call
24109         update_stmt.
24110         (gen_def_assigns): Do not call mark_symbols_for_renaming or
24111         find_new_referenced_vars, call update_stmt.
24112         (gen_inbound_check): Use create_tmp_var and create ssa names manually
24113         instead of calling make_rename_temp.  Do not call
24114         find_new_referenced_vars or mark_symbols_for_renaming, call
24115         update_stmt.
24116
24117 2009-04-21  Richard Guenther  <rguenther@suse.de>
24118
24119         PR tree-optimization/39827
24120         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
24121         (tree_ssa_phiprop): Pass the correct array size.
24122
24123 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
24124
24125         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
24126
24127 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24128
24129         PR 16202
24130         * c-typeck.c (lvalue_p): Move declaration ...
24131         * c-common.h (lvalue_p): ... to here.
24132         * c-common.c (candidate_equal_p): New.
24133         (add_tlist): Use it.
24134         (merge_tlist): Use it.
24135         (warn_for_collisions_1): Likewise.
24136         (warning_candidate_p): Accept more candidates.
24137         (verify_tree): A warning candidate can be an expression. Use
24138         candidate_equal_p.
24139
24140 2009-04-21  Ben Elliston  <bje@au.ibm.com>
24141
24142         PR target/5267
24143         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
24144         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
24145         options.  Remove -mcall-solaris documentation.
24146
24147 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24148
24149         PR c++/13358
24150         * doc/invoke.texi (-Wlong-long): Update description.
24151         * c-lex (interpret_integer): Only warn if there was no previous
24152         overflow and -Wlong-long is enabled.
24153         * c-decl.c (declspecs_add_type): Drop redundant flags.
24154         * c.opt (Wlong-long): Init to -1.
24155         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
24156         and front-end warn_long_long. Wlong-long only depends on other
24157         flags if it is uninitialized.
24158         * c-parser.c (disable_extension_diagnostics): warn_long_long is
24159         the same for CPP and FE.
24160         (restore_extension_diagnostics): Likewise.
24161
24162 2009-04-20  Ian Lance Taylor  <iant@google.com>
24163
24164         Fix enum conversions which are invalid in C++:
24165         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
24166         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
24167         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
24168         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
24169         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
24170         (dbxout_parms): Likewise.
24171         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
24172         (df_clear_flags): Likewise.
24173         * df-problems.c (df_rd_bb_local_compute_process_def): Change
24174         top_flag parameter to int.
24175         (df_chain_create_bb_process_use): Likewise.
24176         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
24177         Remove cast.
24178         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
24179         (df_ref_create_structure, df_def_record_1): Likewise.
24180         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
24181         (df_notes_rescan): Change 0 to VOIDmode in function call.
24182         (df_get_call_refs, df_insn_refs_collect): Likewise.
24183         (df_bb_regs_collect): Likewise.
24184         (df_entry_block_defs_collect): Likewise.
24185         (df_exit_block_uses_collect): Likewise.
24186         * df.h: Update declarations.
24187         * double-int.c (double_int_divmod): Add cast to enum type.
24188         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24189         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24190         (based_loc_descr): Likewise.
24191         (loc_descriptor_from_tree_1): Change first_op and second_op to
24192         enum dwarf_location_atom.  Add cast to enum type.
24193         * expmed.c (init_expmed): Change 0 to SET in function call.
24194         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24195         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24196         (do_store_flag): Likewise.
24197         * fixed-value.h (struct fixed_value): Change mode to enum
24198         machine_mode.
24199         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24200         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24201         function call.
24202         (insert_insn_decl, insert_decl, insert_state): Likewise.
24203         (automata_list_finish): Likewise.
24204         * genrecog.c (process_define_predicate): Add cast to enum type.
24205         * gensupport.c (init_predicate_table): Add cast to enum type.
24206         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24207         function call.
24208         (gimple_build_call_1, gimple_build_label): Likewise.
24209         (gimple_build_goto, gimple_build_asm_1): Likewise.
24210         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24211         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24212         (enum fallback): Rename from enum fallback_t.
24213         (fallback_t): Typedef as int.
24214         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24215         GSI_SAME_STMT in function call.
24216         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24217         enum type.
24218         (setup_reg_class_relations): Likewise.
24219         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24220         (setup_prohibited_class_mode_regs): Add cast to enum type.
24221         (setup_prohibited_mode_move_regs): Likewise.
24222         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24223         (record_address_regs): Change i to enum reg_class.
24224         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24225         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24226         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24227         (GET_MODE_2XWIDER_MODE): Likewise.
24228         (GET_CLASS_NARROWEST_MODE): Likewise.
24229         * omp-low.c (expand_omp_for): Add cast to enum type.
24230         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24231         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24232         * postreload.c (reload_cse_simplify_operands): Change rclass local
24233         to enum reg_class.
24234         * predict.c (combine_predictions_for_insn): Change best_predictor
24235         and predictor to enum br_predictor.
24236         (combine_predictions_for_bb): Likewise.
24237         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24238         use SET_PREDICT_EXPR_OUTCOME.
24239         * real.c (real_arithmetic): Change icode to code in function call.
24240         * reginfo.c (init_move_cost): Add casts to enum type.
24241         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24242         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24243         enum reg_class.
24244         * reload.c (find_valid_class): Add casts to enum type.
24245         (push_reload): Change 0 to NO_REGS in function call.
24246         (find_reloads): Change this_alternative to array of enum
24247         reg_class.  Remove some now-unnecessary casts.
24248         (make_memloc): Change 0 to VOIDmode in function call.
24249         * reload1.c (reload): Change 0 to VOIDmode in function call.
24250         (eliminate_regs_1, elimination_effects): Likewise.
24251         (eliminate_regs_in_insn): Likewise.
24252         (emit_input_reload_insns): Add cast to enum type.
24253         (delete_output_reload): Change 0 to VOIDmode in function call.
24254         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24255         to enum type in function call.
24256         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24257         (SET_PREDICT_EXPR_OUTCOME): Define.
24258         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24259         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24260         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24261         (dump_function): Likewise.
24262         * tree-dump.h: Update declarations.
24263         * tree-pass.h: Update declarations.
24264         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24265         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24266         enum type.
24267         (arm_rtx_costs_1): Correct parenthesization.
24268         (arm_rtx_costs): Add casts to enum type.
24269         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24270         (vfp_emit_fstmd): Use add_rg_note.
24271         (emit_multi_reg_push, emit_sfm): Likewise.
24272         (thumb_set_frame_pointer): Likewise.
24273         (arm_expand_prologue): Likewise.
24274         (arm_regno_class): Change return type to enum reg_class.
24275         (thumb1_expand_prologue): Use add_reg_note.
24276         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24277         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24278         in function call.
24279         * config/arm/gentune.sh: Add cast to enum type.
24280         * config/arm/arm-tune.md: Rebuild.
24281         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24282         (ix86_split_fp_branch, predict_jump): Likewise.
24283         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24284         insn_code to enum rtx_code.
24285         (ix86_builtin_vectorized_function): Add cast to enum type.
24286         * config/i386/i386.md (truncdfsf2): Change slot to enum
24287         ix86_stack_slot.
24288         (truncxf<mode>2, isinf<mode>2): Likewise.
24289         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24290         enum type.
24291         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24292         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24293         (insert_bundle_state): Change 1 to INSERT in function call.
24294         (ia64_add_bundle_selector_before): Likewise.
24295         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24296         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24297         (restore_stack_nonlocal): Likewise.
24298         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24299         function call.
24300         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24301         function call.
24302         (mips_rtx_costs): Likewise.
24303         (mips_override_options): Add casts to enum type.
24304         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24305         in function call.
24306         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24307         (store_reg, set_reg_plus_d): Likewise.
24308         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24309         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24310         cast to enum type.
24311         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24312         function call.
24313         (emit_unlikely_jump): Use add_reg_note.
24314         (rs6000_emit_allocate_stack): Likewise.
24315         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24316         (output_toc): Change 1 to INSERT in function call.
24317         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24318         (rs6000_initialize_trampoline): Likewise.
24319         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24320         function call.
24321         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24322         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24323         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24324         (save_gprs): Use add_reg_note.
24325         (s390_emit_prologue): Likewise.
24326         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24327         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24328         (sparc_fold_builtin): Add cast to enum type.
24329         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24330         enum insn_code.
24331         (spu_expand_prologue): Use add_reg_note.
24332         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24333
24334 2009-04-20  Ian Lance Taylor  <iant@google.com>
24335
24336         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24337         (c_parser_postfix_expression_after_primary): Get VEC for list of
24338         arguments.  Get original types of arguments.  Call
24339         build_function_call_vec.
24340         (cached_expr_list_1, cached_expr_list_2): New static variables.
24341         (c_parser_expr_list): Change return type to VEC *.  Add
24342         p_orig_types parameter.  Change all callers.
24343         (c_parser_release_expr): New static function.
24344         (c_parser_vec_to_tree_list): New static function.
24345         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24346         call build_function_call_vec.
24347         (build_function_call_vec): New function, based on old
24348         build_function_call.
24349         (convert_arguments): Remove nargs and argarray parameters.  Change
24350         values to a VEC.  Add origtypes parameter.
24351         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24352         (convert_for_assignment): Add origtype parameter.  Change all
24353         callers.  If warn_cxx_compat, check for conversion to an enum
24354         type when calling a function.
24355         (store_init_value): Add origtype parameter.  Change all callers.
24356         (digest_init): Likewise.
24357         (struct init_node): Add origtype field.
24358         (add_pending_init): Add origtype parameter.  Change all callers.
24359         (output_init_element): Likewise.
24360         (output_pending_init_elements): Pass origtype from init_node to
24361         output_init_element.
24362         (process_init_element): Pass origtype from c_expr to
24363         output_init_element.
24364         (c_finish_return): Add origtype parameter.  Change all callers.
24365         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24366         caller.
24367         (sync_resolve_params): Likewise.
24368         (sync_resolve_return): Change params to first_param.  Change caller.
24369         (resolve_overloaded_builtins): Change params to VEC *.  Change
24370         callers.  Save first parameter around call to build_function_call_vec.
24371         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24372         callers.  Call build_function_call_vec rather than
24373         build_function_call for cleanup.
24374         * c-tree.h: Update declarations.
24375         * c-common.h: Update declarations.
24376         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24377         params to first_param.
24378         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24379         params parameter from tree to void *.
24380         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24381         Change arglist parameter to have type void *, and to be a pointer
24382         to a VEC.
24383         * config/rs6000/rs6000-protos.h
24384         (altivec_resolve_overloaded_builtin): Update declaration.
24385         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24386         fnargs parameter to have type void *, and to be a pointer to a
24387         VEC.  Call build_function_call_vec instead of
24388         build_function_call.
24389         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24390
24391 2009-04-20  Joey Ye  <joey.ye@intel.com>
24392             Xuepeng Guo  <xuepeng.guo@intel.com>
24393             H.J. Lu  <hongjiu.lu@intel.com>
24394
24395         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24396
24397         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24398         (IX86_LEA_PRIORITY): Likewise.
24399         (distance_non_agu_define): New function.
24400         (distance_agu_use): Likewise.
24401         (ix86_lea_for_add_ok): Likewise.
24402         (ix86_dep_by_shift_count): Likewise.
24403
24404         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24405         should split for LEA.
24406
24407         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24408         function.
24409         (ix86_dep_by_shift_count): Likewise.
24410
24411 2009-04-20  Richard Guenther  <rguenther@suse.de>
24412
24413         * expr.c (handled_component_p): Move ...
24414         * tree.h (handled_component_p): ... here.
24415         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24416         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24417         and REALPART_EXPR to be in one group.
24418
24419 2009-04-20  Richard Guenther  <rguenther@suse.de>
24420
24421         * basic-block.h (get_all_dominated_blocks): Declare.
24422         * dominance.c (get_all_dominated_blocks): New function.
24423         * tree-cfg.c (get_all_dominated_blocks): Remove.
24424         (remove_edge_and_dominated_blocks): Adjust.
24425         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24426         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24427         instead of recursing.
24428
24429 2009-04-20  Doug Kwan  <dougkwan@google.com>
24430
24431         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24432         (struct cgraph_node_set_def): New type.
24433         (cgraph_node_set) New type. Also declare vector functions.
24434         (struct cgraph_node_set_element_def): New type.
24435         (cgraph_node_set_element): Ditto.
24436         (cgraph_node_set_iterator): New iterator type.
24437         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24438         cgraph_node_set_remove, dump_cgraph_node_set,
24439         debug_cgraph_node_set): New prototypes.
24440         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24441         cgraph_node_set_size): New inlines.
24442         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24443         including cgraph.h.
24444         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24445         argument to function 'write_summary'.
24446         * ipa.c: Include ggc.h.
24447         (hash_cgraph_node_set_element,
24448         eq_cgraph_node_set_element, cgraph_node_set_new,
24449         cgraph_node_set_add, cgraph_node_set_remove,
24450         cgraph_node_set_find, dump_cgraph_node_set,
24451         debug_cgraph_node_set): New functions.
24452         * Makefile.in (ipa.o): Add dependency on GGC_H.
24453
24454 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24455
24456         PR tree-optimization/39675
24457         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24458         check of the return code of vect_schedule_slp. Check that
24459         stmt_vec_info still exists for the statement, before checking its
24460         vectorization type.
24461
24462 2009-04-20  Michael Matz  <matz@suse.de>
24463
24464         * Makefile.in (generated_files): Take out $(simple_generated_c).
24465
24466 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24467
24468         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24469         (UINTPTR_TYPE):  Likewise.
24470
24471 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24472
24473         PR c/37481
24474         * c-typeck.c (digest_init): Check for initializing an array with a
24475         string literal.
24476
24477 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24478
24479         PR c/19771
24480         * c-semantics.c (pop_stmt_list): Propagate
24481         STATEMENT_LIST_HAS_LABEL to parent statement list.
24482
24483 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24484
24485         * config/mips/mips.h (mips_tune_attr): New macro.
24486         * config/mips/mips.md (cpu): Use it.
24487
24488 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24489
24490         PR c/38243
24491         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24492         declaring a tag.
24493
24494 2009-04-19  Diego Novillo  <dnovillo@google.com>
24495
24496         * toplev.c (compile_file): Move call to coverage_finish ...
24497         * cgraphunit.c (ipa_passes): ... here.
24498         Call cgraph_process_new_functions.
24499         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24500         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24501
24502 2009-04-19  Jan Hubicka  <jh@suse.cz>
24503
24504         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24505         cfun.
24506         (dump_cgraph_node): Dump can throw external flag.
24507         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24508
24509 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24510
24511         PR c/32061
24512         PR c++/36954
24513         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24514         * common.opt (Wlogical-op): Move from here...
24515         * c.opt (Wlogical-op): ... to here.
24516         * c-typeck.c (parser_build_binary_op): Update call to
24517         warn_logical_operator.
24518         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24519         extra_warnings.
24520         * c-common.c (warn_logical_op): Update.
24521         * c-common.h (warn_logical_op): Update declaration.
24522
24523 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24524
24525         * tree.c (protected_set_expr_location): Fix formatting.
24526
24527 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24528
24529         PR c/27676
24530         * c-typeck.c (readonly_warning): new.
24531         (build_unary_op, build_modify_expr): Use readonly_warning for
24532         storing into something readonly but not const-qualified.
24533
24534 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24535
24536         PR c/22367
24537         * c-typeck.c (build_unary_op): Check for taking address of
24538         expression of type void.
24539
24540 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24541
24542         PR c/35210
24543         * c-typeck.c (build_function_call): Check for calling a function
24544         with qualified void return types.  Call require_complete_type when
24545         generating a trap.
24546
24547 2009-04-18  Jan Hubicka  <jh@suse.cz>
24548
24549         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24550         Set nothrow flag.
24551         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24552         can_throw_external flag.
24553         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24554         * ipa-pure-const.c (ignore_edge): New function.
24555         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24556         only over can_throw_external edges.
24557         (local_pure_const): Add nothrow flag.
24558         * ipa-utils.c (searchc): Add ignore_edge callback.
24559         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24560         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24561         (set_nothrow_function_flags): Update cgraph.
24562         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24563
24564 2009-04-18  Richard Guenther  <rguenther@suse.de>
24565
24566         PR middle-end/39804
24567         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24568         (fold_stmt): ... this and ...
24569         (fold_stmt_inplace): ... this.
24570         (fold_stmt_1): Fold references in calls and asms.
24571         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24572
24573 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24574
24575         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24576         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24577
24578 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24579
24580         * tree.c (function_args_count): Remove.
24581         * tree.h: Remove the prototype for function_args_count.
24582
24583 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24584
24585         * tree-iterator.c (expr_only): Remove.
24586         * tree.h: Remove the prototype for expr_only.
24587
24588 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24589
24590         * reginfo.c (cannot_change_mode_set_regs): Remove.
24591         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24592
24593 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24594
24595         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24596         whether operands 0 and 1 overlaps.
24597
24598 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24599
24600         PR middle-end/36902
24601         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24602         pointer. Use warning_at instead of warning.
24603         (search_for_addr_array): Likewise.
24604         (check_array_bounds): Likewise.
24605         (check_all_array_refs): Check that the incoming edge is not in the
24606         list of edges to be removed.
24607         (check_all_array_refs): Avoid the temporal pointer.
24608         (vrp_visit_cond_stmt): Fix typo.
24609         (simplify_switch_using_ranges): Handle the case where the switch
24610         index is an integer constant.
24611
24612 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24613
24614         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
24615
24616 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24617
24618         * doc/extend.texi, doc/invoke.texi: Fix typos.
24619
24620 2009-04-17  Cary Coutant  <ccoutant@google.com>
24621
24622         * tree-flow-inline.h (get_lineno): Fix inverted test.
24623
24624 2009-04-17  Diego Novillo  <dnovillo@google.com>
24625
24626         * tree-ssa-pre.c (create_expression_by_pieces): Remove
24627         assertion for AVAIL_OUT.
24628
24629 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
24630
24631         PR target/38627
24632         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
24633         * config/sh/linux-atomic.asm: Likewise.
24634
24635 2009-04-17  Diego Novillo  <dnovillo@google.com>
24636
24637         * except.c (debug_eh_tree): New.
24638         (struct eh_region, struct eh_status): Move ...
24639         * except.h: ... here.
24640         (add_type_for_runtime): Declare extern.
24641         (lookup_type_for_runtime): Likewise.
24642         (debug_eh_tree): Declare.
24643         * Makefile.in (GTFILES): List except.h before except.c
24644
24645 2009-04-17  Diego Novillo  <dnovillo@google.com>
24646
24647         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
24648         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
24649         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
24650         (find_vars_r): ... here.
24651         * tree-flow.h (find_referenced_vars_in): Declare.
24652         * tree-ssa-pre.c (create_expression_by_pieces): Assert
24653         that AVAIL_OUT exists for BLOCK.
24654         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
24655         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
24656         (tree-parloops.o): Likewise.
24657
24658 2009-04-17  Simon Baldwin  <simonb@google.com>
24659
24660         * toplev.c (default_tree_printer): Add handling for %E format.
24661
24662 2009-04-17  Diego Novillo  <dnovillo@google.com>
24663
24664         * tree-pretty-print.c (dump_generic_node): Add break after
24665         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
24666         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
24667         FUNCTION_TYPE together.  Call print_struct_decl when printing
24668         structures and TDF_SLIM is not given.
24669         (print_struct_decl): Fix logic for detecting recursion.
24670
24671 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24672
24673         PR 31567
24674         * gcc.c (create_at_file): New.
24675         (compile_input_file_p): New.
24676         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
24677         * main.c (main): Update call to toplev_main.
24678         * toplev.c (toplev_main): Change signature. Call expandargv.
24679         * toplev.h (toplev_main): Change signature.
24680
24681 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24682
24683         * dwarf2out.c (field_byte_offset): Use the type size as the field size
24684         if the latter is not constant.
24685
24686 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
24687
24688         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
24689
24690 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
24691
24692         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
24693         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
24694
24695 2009-04-17  Richard Guenther  <rguenther@suse.de>
24696
24697         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24698         Handle component references view-converting an invariant address.
24699
24700 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
24701
24702         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
24703         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
24704         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
24705         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
24706         Use @deftypevr rather than @deftypevar.
24707
24708 2009-04-17  Richard Guenther  <rguenther@suse.de>
24709
24710         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
24711         (get_prop_source_stmt): Likewise.
24712         (can_propagate_from): Likewise.
24713
24714 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
24715
24716         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
24717         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
24718         (--with-multilib-list): Add default value.
24719         * configure: Regenerate.
24720         * Makefile.in (TM_ENDIAN_CONFIG): Define.
24721         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
24722         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
24723         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
24724         Don't add default cpu to multilib list unnecessarily, but do enable
24725         the relevant compiler option..
24726         Add support for --with-multilib-list=<blank> and
24727         --with-multilib-list=!<somelib> to supress unwanted multilibs.
24728         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
24729         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
24730         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
24731         TM_MULTILIB_CONFIG.
24732         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
24733         (MULTILIB_OSDIRNAMES): New variable.
24734         * config/sh/t-1e: Delete file.
24735         * config/sh/t-mlib-sh1: Delete file.
24736         * config/sh/t-mlib-sh2: Delete file.
24737         * config/sh/t-mlib-sh2a: Delete file.
24738         * config/sh/t-mlib-sh2a-nofpu: Delete file.
24739         * config/sh/t-mlib-sh2a-single: Delete file.
24740         * config/sh/t-mlib-sh2a-single-only: Delete file.
24741         * config/sh/t-mlib-sh2e: Delete file.
24742         * config/sh/t-mlib-sh3e: Delete file.
24743         * config/sh/t-mlib-sh4: Delete file.
24744         * config/sh/t-mlib-sh4-nofpu: Delete file.
24745         * config/sh/t-mlib-sh4-single: Delete file.
24746         * config/sh/t-mlib-sh4-single-only: Delete file.
24747         * config/sh/t-mlib-sh4a: Delete file.
24748         * config/sh/t-mlib-sh4a-nofpu: Delete file.
24749         * config/sh/t-mlib-sh4a-single: Delete file.
24750         * config/sh/t-mlib-sh4a-single-only: Delete file.
24751         * config/sh/t-mlib-sh4al: Delete file.
24752         * config/sh/t-mlib-sh5-32media: Delete file.
24753         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
24754         * config/sh/t-mlib-sh5-64media: Delete file.
24755         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
24756         * config/sh/t-mlib-sh5-compact: Delete file.
24757         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
24758         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
24759         * doc/install.texi (Options specification): Add
24760         --with-multilib-list and --with-endian.
24761
24762 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
24763
24764         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
24765         REVISION_c.
24766         (OBJS-common): Add plugin-version.o.
24767         (plugin-version.o): New.
24768         * gcc-plugin.h (plugin_gcc_version): New.
24769         (plugin_default_version_check): New.
24770         (plugin_init_func, plugin_init): Add version argument.
24771         * plugin-version.c: New.
24772         * plugin.c (str_plugin_gcc_version_name): New.
24773         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
24774         pass it to the init function.
24775         (plugin_default_version_check): New.
24776
24777 2009-04-17  Richard Guenther  <rguenther@suse.de>
24778
24779         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
24780         for decl-vs-decl disambiguation.
24781
24782 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
24783
24784         * config/s390/s390.h (s390_tune_attr): New macro definition.
24785         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
24786
24787 2009-04-17  Richard Guenther  <rguenther@suse.de>
24788
24789         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
24790         (fold_stmt_r): Likewise.
24791         (maybe_fold_reference): New function.
24792         (fold_gimple_assign): Handle cases fold_stmt_r did.
24793         (fold_stmt): Do not use fold_stmt_r.
24794         (fold_stmt_inplace): Likewise.
24795
24796 2009-04-17  Richard Guenther  <rguenther@suse.de>
24797
24798         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
24799         (record_equivalences_from_stmt): Remove useless checks and
24800         simplifications.
24801         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
24802         the type is already suitable.
24803
24804 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
24805
24806         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
24807
24808 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
24809
24810         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
24811         (CMPtype): Define as __gcc_CMPtype.
24812
24813 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
24814
24815         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
24816         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
24817
24818 2009-04-17  Richard Guenther  <rguenther@suse.de>
24819
24820         PR tree-optimization/39746
24821         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
24822         special-casing for builtins and static variable use/def.
24823         (call_may_clobber_ref_p_1): Likewise.
24824
24825 2009-04-16  Ian Lance Taylor  <iant@google.com>
24826
24827         * df.h: Include "timevar.h".
24828         (struct df_problem): Change tv_id field to timevar_id_t.
24829         * tree-pass.h: Include "timevar.h".
24830         (struct opt_pass): Change tv_id field to timevar_id_t.
24831         * timevar.h (timevar_id_t): Define TV_NONE.
24832         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
24833         TV_NONE rather than tv_id != 0.
24834         (execute_one_pass): Likewise.
24835         * Makefile.in (DF_H): Add $(TIMEVAR_H).
24836         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
24837         dependencies to $(TREE_PASS_H).
24838         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
24839         to TV_NONE.
24840         (pass_branch_target_load_optimize2): Likewise.
24841         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
24842         (pass_outof_cfg_layout_mode): Likewise.
24843         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
24844         (pass_rebuild_cgraph_edges): Likewise.
24845         (pass_remove_cgraph_callee_edges): Likewise.
24846         * df-core.c (pass_df_initialize_opt): Likewise.
24847         (pass_df_initialize_no_opt): Likewise.
24848         (pass_df_finish): Likewise.
24849         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
24850         * except.c (pass_set_nothrow_function_flags): Likewise.
24851         (pass_convert_to_eh_region_ranges): Likewise.
24852         * final.c (pass_compute_alignments): Likewise.
24853         * function.c (pass_instantiate_virtual_regs): Likewise.
24854         (pass_init_function): Likewise.
24855         (pass_leaf_regs): Likewise.
24856         (pass_match_asm_constraints): Likewise.
24857         * gimple-low.c (pass_lower_cf): Likewise.
24858         (pass_mark_used_blocks): Likewise.
24859         * init-regs.c (pass_initialize_regs): Likewise.
24860         * integrate.c (pass_initial_value_sets): Likewise.
24861         * ira.c (pass_ira): Likewise.
24862         * jump.c (pass_cleanup_barriers): Likewise.
24863         * omp-low.c (pass_expand_omp): Likewise.
24864         (pass_lower_omp): Likewise.
24865         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
24866         * recog.c (pass_split_all_insns): Likewise.
24867         (pass_split_after_reload): Likewise.
24868         (pass_split_before_regstack): Likewise.
24869         (pass_split_before_sched2): Likewise.
24870         (pass_split_for_shorten_branches): Likewise.
24871         * reginfo.c (pass_reginfo_init): Likewise.
24872         (pass_subregs_of_mode_init): Likewise.
24873         (pass_subregs_of_mode_finish): Likewise.
24874         * passes.c (pass_postreload): Likewise.
24875         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
24876         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
24877         (pass_warn_function_return): Likewise.
24878         (pass_warn_function_noreturn): Likewise.
24879         * tree-complex.c (pass_lower_complex): Likewise.
24880         (pass_lower_complex_O0): Likewise.
24881         * tree-if-conv.c (pass_if_conversion): Likewise.
24882         * tree-into-ssa.c (pass_build_ssa): Likewise.
24883         * tree-mudflap.c (pass_mudflap_1): Likewise.
24884         (pass_mudflap_2): Likewise.
24885         * tree-nomudflap.c (pass_mudflap_1): Likewise.
24886         (pass_mudflap_2): Likewise.
24887         * tree-nrv.c (pass_return_slot): Likewise.
24888         * tree-object-size.c (pass_object_sizes): Likewise.
24889         * tree-optimize.c (pass_all_optimizations): Likewise.
24890         (pass_early_local_passes): Likewise.
24891         (pass_all_early_optimizations): Likewise.
24892         (pass_cleanup_cfg): Likewise.
24893         (pass_cleanup_cfg_post_optimizing): Likewise.
24894         (pass_free_datastructures): Likewise.
24895         (pass_free_cfg_annotations): Likewise.
24896         (pass_fixup_cfg): Likewise.
24897         (pass_init_datastructures): Likewise.
24898         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
24899         (pass_late_warn_uninitialized): Likewise.
24900         (pass_update_address_taken): Likewise.
24901         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
24902         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
24903         (pass_cse_sincos): Likewise.
24904         (pass_convert_to_rsqrt): Likewise.
24905         * tree-ssa-structalias.c (pass_build_alias): Likewise.
24906         * tree-stdarg.c (pass_stdarg): Likewise.
24907         * tree-tailcall.c (pass_tail_recursion): Likewise.
24908         (pass_tail_calls): Likewise.
24909         * tree-vect-generic.c (pass_lower_vector): Likewise.
24910         (pass_lower_vector_ssa): Likewise.
24911         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
24912
24913 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
24914
24915         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
24916         XLR entry.
24917         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
24918         Handle -march=xlr.
24919         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
24920         logical and signext.
24921
24922 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
24923
24924         PR target/39767
24925         * config/sh/predicates.md (arith_operand): Check if the operand
24926         of TRUNCATE is a REG.
24927
24928 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24929
24930         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
24931         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
24932
24933 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24934
24935         * tree-iterator.c (tsi_split_statement_list_after,
24936         tsi_split_statement_list_before): Remove.
24937         * tree-iterator.h: Remove the prototypes for
24938         tsi_split_statement_list_after and tsi_split_statement_list_before.
24939
24940 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24941
24942         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
24943         * tree-ssa-propagate.h: Remove the prototype for
24944         stmt_makes_single_load.
24945
24946 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24947
24948         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
24949         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
24950
24951 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24952
24953         * tree-iterator.c (EXPR_LAST_BODY): Remove.
24954
24955 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24956
24957         * except.c (eh_region_outer_p): Remove.
24958         * except.h: Remove the prototype for eh_region_outer_p.
24959
24960 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
24961
24962         * function.c (current_function_assembler_name): Remove.
24963         * function.h: Remove the prototype for
24964         current_function_assembler_name.
24965
24966 2009-04-16  Ian Lance Taylor  <iant@google.com>
24967
24968         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
24969         (add_reg_note): Call alloc_reg_note.
24970         * rtl.h (alloc_reg_note): Declare.
24971         * combine.c (try_combine): Use alloc_reg_note.
24972         (recog_for_combine, move_deaths): Likewise.
24973         (distribute_notes): Use alloc_reg_note and add_reg_note.
24974         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
24975         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
24976         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
24977
24978 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
24979
24980         PR rtl-optimization/39762
24981         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
24982         ira_may_move_out_cost): Add comments about way of their usage.
24983         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
24984
24985         * ira-conflicts.c (process_regs_for_copy): Use function
24986         ira_get_register_move_cost instead of global
24987         ira_register_move_cost.
24988
24989         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
24990         color_pass, move_spill_restore, update_curr_costs): Ditto.
24991
24992         * ira-lives.c (process_single_reg_class_operands): Ditto.
24993
24994         * ira-emit.c (emit_move_list): Ditto.
24995
24996         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
24997         (record_reg_classes): Ditto.  Use functions
24998         ira_get_register_move_cost and ira_get_may_move_cost instead of
24999         global vars ira_register_move_cost, ira_may_move_out_cost and
25000         ira_may_move_in_cost.
25001         (record_address_regs): Don't call ira_init_register_move_cost.
25002         Use function ira_get_may_move_cost instead of global
25003         ira_may_move_in_cost.
25004         (process_bb_node_for_hard_reg_moves): Use function
25005         ira_get_register_move_cost instead of global ira_register_move_cost.
25006         (ira_costs): Don't call ira_init_register_move_cost.
25007
25008 2009-04-16  Richard Guenther  <rguenther@suse.de>
25009
25010         * tree-cfg.c (verify_gimple_assign_binary):
25011         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
25012         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
25013         (create_general_new_stmt): Note that this function is broken.
25014
25015 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25016
25017         * common.opt (fhelp): Add Var(help_flag).
25018         * gcc-plugin.h (plugin_info): Add help.
25019         * plugin.c (plugin_name_args): Add help.
25020         (register_plugin_info): Set plugin->help.
25021         (print_help_one_plugin): New.
25022         (print_plugins_help): New.
25023         * plugin.h (print_plugins_help): New.
25024         * toplev.c (toplev_main): Call print_plugins_help if needed.
25025
25026 2009-04-16  Richard Guenther  <rguenther@suse.de>
25027
25028         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
25029         (gimple_ior_addresses_taken_1): New function.
25030         (gimple_ior_addresses_taken): Likewise.
25031         * gimple.h (struct gimple_statement_with_ops_base): Remove
25032         addresses_taken member.
25033         (gimple_ior_addresses_taken): Declare.
25034         (gimple_addresses_taken, gimple_addresses_taken_ptr,
25035         gimple_set_addresses_taken): Remove.
25036         * ipa-reference.c (mark_address): New function.
25037         (scan_stmt_for_static_refs): Use it for marking addresses taken.
25038         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
25039         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
25040         (gimple_add_to_addresses_taken): Remove.
25041         (get_tmr_operands): Call mark_address_taken.
25042         (get_asm_expr_operands): Likewise.
25043         (get_expr_operands): Likewise.
25044         (build_ssa_operands): Do not clear the addresses_taken bitmap.
25045         (free_stmt_operands): Do not free it.
25046         * tree-ssa.c (delete_tree_ssa): Likewise.
25047         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
25048
25049 2009-04-16  Richard Guenther  <rguenther@suse.de>
25050
25051         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
25052         (walk_stmt_load_store_ops): Likewise.
25053         * gimple.c (get_base_loadstore): New function.
25054         (walk_stmt_load_store_addr_ops): Likewise.
25055         (walk_stmt_load_store_ops): Likewise.
25056         * ipa-pure-const.c (check_op): Simplify.
25057         (check_load, check_store): New functions.
25058         (check_stmt): Use walk_stmt_load_store_ops.
25059         * ipa-reference.c (mark_load): Adjust signature.
25060         (mark_store): Likewise.
25061         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
25062
25063 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25064
25065         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
25066         (plugin_info): New.
25067         * opts.c (common_handle_option): Don't call print_version.
25068         * plugin.c (plugin_name_args): Add version.
25069         (register_plugin_info): New.
25070         (register_callback): Handle PLUGIN_INFO.
25071         (try_init_one_plugin): New.
25072         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
25073         if failed to init.
25074         (finalize_one_plugin): New.
25075         (finalize_plugins): New.
25076         (print_one_plugin): New.
25077         (print_plugins_versions): New.
25078         * plugin.h (print_plugins_versions): New.
25079         (finalize_plugins): New.
25080         * toplev.c (compile_file): Don't call initialize_plugins.
25081         (print_version): Call print_plugins_versions.
25082         (toplev_main): Call initialize_plugins. Print version if needed.
25083         Call finalize_plugins.
25084
25085 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25086
25087         * common.opt (fversion): New.
25088         * gcc.c (print_version): New.
25089         (process_command): Don't print the version. Just set print_version.
25090         (main): Print version. Call subprocesses if print_version and
25091         verbose_flag are set.
25092         * opts.c (common_handle_option): Handle OPT_fversion.
25093
25094 2009-04-16  Richard Guenther  <rguenther@suse.de>
25095             Ira Rosen  <irar@il.ibm.com>
25096
25097         PR tree-optimization/39698
25098         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
25099         type of the reduction variable.  Only generate the def if
25100         it is needed.
25101
25102         * omp-low.c (expand_omp_for_generic): When converting to a pointer
25103         make sure to first convert to an integer of the same precision.
25104         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
25105         the type of the evolution correctly in computing the new
25106         induction variable base.
25107
25108 2009-04-16  Richard Guenther  <rguenther@suse.de>
25109
25110         PR middle-end/39625
25111         * tree-cfg.c (make_blocks): Split statements with to-be
25112         abnormal SSA names on the lhs.
25113
25114 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
25115
25116         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
25117         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
25118         * c-typeck.c (really_start_incremental_init): Likewise.
25119         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
25120         (TARGET_INITIALIZER): Remove it.
25121         * target.h (struct target): Remove vector_opaque_p.
25122         * tree.c (build_opaque_vector_type): New.
25123         * tree.h (TYPE_VECTOR_OPAQUE): New.
25124         (build_opaque_vector_type): Declare.
25125         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
25126         * config/rs6000/rs6000.c (build_opaque_vector_type,
25127         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
25128         (rs6000_init_builtins): Use build_opaque_vector_type for
25129         opaque_V4SI_type_node.
25130
25131 2009-04-15  Catherine Moore  <clm@codesourcery.com>
25132
25133         * debug.h (set_name):  Declare.
25134         * dwarf2out.c (dwarf2out_set_name): Declare.
25135         (dwarf2_debug_hooks): Add set_name.
25136         (find_AT_string): New.
25137         (add_AT_string): Call find_AT_string.
25138         (dwarf2out_set_name): New.
25139         * cp/decl.c (grokdeclarator): Call set_name.
25140         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
25141         * debug.c (do_nothing_debug_hooks):  Likewise.
25142         * dbxout.c (dbx_debug_hooks): Likewise.
25143         * sdbout.c (sdb_debug_hooks): Likewise.
25144
25145 2009-04-15  Michael Eager  <eager@eagercon.com>
25146
25147         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
25148         reg for single-precision FPU.
25149         * config/rs6000/rs6000.md (movsi_internal1): Only for
25150         !TARGET_SINGLE_FPU.
25151         (movsi_internal1_single): New. Add pattern to move SI values to/from
25152         single-precision FP regs.
25153
25154 2009-04-15  Richard Guenther  <rguenther@suse.de>
25155
25156         * omp-low.c (lower_rec_input_clauses): Build correct address
25157         expressions.
25158         (expand_omp_for_generic): Fix multiplication type.
25159         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
25160         (generate_memset_zero): Fix types.
25161         * tree-profile.c (prepare_instrumented_value): Correctly
25162         widen a pointer.
25163
25164 2009-04-15  Ian Lance Taylor  <iant@google.com>
25165
25166         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
25167         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
25168         for -Wall and for -Wc++-compat.
25169         (c_common_post_options): For C++, set warn_enum_compare if not
25170         already set.
25171         * c-tree.h (struct c_expr): Add field original_type.
25172         (build_external_ref): Update declaration.
25173         * c-parser.c (c_parser_braced_init): Set original_type.
25174         (c_parser_initelt): Likewise.
25175         (c_parser_expr_no_commas): Likewise.
25176         (c_parser_conditional_expression): Likewise.
25177         (c_parser_cast_expression): Likewise.
25178         (c_parser_unary_expression): Likewise.  Pull setting of
25179         original_code to top of function.
25180         (c_parser_sizeof_expression): Set original_type.
25181         (c_parser_alignof_expression): Likewise.
25182         (c_parser_postfix_expression): Likewise.  Pull setting of
25183         original_code to top of function.
25184         (c_parser_postfix_expression_after_paren_type): Set original_type.
25185         (c_parser_postfix_expression_after_primary): Likewise.
25186         (c_parser_expression): Likewise.
25187         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25188         callers.
25189         (c_expr_sizeof_expr): Set original_type field.
25190         (parser_build_unary_op): Likewise.
25191         (parser_build_binary_op): Likewise.  Optionally warn about
25192         comparisons of enums of different types.
25193         (digest_init): Set original_type field.
25194         (really_start_incremental_init): Likewise.
25195         (push_init_level, pop_init_level): Likewise.
25196         * doc/invoke.texi (Warning Options): -Wenum-compare now
25197         supported in C.
25198
25199 2009-04-15  Richard Guenther  <rguenther@suse.de>
25200
25201         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25202         out a necessary conversion.
25203         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25204         names we didn't value number.
25205         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25206
25207 2009-04-15  Richard Guenther  <rguenther@suse.de>
25208
25209         PR tree-optimization/39764
25210         * tree-ssa-ccp.c (get_value): Canonicalize value with
25211         canonicalize_float_value.
25212
25213 2009-04-15  Jan Hubicka  <jh@suse.cz>
25214
25215         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25216         Wrong version of patch.
25217
25218 2009-04-15  Jan Hubicka  <jh@suse.cz>
25219
25220         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25221
25222 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25223
25224         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25225         our distinct integral and vector types.
25226
25227 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25228
25229         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25230         * init.c (build_vtbl_address): Remove call to assemble_external.
25231
25232 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25233
25234         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25235         output for other floating point modes.
25236
25237 2009-04-14  Diego Novillo  <dnovillo@google.com>
25238
25239         * diagnostic.c (diagnostic_report_diagnostic): Do not
25240         warn about loaded plugins for DK_ERROR and DK_WARNING.
25241         * c-decl.c (declspecs_add_type): Move call to
25242         invoke_plugin_callbacks ...
25243         * c-parser.c (c_parser_declspecs): ... here.
25244         * plugin.c (dump_active_plugins): Tidy output.
25245
25246 2009-04-14  Diego Novillo  <dnovillo@google.com>
25247             Le-Chun Wu  <lcwu@google.com>
25248
25249         * configure.ac: Add --enable-plugin support.
25250         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25251         * Makefile.in (PLUGIN_H): Define.
25252         Export ENABLE_PLUGIN and GMPINC to site.exp.
25253         Add PLUGINLIBS to link command.
25254         Add/modify dependencies for plugin.o and files including plugin.h.
25255         (plugin.o): New.
25256         * config.in: Regenerate.
25257
25258         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25259         OPT_fplugin_arg_.
25260
25261 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25262
25263         * tree-pass.h (register_one_dump_file): Add a prototype for
25264         register_one_dump_file.
25265         * toplev.c (compile_file): Call initialize_plugins.
25266         (do_compile): Call invoke_plugin_callbacks.
25267         (toplev_main): Call invoke_plugin_callbacks.
25268         * common.opt: Add -fplugin= and -fplugin-arg-.
25269         * gcc-plugin.h: New public header file for plugins to include.
25270         * plugin.c: New source file.
25271         * plugin.h: New internal header file.
25272         * passes.c (register_one_dump_file): Make it external.
25273
25274         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25275
25276 2009-04-14  Diego Novillo  <dnovillo@google.com>
25277
25278         * doc/plugins.texi: New.
25279         * doc/gccint.texi: Add reference to Plugins chapter.
25280         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25281         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25282         loaded plugins, if any.
25283         * timevar.def (TV_PLUGIN_INIT): Define.
25284         (TV_PLUGIN_RUN): Define.
25285         * plugin.c: Include timevar.h
25286         (plugins_active_p): New.
25287         (dump_active_plugins): New.
25288         (debug_active_plugins): New.
25289
25290 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25291
25292         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25293         library paths.
25294         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25295
25296 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25297
25298         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25299         the same as a minus without a shift.
25300
25301 2009-04-14  Nick Clifton  <nickc@redhat.com>
25302
25303         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25304         comparisons with small integers will always produce a short
25305         branch.
25306
25307 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25308
25309         Merge:
25310         2008-12-19  Diego Novillo  <dnovillo@google.com>
25311
25312         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25313
25314 2009-04-14  Richard Guenther  <rguenther@suse.de>
25315
25316         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25317         verification.
25318         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25319         rotates correctly.
25320         (verify_gimple_phi): Print the mismatched argument position.
25321         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25322         Fix types.
25323         (vect_update_init_of_dr): Likewise.
25324         * matrix-reorg.c (transform_access_sites): Do what the
25325         comment suggests.
25326         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25327
25328 2009-04-13  Michael Eager  <eager@eagercon.com>
25329
25330         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25331         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25332         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25333         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25334         remove duplicate config
25335
25336 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25337
25338         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25339         file_name:line_number type locator of the call site.
25340
25341 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25342
25343         * genautomata.c: Put blank after comma.
25344         (automaton_decls): New.
25345         (struct unit_usage): Add comments to member next.
25346         (store_alt_unit_usage): Keep the list ordered.
25347         (unit_present_on_list_p, equal_alternatives_p): New.
25348         (check_regexp_units_distribution): Check units distribution
25349         correctness correctly.
25350         (main): Don't write automata if error is found.  Return correct
25351         exit code.
25352
25353         * config/m68k/cf.md (cfv4_ds): Remove.
25354         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25355         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25356
25357         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25358         power4-load-ext, power4-store, power4-store-update,
25359         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25360         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25361         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25362         power4-sqrt, power4-isync): Modify reservation to make correct
25363         unit distribution to automata.
25364
25365         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25366         power5-store-update, power5-two, power5-three, power5-lmul,
25367         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25368
25369 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25370
25371         * except.c (pass_set_nothrow_function_flags): Set name and add
25372         TODO_dump_func.
25373         (set_nothrow_function_flags): Mention in the dump file when
25374         changing a function to nothrow.
25375
25376 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25377
25378         PR/39066
25379         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25380         instead of unsigned long.
25381
25382 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25383
25384         * config/arm/arm.c (return_used_this_function): Remove.
25385         (arm_output_function_prologue): Remove use of
25386         return_used_this_function.
25387         (output_return_instruction): Replace use of
25388         return_used_this_function
25389         by cfun->machine->return_used_this_function.
25390         (arm_output_epilogue): Likewise.
25391         (arm_output_function_epilogue): Likewise.
25392         (thumb_unexpanded_epilogue): Likewise.
25393         * config/arm/arm.h (struct machine_function):
25394         New member return_used_this_function.
25395
25396 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25397
25398         * doc/install.texi: Correct description of default directory for
25399         --with-gxx-include-dir.
25400
25401 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25402
25403         * fold-const.c (build_range_check): Properly deal with enumeral and
25404         boolean base types.
25405
25406 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25407
25408         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25409         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25410         * params.h (MAX_GCSE_PASSES): Remove.
25411         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25412         in sequence.  Remove ability to run multiple passes.
25413         (bypass_jumps): Report run as third CPROP pass.
25414
25415 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25416
25417         PR middle-end/39651
25418         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25419         when deciding whether the whole SEQUENCE can throw.
25420
25421 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25422
25423         PR target/39740
25424         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25425         offseted label references.
25426
25427 2009-04-11  Jan Hubicka  <jh@suse.cz>
25428
25429         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25430
25431 2009-04-11  Richard Guenther  <rguenther@suse.de>
25432
25433         PR middle-end/39732
25434         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25435         return variables as TREE_ADDRESSABLE.
25436
25437 2009-04-11  Richard Guenther  <rguenther@suse.de>
25438
25439         PR tree-optimization/39713
25440         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25441         reference trees have SSA_NAME operands.
25442
25443 2009-04-11  Richard Guenther  <rguenther@suse.de>
25444
25445         PR c/39712
25446         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25447         address expressions.
25448
25449 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25450
25451         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25452         match changes in Cygwin 1.7
25453         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25454         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25455
25456 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25457
25458         PR tree-optimization/39701
25459         * doc/invoke.texi (Optimization Options): Document change in
25460         meaning and initialization of -fdelete-null-pointer-checks.
25461
25462 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25463
25464         PR middle-end/39701
25465         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25466
25467         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25468         here.
25469
25470         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25471
25472 2009-04-10  Chao-ying Fu  <fu@mips.com>
25473
25474         * doc/tm.texi (Instruction Output): Document
25475         TARGET_ASM_FINAL_POSTSCAN_INSN.
25476         * target.h (final_postscan_insn): New field in asm_out.
25477         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25478         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25479         * final.c (final_scan_insn): Call
25480         targetm.asm_out.final_postscan_insn after outputting
25481         an asm macro and a normal instruction.
25482
25483         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25484         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25485         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25486         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25487         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25488
25489 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25490
25491         PR middle-end/39701
25492         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25493         variables as non-NULL even with -fdelete-null-pointer-checks.
25494
25495 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25496
25497         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25498
25499 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25500
25501         PR target/39678
25502         * config/i386/i386.c (classify_argument): Handle SCmode with
25503         (bit_offset % 64) != 0.
25504
25505 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25506
25507         * doc/invoke.texi (Optimize Options): Add cross-reference to
25508         -Q --help=optimizers examples.
25509
25510 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25511
25512         PR target/36800
25513         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25514         regalign for the reg == fpr and TDmode case.
25515
25516 2009-04-09  David Ayers  <ayers@fsfe.org>
25517
25518         PR objc/29200
25519         * objc/objc-act.c (warn_with_method): Remove helper function.
25520         (check_duplicates): Call warning and inform directly.
25521         (really_start_method): Likewise.
25522
25523 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25524
25525         * expmed.c (expand_divmod): Always use a comparison for a division
25526         by a large unsigned integer.
25527
25528         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25529         for things others than variables or functions as nonzero.
25530
25531 2009-04-09  Nick Clifton  <nickc@redhat.com>
25532
25533         * unwind-compat.c: Change copyright header to refer to version
25534         3 of the GNU General Public License with version 3.1 of the
25535         GCC Runtime Library Exception and to point readers at the
25536         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25537         * config/alpha/crtfastmath.c: Likewise.
25538         * config/alpha/linux-unwind.h: Likewise.
25539         * config/alpha/qrnnd.asm: Likewise.
25540         * config/alpha/vms-crt0-64.c: Likewise.
25541         * config/alpha/vms-crt0.c: Likewise.
25542         * config/alpha/vms-dwarf2.asm: Likewise.
25543         * config/alpha/vms-dwarf2eh.asm: Likewise.
25544         * config/alpha/vms-psxcrt0-64.c: Likewise.
25545         * config/alpha/vms-psxcrt0.c: Likewise.
25546         * config/alpha/vms_tramp.asm: Likewise.
25547         * config/arc/initfini.c: Likewise.
25548         * config/arc/lib1funcs.asm: Likewise.
25549         * config/arm/bpabi-v6m.S: Likewise.
25550         * config/arm/bpabi.S: Likewise.
25551         * config/arm/bpabi.c: Likewise.
25552         * config/arm/crti.asm: Likewise.
25553         * config/arm/crtn.asm: Likewise.
25554         * config/arm/ieee754-df.S: Likewise.
25555         * config/arm/ieee754-sf.S: Likewise.
25556         * config/arm/lib1funcs.asm: Likewise.
25557         * config/arm/libunwind.S: Likewise.
25558         * config/arm/linux-atomic.c: Likewise.
25559         * config/arm/mmintrin.h: Likewise.
25560         * config/arm/pr-support.c: Likewise.
25561         * config/arm/unaligned-funcs.c: Likewise.
25562         * config/arm/unwind-arm.c: Likewise.
25563         * config/arm/unwind-arm.h: Likewise.
25564         * config/avr/libgcc.S: Likewise.
25565         * config/bfin/crti.s: Likewise.
25566         * config/bfin/crtlibid.s: Likewise.
25567         * config/bfin/crtn.s: Likewise.
25568         * config/bfin/lib1funcs.asm: Likewise.
25569         * config/bfin/linux-unwind.h: Likewise.
25570         * config/cris/arit.c: Likewise.
25571         * config/cris/cris_abi_symbol.c: Likewise.
25572         * config/darwin-64.c: Likewise.
25573         * config/darwin-crt2.c: Likewise.
25574         * config/darwin-crt3.c: Likewise.
25575         * config/darwin.h: Likewise.
25576         * config/dbxelf.h: Likewise.
25577         * config/dfp-bit.c: Likewise.
25578         * config/dfp-bit.h: Likewise.
25579         * config/elfos.h: Likewise.
25580         * config/fixed-bit.c: Likewise.
25581         * config/fixed-bit.h: Likewise.
25582         * config/fp-bit.c: Likewise.
25583         * config/fp-bit.h: Likewise.
25584         * config/fr30/crti.asm: Likewise.
25585         * config/fr30/crtn.asm: Likewise.
25586         * config/fr30/lib1funcs.asm: Likewise.
25587         * config/freebsd-spec.h: Likewise.
25588         * config/frv/cmovd.c: Likewise.
25589         * config/frv/cmovh.c: Likewise.
25590         * config/frv/cmovw.c: Likewise.
25591         * config/frv/frvbegin.c: Likewise.
25592         * config/frv/frvend.c: Likewise.
25593         * config/frv/lib1funcs.asm: Likewise.
25594         * config/glibc-stdint.h: Likewise.
25595         * config/h8300/clzhi2.c: Likewise.
25596         * config/h8300/crti.asm: Likewise.
25597         * config/h8300/crtn.asm: Likewise.
25598         * config/h8300/ctzhi2.c: Likewise.
25599         * config/h8300/fixunssfsi.c: Likewise.
25600         * config/h8300/lib1funcs.asm: Likewise.
25601         * config/h8300/parityhi2.c: Likewise.
25602         * config/h8300/popcounthi2.c: Likewise.
25603         * config/i386/ammintrin.h: Likewise.
25604         * config/i386/att.h: Likewise.
25605         * config/i386/avxintrin.h: Likewise.
25606         * config/i386/biarch64.h: Likewise.
25607         * config/i386/bmmintrin.h: Likewise.
25608         * config/i386/cpuid.h: Likewise.
25609         * config/i386/cross-stdarg.h: Likewise.
25610         * config/i386/crtfastmath.c: Likewise.
25611         * config/i386/crtprec.c: Likewise.
25612         * config/i386/cygming-crtbegin.c: Likewise.
25613         * config/i386/cygming-crtend.c: Likewise.
25614         * config/i386/cygwin.asm: Likewise.
25615         * config/i386/emmintrin.h: Likewise.
25616         * config/i386/gmm_malloc.h: Likewise.
25617         * config/i386/gthr-win32.c: Likewise.
25618         * config/i386/i386.h: Likewise.
25619         * config/i386/immintrin.h: Likewise.
25620         * config/i386/linux-unwind.h: Likewise.
25621         * config/i386/linux64.h: Likewise.
25622         * config/i386/mm3dnow.h: Likewise.
25623         * config/i386/mmintrin-common.h: Likewise.
25624         * config/i386/mmintrin.h: Likewise.
25625         * config/i386/nmmintrin.h: Likewise.
25626         * config/i386/pmm_malloc.h: Likewise.
25627         * config/i386/pmmintrin.h: Likewise.
25628         * config/i386/smmintrin.h: Likewise.
25629         * config/i386/sol2-c1.asm: Likewise.
25630         * config/i386/sol2-ci.asm: Likewise.
25631         * config/i386/sol2-cn.asm: Likewise.
25632         * config/i386/sol2-gc1.asm: Likewise.
25633         * config/i386/tmmintrin.h: Likewise.
25634         * config/i386/unix.h: Likewise.
25635         * config/i386/w32-unwind.h: Likewise.
25636         * config/i386/wmmintrin.h: Likewise.
25637         * config/i386/x86-64.h: Likewise.
25638         * config/i386/x86intrin.h: Likewise.
25639         * config/i386/xmmintrin.h: Likewise.
25640         * config/ia64/crtbegin.asm: Likewise.
25641         * config/ia64/crtend.asm: Likewise.
25642         * config/ia64/crtfastmath.c: Likewise.
25643         * config/ia64/crti.asm: Likewise.
25644         * config/ia64/crtn.asm: Likewise.
25645         * config/ia64/fde-glibc.c: Likewise.
25646         * config/ia64/lib1funcs.asm: Likewise.
25647         * config/ia64/linux-unwind.h: Likewise.
25648         * config/ia64/quadlib.c: Likewise.
25649         * config/ia64/unwind-ia64.c: Likewise.
25650         * config/linux.h: Likewise.
25651         * config/m32c/m32c-lib1.S: Likewise.
25652         * config/m32c/m32c-lib2-trapv.c: Likewise.
25653         * config/m32c/m32c-lib2.c: Likewise.
25654         * config/m32r/initfini.c: Likewise.
25655         * config/m68hc11/larith.asm: Likewise.
25656         * config/m68hc11/m68hc11-crt0.S: Likewise.
25657         * config/m68k/cf.md: Likewise.
25658         * config/m68k/crti.s: Likewise.
25659         * config/m68k/crtn.s: Likewise.
25660         * config/m68k/lb1sf68.asm: Likewise.
25661         * config/m68k/linux-unwind.h: Likewise.
25662         * config/mcore/crti.asm: Likewise.
25663         * config/mcore/crtn.asm: Likewise.
25664         * config/mcore/lib1.asm: Likewise.
25665         * config/mips/linux-unwind.h: Likewise.
25666         * config/mips/loongson.h: Likewise.
25667         * config/mips/mips16.S: Likewise.
25668         * config/mmix/crti.asm: Likewise.
25669         * config/mmix/crtn.asm: Likewise.
25670         * config/pa/fptr.c: Likewise.
25671         * config/pa/hpux-unwind.h: Likewise.
25672         * config/pa/lib2funcs.asm: Likewise.
25673         * config/pa/linux-atomic.c: Likewise.
25674         * config/pa/linux-unwind.h: Likewise.
25675         * config/pa/milli64.S: Likewise.
25676         * config/pa/quadlib.c: Likewise.
25677         * config/pa/stublib.c: Likewise.
25678         * config/picochip/libgccExtras/adddi3.asm: Likewise.
25679         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
25680         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
25681         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
25682         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
25683         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
25684         * config/picochip/libgccExtras/divmod15.asm: Likewise.
25685         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
25686         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
25687         * config/picochip/libgccExtras/longjmp.asm: Likewise.
25688         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
25689         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
25690         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
25691         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
25692         * config/picochip/libgccExtras/setjmp.asm: Likewise.
25693         * config/picochip/libgccExtras/subdi3.asm: Likewise.
25694         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
25695         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
25696         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
25697         * config/rs6000/750cl.h: Likewise.
25698         * config/rs6000/altivec.h: Likewise.
25699         * config/rs6000/biarch64.h: Likewise.
25700         * config/rs6000/crtresfpr.asm: Likewise.
25701         * config/rs6000/crtresgpr.asm: Likewise.
25702         * config/rs6000/crtresxfpr.asm: Likewise.
25703         * config/rs6000/crtresxgpr.asm: Likewise.
25704         * config/rs6000/crtsavfpr.asm: Likewise.
25705         * config/rs6000/crtsavgpr.asm: Likewise.
25706         * config/rs6000/darwin-asm.h: Likewise.
25707         * config/rs6000/darwin-fallback.c: Likewise.
25708         * config/rs6000/darwin-fpsave.asm: Likewise.
25709         * config/rs6000/darwin-ldouble.c: Likewise.
25710         * config/rs6000/darwin-tramp.asm: Likewise.
25711         * config/rs6000/darwin-unwind.h: Likewise.
25712         * config/rs6000/darwin-vecsave.asm: Likewise.
25713         * config/rs6000/darwin-world.asm: Likewise.
25714         * config/rs6000/e500crtres32gpr.asm: Likewise.
25715         * config/rs6000/e500crtres64gpr.asm: Likewise.
25716         * config/rs6000/e500crtres64gprctr.asm: Likewise.
25717         * config/rs6000/e500crtrest32gpr.asm: Likewise.
25718         * config/rs6000/e500crtrest64gpr.asm: Likewise.
25719         * config/rs6000/e500crtresx32gpr.asm: Likewise.
25720         * config/rs6000/e500crtresx64gpr.asm: Likewise.
25721         * config/rs6000/e500crtsav32gpr.asm: Likewise.
25722         * config/rs6000/e500crtsav64gpr.asm: Likewise.
25723         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
25724         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
25725         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
25726         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
25727         * config/rs6000/eabi-ci.asm: Likewise.
25728         * config/rs6000/eabi-cn.asm: Likewise.
25729         * config/rs6000/eabi.asm: Likewise.
25730         * config/rs6000/linux-unwind.h: Likewise.
25731         * config/rs6000/linux64.h: Likewise.
25732         * config/rs6000/paired.h: Likewise.
25733         * config/rs6000/paired.md: Likewise.
25734         * config/rs6000/ppc64-fp.c: Likewise.
25735         * config/rs6000/ppu_intrinsics.h: Likewise.
25736         * config/rs6000/rs6000.h: Likewise.
25737         * config/rs6000/si2vmx.h: Likewise.
25738         * config/rs6000/sol-ci.asm: Likewise.
25739         * config/rs6000/sol-cn.asm: Likewise.
25740         * config/rs6000/spe.h: Likewise.
25741         * config/rs6000/spu2vmx.h: Likewise.
25742         * config/rs6000/sysv4.h: Likewise.
25743         * config/rs6000/tramp.asm: Likewise.
25744         * config/rs6000/vec_types.h: Likewise.
25745         * config/s390/linux-unwind.h: Likewise.
25746         * config/s390/tpf-unwind.h: Likewise.
25747         * config/score/crti.asm: Likewise.
25748         * config/score/crtn.asm: Likewise.
25749         * config/sh/crt1.asm: Likewise.
25750         * config/sh/crti.asm: Likewise.
25751         * config/sh/crtn.asm: Likewise.
25752         * config/sh/divtab-sh4-300.c: Likewise.
25753         * config/sh/divtab-sh4.c: Likewise.
25754         * config/sh/divtab.c: Likewise.
25755         * config/sh/lib1funcs-4-300.asm: Likewise.
25756         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
25757         * config/sh/lib1funcs.asm: Likewise.
25758         * config/sh/lib1funcs.h: Likewise.
25759         * config/sh/linux-atomic.asm: Likewise.
25760         * config/sh/linux-unwind.h: Likewise.
25761         * config/sh/shmedia.h: Likewise.
25762         * config/sh/sshmedia.h: Likewise.
25763         * config/sh/ushmedia.h: Likewise.
25764         * config/sparc/crtfastmath.c: Likewise.
25765         * config/sparc/linux-unwind.h: Likewise.
25766         * config/sparc/sol2-c1.asm: Likewise.
25767         * config/sparc/sol2-ci.asm: Likewise.
25768         * config/sparc/sol2-cn.asm: Likewise.
25769         * config/spu/divmodti4.c: Likewise.
25770         * config/spu/divv2df3.c: Likewise.
25771         * config/spu/float_disf.c: Likewise.
25772         * config/spu/float_unsdidf.c: Likewise.
25773         * config/spu/float_unsdisf.c: Likewise.
25774         * config/spu/float_unssidf.c: Likewise.
25775         * config/spu/mfc_multi_tag_release.c: Likewise.
25776         * config/spu/mfc_multi_tag_reserve.c: Likewise.
25777         * config/spu/mfc_tag_release.c: Likewise.
25778         * config/spu/mfc_tag_reserve.c: Likewise.
25779         * config/spu/mfc_tag_table.c: Likewise.
25780         * config/spu/multi3.c: Likewise.
25781         * config/spu/spu_internals.h: Likewise.
25782         * config/spu/spu_intrinsics.h: Likewise.
25783         * config/spu/spu_mfcio.h: Likewise.
25784         * config/spu/vec_types.h: Likewise.
25785         * config/spu/vmx2spu.h: Likewise.
25786         * config/stormy16/stormy16-lib2.c: Likewise.
25787         * config/svr4.h: Likewise.
25788         * config/sync.c: Likewise.
25789         * config/v850/lib1funcs.asm: Likewise.
25790         * config/vxlib-tls.c: Likewise.
25791         * config/vxlib.c: Likewise.
25792         * config/vxworks-dummy.h: Likewise.
25793         * config/xtensa/crti.asm: Likewise.
25794         * config/xtensa/crtn.asm: Likewise.
25795         * config/xtensa/ieee754-df.S: Likewise.
25796         * config/xtensa/ieee754-sf.S: Likewise.
25797         * config/xtensa/lib1funcs.asm: Likewise.
25798         * config/xtensa/lib2funcs.S: Likewise.
25799         * config/xtensa/linux-unwind.h: Likewise.
25800         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
25801         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
25802         * coretypes.h: Likewise.
25803         * crtstuff.c: Likewise.
25804         * defaults.h: Likewise.
25805         * dwarf2.h: Likewise.
25806         * emutls.c: Likewise.
25807         * gbl-ctors.h: Likewise.
25808         * gcov-io.h: Likewise.
25809         * ginclude/float.h: Likewise.
25810         * ginclude/iso646.h: Likewise.
25811         * ginclude/stdarg.h: Likewise.
25812         * ginclude/stdbool.h: Likewise.
25813         * ginclude/stddef.h: Likewise.
25814         * ginclude/stdfix.h: Likewise.
25815         * ginclude/stdint-gcc.h: Likewise.
25816         * ginclude/tgmath.h: Likewise.
25817         * gthr-aix.h: Likewise.
25818         * gthr-dce.h: Likewise.
25819         * gthr-gnat.c: Likewise.
25820         * gthr-gnat.h: Likewise.
25821         * gthr-lynx.h: Likewise.
25822         * gthr-mipssde.h: Likewise.
25823         * gthr-nks.h: Likewise.
25824         * gthr-posix.c: Likewise.
25825         * gthr-posix.h: Likewise.
25826         * gthr-posix95.h: Likewise.
25827         * gthr-rtems.h: Likewise.
25828         * gthr-single.h: Likewise.
25829         * gthr-solaris.h: Likewise.
25830         * gthr-tpf.h: Likewise.
25831         * gthr-vxworks.h: Likewise.
25832         * gthr-win32.h: Likewise.
25833         * gthr.h: Likewise.
25834         * libgcc2.c: Likewise.
25835         * libgcc2.h: Likewise.
25836         * libgcov.c: Likewise.
25837         * tsystem.h: Likewise.
25838         * typeclass.h: Likewise.
25839         * unwind-c.c: Likewise.
25840         * unwind-compat.h: Likewise.
25841         * unwind-dw2-fde-compat.c: Likewise.
25842         * unwind-dw2-fde-darwin.c: Likewise.
25843         * unwind-dw2-fde-glibc.c: Likewise.
25844         * unwind-dw2-fde.c: Likewise.
25845         * unwind-dw2-fde.h: Likewise.
25846         * unwind-dw2.c: Likewise.
25847         * unwind-dw2.h: Likewise.
25848         * unwind-generic.h: Likewise.
25849         * unwind-pe.h: Likewise.
25850         * unwind-sjlj.c: Likewise.
25851         * unwind.inc: Likewise.
25852         * config/arm/neon-gen.ml: Change generated copyright header to
25853         refer to version 3 of the GNU General Public License with
25854         version 3.1 of the GCC Runtime Library Exception and to point
25855         readers at the COPYING3 and COPYING3.RUNTIME files and the
25856         FSF's license web page.
25857         * config/arm/arm_neon.h: Regenerate.
25858
25859 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
25860
25861         * config/cris/cris.md: Change copyright header to refer to version
25862         3 of the GNU General Public License.
25863         * doc/install.texi2html: Change copyright header to refer to version
25864         3 of the GNU General Public License and to point readers at the
25865         COPYING3 file and the FSF's license web page.
25866         * config/vax/linux.h: Likewise.
25867
25868 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25869
25870         * config/i386/i386.md (cmpcc): New.
25871         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
25872         (sync_compare_and_swap_cc*): Delete.
25873
25874         * config/s390/s390.c (s390_compare_emitted): Remove.
25875         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
25876         s390_compare_emitted used to be handled.  Assert that modes match.
25877         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
25878         refer to sync_compare_and_swap_ccsi.
25879         * config/s390/s390.h (s390_compare_emitted): Remove.
25880         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
25881         instead of s390_compare_emitted.
25882         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
25883         instead of s390_compare_emitted.
25884         * config/s390/s390.md (cmpcc): New.
25885         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
25886         CC_REGNUM, do not pretend it's set.
25887         (sync_compare_and_swap_cc*): Delete.
25888         * config/s390/predicates.md (cc_reg_operand): New.
25889
25890         * expr.c (sync_compare_and_swap_cc): Delete.
25891         * optabs.h (sync_compare_and_swap_cc): Delete.
25892         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
25893         is being used with can_compare_p.
25894         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
25895         (find_cc_set): New.
25896         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
25897         look for a MODE_CC set instead.  Use emit_store_flag.
25898         (expand_compare_and_swap_loop): Likewise, with some additional
25899         complication to avoid a force_reg when useless.  Use
25900         emit_cmp_and_jump_insns.
25901         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
25902         * doc/md.texi (sync_compare_and_swap_cc): Merge with
25903         sync_compare_and_swap documentation.
25904
25905 2009-04-09  Jan Hubicka  <jh@suse.cz>
25906
25907         * except.c (find_prev_try): Break out from ....
25908         (duplicate_eh_regions): ... here; properly update prev_try pointers
25909         when duplication part of tree.
25910         (dump_eh_tree): Improve dumping.
25911         (verify_eh_region): New.
25912         (verify_eh_tree): Use it.
25913
25914 2009-04-06  Richard Guenther  <rguenther@suse.de>
25915
25916         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
25917         &ARRAY addresses by adjusting their types and prepending
25918         a conversion.
25919         * tree-cfg.c (verify_gimple_assign_single): Verify that
25920         addresses are correct.
25921
25922 2009-04-09  Richard Guenther  <rguenther@suse.de>
25923
25924         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
25925         indices into an array reference if possible.
25926         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
25927         Fold POINTER_PLUS_EXPR statements with invariant address.
25928
25929 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
25930
25931         PR target/39634
25932         * config.gcc (powerpc64-*-linux*): Always build biarch.
25933
25934 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
25935
25936         PR c/39613
25937         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
25938         it and pedwarn if this results in an INTEGER_CST.
25939
25940 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25941
25942         * doc/install.texi: Update minimum GMP version.  Remove obsolete
25943         text in MPFR section.
25944
25945 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
25946
25947         * dwarf2out.c (class_scope_p): New static inline.
25948         (class_or_namespace_scope_p): Use it.
25949         (gen_variable_die): Use DW_TAG_member tag for static data member
25950         declarations instead of DW_TAG_variable.
25951
25952         PR middle-end/39573
25953         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
25954         variables.
25955
25956 2009-04-08  Richard Guenther  <rguenther@suse.de>
25957
25958         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
25959         valueize random data.
25960
25961 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
25962
25963         * config.gcc (aix tm_file):  Add aix-stdint.h.
25964         (aix tm clause use_gcc_stdint):  Set to wrap.
25965         * config/rs6000/aix-stdint.h:  New file.
25966
25967 2009-04-08  Richard Guenther  <rguenther@suse.de>
25968
25969         PR middle-end/36291
25970         * tree-dfa.c (add_referenced_var): Do not recurse into
25971         global initializers.
25972         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
25973         exposed variables.
25974         (fold_const_aggregate_ref): Likewise.
25975
25976 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
25977
25978         * recog.c (ordered_comparison_operator): New.
25979         * gensupport.c (std_preds): Add it.
25980         * doc/md.texi (Machine-Independent Predicates): Document it.
25981
25982 2009-04-08  Jan Hubicka  <jh@suse.cz>
25983
25984         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
25985         * function.h (rtl_eh): Remove exception_handler_label_map.
25986         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
25987         remove_exception_handler_label, for_each_eh_label_1): Remove.
25988         (rtl_remove_unreachable_regions): Remove.
25989         (convert_from_eh_region_ranges): Do not remove unreachable regions.
25990         (find_exception_handler_labels): Don't build the hashtable.
25991         (maybe_remove_eh_handler): Remove.
25992         (for_each_eh_label): Rewrite to walk the tree.
25993         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
25994         * except.h (maybe_remove_eh_handler): Remove.
25995         * passes.c (init_optimization_passes): Schedule second EH cleanup
25996         before out-of-ssa.
25997         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
25998         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
25999
26000 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26001
26002         * genoutput.c (validate_optab_operands): New.
26003         (gen_insn, gen_expand): Call it.
26004
26005         * genflags.c (gen_insn): Detect misused iterators.
26006         (main): Pass line_no to gen_insn, exit with status 1 on error.
26007
26008         * genextract.c (line_no): Make global.
26009         (VEC_safe_set_locstr): Change assertion to error message.
26010         (main): Exit with status 1 on error.
26011
26012 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
26013
26014         PR c/39614
26015         PR c/39673
26016         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
26017         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
26018         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
26019         * c-convert.c (convert): Do not call fold on results of conversion
26020         functions when the result is a C_MAYBE_CONST_EXPR.
26021         * c-parser.c (c_parser_postfix_expression): Do not fold condition
26022         of __builtin_choose_expr.
26023         * c-typeck.c (remove_c_maybe_const_expr): New.
26024         (build_unary_op, build_conditional_expr, build_compound_expr,
26025         build_binary_op, c_objc_common_truthvalue_conversion): Call
26026         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
26027         integer operands.
26028
26029 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
26030
26031         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
26032         CODE to produce a new one. Add a prototype to use fold_convert_const
26033
26034 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
26035
26036         PR bootstrap/39660
26037         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
26038         mix declarations and code.
26039
26040 2009-04-08  Ben Elliston  <bje@au.ibm.com>
26041
26042         * gcc.c: Replace `CC' with `GCC' throughout.
26043
26044 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
26045
26046         * doc/invoke.texi: Document Atom support.
26047
26048 2009-04-07  Jason Merrill  <jason@redhat.com>
26049
26050         PR c++/25185
26051         * c-common.h, c-common.c: Add flag_pretty_templates.
26052         * c-opts.c (c_common_handle_option): Set it.
26053         * c.opt: Add -fno-pretty-templates.
26054         * doc/invoke.texi (C++ Dialect Options): Likewise.
26055
26056 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
26057
26058         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
26059         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
26060         (ia64_expand_builtin): Likewise.
26061
26062 2009-04-07  Martin Jambor  <mjambor@suse.cz>
26063
26064         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
26065         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
26066         ADDR_EXPRS are include too.
26067
26068 2009-04-07  Richard Guenther  <rguenther@suse.de>
26069
26070         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
26071         decls are only used if passes as parameters or if they are
26072         local statics and the call is not to a builtin.
26073         (call_may_clobber_ref_p_1): Likewise.
26074
26075 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26076
26077         * expr.c (do_store_flag): Remove last argument.  Simplify code
26078         to avoid duplication of tests already done by can_compare_p.
26079         (expand_expr_real_1): Adjust caller.
26080
26081 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26082
26083         * optabs.c (can_compare_p): Test the predicate of a
26084         cbranch and cstore pattern.
26085
26086 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26087
26088         * expr.c (convert_move): Use emit_store_flag instead of
26089         "emulating" it.
26090
26091 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26092
26093         * config/i386/i386.c (ix86_compare_emitted): Remove.
26094         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
26095         ix86_compare_op0 like ix86_compare_emitted used to be handled.
26096         * config/i386/i386.h (ix86_compare_emitted): Remove.
26097         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
26098         instead of ix86_compare_emitted.
26099         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
26100
26101 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
26102
26103         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
26104         Add t-sysroot-suffix to tmake_file.
26105         * config/print-sysroot-suffix.sh: New file.
26106         * config/t-sysroot-suffix: New file.
26107
26108 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26109
26110         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
26111         as the latter produces a warning when the target does not support
26112         infinity.
26113
26114 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26115
26116         * dfp.c: Replace type punning assignments with memcpy throughout.
26117         * Makefile.in (dfp.o-warn): Remove.
26118
26119 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
26120
26121         PR target/39634
26122         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
26123         Include soft-fp/t-softfp after rs6000/t-linux64.
26124
26125 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
26126
26127         * stor-layout.c (set_sizetype): Use the full precision of their
26128         machine mode for bitsize types.
26129
26130 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
26131
26132         * config/i386/i386.md: Revert 2 accidental checkins.
26133
26134 2009-04-06  Joey Ye  <joey.ye@intel.com>
26135             Xuepeng Guo  <xuepeng.guo@intel.com>
26136             H.J. Lu  <hongjiu.lu@intel.com>
26137
26138         Atom pipeline model, tuning and insn selection.
26139         * config.gcc (atom): Add atom config options and target.
26140
26141         * config/i386/atom.md: New.
26142
26143         * config/i386/i386.c (atom_cost): New cost.
26144         (m_ATOM): New macro flag.
26145         (initial_ix86_tune_features): Set m_ATOM.
26146         (x86_accumulate_outgoing_args): Likewise.
26147         (x86_arch_always_fancy_math_387): Likewise.
26148         (processor_target): Add Atom cost.
26149         (cpu_names): Add Atom cpu name.
26150         (override_options): Set Atom ISA.
26151         (ix86_issue_rate): New case PROCESSOR_ATOM.
26152         (ix86_adjust_cost): Likewise.
26153
26154         * config/i386/i386.h (TARGET_ATOM): New target macro.
26155         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
26156         (TARGET_OPT_AGU): New target option.
26157         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
26158         (processor_type): Add PROCESSOR_ATOM.
26159
26160         * config/i386/i386.md (cpu): Add new value "atom".
26161         (use_carry, movu): New attr.
26162         (atom.md): Include atom.md.
26163         (adddi3_carry_rex64): Set attr "use_carry".
26164         (addqi3_carry): Likewise.
26165         (addhi3_carry): Likewise.
26166         (addsi3_carry): Likewise.
26167         (*addsi3_carry_zext): Likewise.
26168         (subdi3_carry_rex64): Likewise.
26169         (subqi3_carry): Likewise.
26170         (subhi3_carry): Likewise.
26171         (subsi3_carry): Likewise.
26172         (x86_movdicc_0_m1_rex64): Likewise.
26173         (*x86_movdicc_0_m1_se): Likewise.
26174         (x86_movsicc_0_m1): Likewise.
26175         (*x86_movsicc_0_m1_se): Likewise.
26176         (*adddi_1_rex64): Emit add insn as much as possible.
26177         (*addsi_1): Likewise.
26178         (return_internal): Set atom_unit.
26179         (return_internal_long): Likewise.
26180         (return_pop_internal): Likewise.
26181         (*rcpsf2_sse): Set atom_sse_attr attr.
26182         (*qrt<mode>2_sse): Likewise.
26183         (*prefetch_sse): Likewise.
26184
26185         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26186         PROCESSOR_ATOM.
26187         (ix86_target_macros_internal): Likewise.
26188
26189         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26190         (*prefetch_sse_rex): Likewise.
26191         (sse_rcpv4sf2): Likewise.
26192         (sse_vmrcpv4sf2): Likewise.
26193         (sse_sqrtv4sf2): Likewise.
26194         (<sse>_vmsqrt<mode>2): Likewise.
26195         (sse_ldmxcsr): Likewise.
26196         (sse_stmxcsr): Likewise.
26197         (*sse_sfence): Likewise.
26198         (sse2_clflush): Likewise.
26199         (*sse2_mfence): Likewise.
26200         (*sse2_lfence): Likewise.
26201         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26202         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26203         (avx_movdqu<avxmodesuffix>): Likewise.
26204         (avx_lddqu<avxmodesuffix>): Likewise.
26205         (sse2_movntv2di): Change attr "type" to "ssemov".
26206         (sse2_movntsi): Likewise.
26207         (rsqrtv8sf2): Change attr "type" to "sseadd".
26208         (sse3_addsubv2df3): Set attr "atom_unit".
26209         (sse3_h<plusminus_insn>v4sf3): Likewise.
26210         (*sse2_pmaddwd): Likewise.
26211         (*vec_extractv2di_1_rex64): Likewise.
26212         (*vec_extractv2di_1_avx): Likewise.
26213         (sse2_psadbw): Likewise.
26214         (ssse3_phaddwv8hi3): Likewise.
26215         (ssse3_phaddwv4hi3): Likewise.
26216         (ssse3_phadddv4si3): Likewise.
26217         (ssse3_phadddv2si3): Likewise.
26218         (ssse3_phaddswv8hi3): Likewise.
26219         (ssse3_phaddswv4hi3): Likewise.
26220         (ssse3_phsubwv8hi3): Likewise.
26221         (ssse3_phsubwv4hi3): Likewise.
26222         (ssse3_phsubdv4si3): Likewise.
26223         (ssse3_phsubdv2si3): Likewise.
26224         (ssse3_phsubswv8hi3): Likewise.
26225         (ssse3_phsubswv4hi3): Likewise.
26226         (ssse3_pmaddubsw128): Likewise.
26227         (sse3_pmaddubsw: Likewise.
26228         (ssse3_palignrti): Likewise.
26229         (ssse3_palignrdi): Likewise.
26230
26231 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26232
26233         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26234
26235 2009-04-06  Richard Guenther  <rguenther@suse.de>
26236
26237         PR tree-optimization/28868
26238         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26239         of which PHI results we inserted.
26240         (insert_into_preds_of_block): Record inserted PHIs.
26241         (eliminate): Eliminate redundant PHI nodes.
26242         (init_pre): Init inserted_phi_names.
26243
26244 2009-04-06  Richard Guenther  <rguenther@suse.de>
26245
26246         PR tree-optimization/39643
26247         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26248         IMAGPART_EXPRs of complex constants.
26249         (execute_fold_all_builtins): If we folded a call queue
26250         TODO_update_address_taken.
26251
26252 2009-04-06  Jan Hubicka  <jh@suse.cz>
26253
26254         PR middle-end/39659
26255         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26256         flag.
26257
26258 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26259
26260         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26261         delay slot.
26262         (ic_invalidate_array): Likewise.
26263
26264 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26265
26266         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26267         alignment for library calls.
26268
26269 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26270
26271         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26272         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26273         * config/i386/mingw-stdint.h:  New file.
26274
26275 2009-04-05  Richard Guenther  <rguenther@suse.de>
26276
26277         PR tree-optimization/39648
26278         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26279         our &A vs. &A[0] IL deficiencies.
26280
26281 2009-04-04  Jan Hubicka  <jh@suse.cz>
26282
26283         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26284         removed toplevel regions.
26285         (sjlj_mark_call_sites): Likewise.
26286
26287 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26288
26289         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26290         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26291         * config/i386/cygwin-stdint.h:  New file.
26292
26293 2009-04-04  Richard Guenther  <rguenther@suse.de>
26294
26295         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26296         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26297         single-argument PHIs if we are in loop-closed SSA form.
26298         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26299         for the pre-condition.
26300         (slpeel_tree_peel_loop_to_edge): Likewise.
26301         (vect_build_loop_niters): Take an optional sequence to append stmts.
26302         (vect_generate_tmps_on_preheader): Likewise.
26303         (vect_do_peeling_for_loop_bound): Take extra guards for the
26304         pre-condition.
26305         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26306         the cost model check.
26307         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26308         guards if we are going to peel.  Do not apply versioning in that case.
26309         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26310         (vect_do_peeling_for_loop_bound): Likewise.
26311         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26312         loop bound only record extra pre-conditions, do not apply loop
26313         versioning.
26314
26315 2009-04-04  Richard Guenther  <rguenther@suse.de>
26316
26317         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26318         renaming code.
26319
26320 2009-04-04  Jan Hubicka  <jh@suse.cz>
26321
26322         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26323         last_basic_block for size of bb->index indexed array.
26324         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26325         compute_out, link_btr_uses, build_btr_def_use_webs,
26326         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26327
26328 2009-04-04  Jan Hubicka  <jh@suse.cz>
26329
26330         * except.c (remove_eh_handler_and_replace): Break out from ...
26331         (remove_eh_handler): ... here.
26332         (bring_to_root): New function.
26333         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26334         handled ones, bring others to root of tree.
26335
26336 2009-04-04  Jan Hubicka  <jh@suse.cz>
26337
26338         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26339         (all_phis_safe_to_merge): New function.
26340         (update_info): New structure.
26341         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26342         (cleanup_empty_eh): Update SSA if possible.
26343
26344 2009-04-04  Richard Guenther  <rguenther@suse.de>
26345
26346         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26347         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26348         (append_vuse): Likewise.
26349
26350 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26351
26352         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26353         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26354         instead of REG_UNSAVED for DW_CFA_undefined.
26355         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26356         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26357         outermost frame.
26358
26359 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26360
26361         PR target/39501
26362         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26363
26364 2009-04-04  Richard Guenther  <rguenther@suse.de>
26365
26366         PR tree-optimization/8781
26367         PR tree-optimization/37892
26368         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26369         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26370         (valueize_refs): Call it for *& valueizations.
26371         (shared_reference_ops_from_ref): Rename to ...
26372         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26373         (shared_reference_ops_from_call): Rename to ...
26374         (valueize_shared_reference_ops_from_call): ... this and valueize.
26375         (vn_reference_lookup): Update.
26376         (visit_reference_op_call): Likewise.
26377         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26378         (eliminate): Value-replace the call address in call statements.
26379
26380 2009-04-04  Richard Guenther  <rguenther@suse.de>
26381
26382         PR tree-optimization/39636
26383         * tree-ssa-forwprop.c
26384         (forward_propagate_addr_into_variable_array_index): Check for
26385         GIMPLE_ASSIGN before accessing the rhs code.
26386
26387 2009-04-03  Jason Merrill  <jason@redhat.com>
26388
26389         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26390
26391 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26392
26393         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26394         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26395         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26396         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26397         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26398         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26399         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26400         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26401         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26402         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26403         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26404         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26405         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26406         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26407         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26408         Use fr_reg_or_fp01_operand instead of fr_register_operand
26409
26410         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26411         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26412         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26413
26414 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26415
26416         PR rtl-optimization/39607
26417         PR rtl-optimization/39631
26418
26419         Revert:
26420
26421         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26422         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26423         instead of DF_LR_OUT.
26424         * ira-lives.c (process_bb_node_lives): Ditto.
26425         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26426         instead of DF_LR_{OUT,IN}.
26427         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26428         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26429
26430 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26431
26432         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26433         (execute_lower_omp): Always run but take the short way out if -fopenmp
26434         is not given.
26435         (gate_lower_omp): Remove, forcing the pass manager to always run the
26436         pass and always set PROP_gimple_lomp.
26437         (pass_lower_omp): Remove gate function.
26438         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26439         PROP_trees.  Instead, require it.
26440         * ipa-cp.c (pass_ipa_cp): Likewise.
26441         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26442         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26443         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26444         and PROP_gimple_leh.
26445
26446 2009-04-03  Richard Guenther  <rguenther@suse.de>
26447
26448         PR middle-end/13146
26449         PR tree-optimization/23940
26450         PR tree-optimization/33237
26451         PR middle-end/33974
26452         PR middle-end/34093
26453         PR tree-optimization/36201
26454         PR tree-optimization/36230
26455         PR tree-optimization/38049
26456         PR tree-optimization/38207
26457         PR tree-optimization/38230
26458         PR tree-optimization/38301
26459         PR tree-optimization/38585
26460         PR middle-end/38895
26461         PR tree-optimization/38985
26462         PR tree-optimization/39299
26463         * tree-ssa-structalias.h: Remove.
26464         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26465         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26466         (struct vuse_element_d): Remove.
26467         (struct vuse_vec_d): Likewise.
26468         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26469         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26470         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26471         VUSE_ELEMENT_VAR): Likewise.
26472         (struct voptype_d): Likewise.
26473         (NUM_VOP_FREE_BUCKETS): Likewise.
26474         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26475         (struct stmt_operands_d): Remove.
26476         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26477         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26478         VDEF_NUM, VDEF_VECT): Likewise.
26479         (copy_virtual_operands): Remove.
26480         (operand_build_cmp): Likewise.
26481         (create_ssa_artificial_load_stmt): Likewise.
26482         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26483         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26484         vuse_index and mayuse_index members.  Pack and move done and iter_type
26485         members to the front.
26486         (SSA_OP_VMAYUSE): Remove.
26487         (SSA_OP_VIRTUAL_USES): Adjust.
26488         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26489         (unlink_stmt_vdef): Declare.
26490         (add_to_addressable_set): Remove.
26491         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26492         (vrp_visit_stmt): Likewise.
26493         * doc/tree-ssa.texi (Alias analysis): Update.
26494         * doc/invoke.texi (max-aliased-vops): Remove docs.
26495         (avg-aliased-vops): Likewise.
26496         * tree-into-ssa.c (syms_to_rename): Remove.
26497         (need_to_update_vops_p): Likewise.
26498         (need_to_initialize_update_ssa_p): Rename to ...
26499         (update_ssa_initialized_fn): ... this.  Track function we are
26500         initialized for.
26501         (symbol_marked_for_renaming): Simplify.
26502         (add_new_name_mapping): Do not set need_to_update_vops_p.
26503         (dump_currdefs): Use SYMS_TO_RENAME.
26504         (rewrite_update_stmt): Always walk all uses/defs.
26505         (dump_update_ssa): Adjust.
26506         (init_update_ssa): Take function argument.  Track what we are
26507         initialized for.
26508         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26509         (create_new_def_for): Initialize for cfun, assert we are initialized
26510         for cfun.
26511         (mark_sym_for_renaming): Simplify.
26512         (mark_set_for_renaming): Do not initialize update-ssa.
26513         (need_ssa_update_p): Simplify.  Take function argument.
26514         (name_mappings_registered_p): Assert we ask for the correct function.
26515         (name_registered_for_update_p): Likewise.
26516         (ssa_names_to_replace): Likewise.
26517         (release_ssa_name_after_update_ssa): Likewise.
26518         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26519         (dump_decl_set): Do not print a newline.
26520         (debug_decl_set): Do it here.
26521         (dump_update_ssa): And here.
26522         * tree-ssa-loop-im.c (move_computations): Adjust.
26523         (movement_possibility): Likewise.
26524         (determine_max_movement): Likewise.
26525         (gather_mem_refs_stmt): Likewise.
26526         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26527         or NAME_MEMORY_TAG.
26528         * tree-complex.c (update_all_vops): Remove.
26529         (expand_complex_move): Adjust.
26530         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26531         Simplify test for memory referencing statement.  Exclude
26532         non-invariant ADDR_EXPRs.
26533         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26534         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26535         (rdg_flag_uses): Likewise.
26536         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26537         related code.
26538         (tree_optimize_tail_calls_1): Also split the
26539         edge from the entry block if we have degenerate PHI nodes in
26540         the first basic block.
26541         * tree.c (init_ttree): Remove memory-tag related code.
26542         (tree_code_size): Likewise.
26543         (tree_node_structure): Likewise.
26544         (build7_stat): Re-write to be build6_stat.
26545         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26546         (SSA_VAR_P): Adjust.
26547         (struct tree_memory_tag): Remove.
26548         (struct tree_memory_partition_tag): Likewise.
26549         (union tree_node): Adjust.
26550         (build7): Re-write to be build6.
26551         * tree-pass.h (pass_reset_cc_flags): Remove.
26552         (TODO_update_address_taken): New flag.
26553         (pass_simple_dse): Remove.
26554         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26555         * params.h (MAX_ALIASED_VOPS): Remove.
26556         (AVG_ALIASED_VOPS): Likewise.
26557         * omp-low.c (expand_omp_taskreg): Update SSA form.
26558         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26559         aliases the lhs in a copy stmt.
26560         * tree-ssa-dse.c (struct address_walk_data): Remove.
26561         (memory_ssa_name_same): Likewise.
26562         (memory_address_same): Likewise.
26563         (get_kill_of_stmt_lhs): Likewise.
26564         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26565         unused stores.  Look through PHI nodes into post-dominated regions.
26566         (dse_optimize_stmt): Simplify.  Properly remove stores.
26567         (tree_ssa_dse): Compute dominators.
26568         (execute_simple_dse): Remove.
26569         (pass_simple_dse): Likewise.
26570         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26571         gimple_loaded_syms and gimple_stored_syms computation.
26572         * toplev.c (dump_memory_report): Dump alias and pta stats.
26573         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26574         (vn_reference_eq): Likewise.
26575         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26576         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26577         valueize_vuses): Remove.
26578         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26579         (get_def_ref_stmt_vuse): ... this.
26580         (vn_reference_lookup_2): New function.
26581         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26582         walking equivalent vuses.  Simplify.
26583         (vn_reference_lookup): Likewise.
26584         (vn_reference_insert): Likewise.
26585         (vn_reference_insert_pieces): Likewise.
26586         (visit_reference_op_call): Simplify.
26587         (visit_reference_op_load): Likewise.
26588         (visit_reference_op_store): Likewise.
26589         (init_scc_vn): Remove shared_lookup_vuses initialization.
26590         (free_scc_vn): Remove shared_lookup_vuses freeing.
26591         (sort_vuses, sort_vuses_heap): Remove.
26592         (get_ref_from_reference_ops): Export.
26593         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26594         vector with single vuse pointer.
26595         (vn_reference_lookup_pieces, vn_reference_lookup,
26596         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26597         (shared_vuses_from_stmt): Remove.
26598         (get_ref_from_reference_ops): Declare.
26599         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26600         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26601         memory-tag related code.
26602         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26603         (likely_value): Add comment, skip static-chain of call statements.
26604         (surely_varying_stmt_p): Adjust.
26605         (gimplify_and_update_call_from_tree): Likewise.
26606         (execute_fold_all_builtins): Do not rebuild alias info.
26607         (gimplify_and_update_call_from_tree): Properly update VOPs.
26608         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26609         (copy_ref_info): Remove memory-tag related code.
26610         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26611         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26612         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26613         computation.
26614         * tree-ssa-dom.c (gimple_p): Remove typedef.
26615         (eliminate_redundant_computations): Adjust.
26616         (record_equivalences_from_stmt): Likewise.
26617         (avail_expr_hash): Likewise.
26618         (avail_expr_eq): Likewise.
26619         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
26620         (stmt_makes_single_load): Likewise.
26621         (stmt_makes_single_store): Likewise.
26622         * tree-ssa-alias.c: Rewrite completely.
26623         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
26624         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
26625         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
26626         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
26627         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
26628         Remove public functions.
26629         (pass_reset_cc_flags): Remove.
26630         (pass_build_alias): Move ...
26631         * tree-ssa-structalias.c (pass_build_alias): ... here.
26632         * tree-ssa-alias.c (may_be_aliased): Move ...
26633         * tree-flow-inline.h (may_be_aliased): ... here.
26634         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
26635         count_uses_and_derefs): Move ...
26636         * gimple.c: ... here.
26637         * gimple.h (count_uses_and_derefs): Declare.
26638         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
26639         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
26640         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
26641         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
26642         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
26643         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
26644         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
26645         New functions.
26646         * tree-dfa.c (refs_may_alias_p): Move ...
26647         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
26648         * tree-ssa-alias.h: New file.
26649         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
26650         (statement_sink_location): Likewise.
26651         * opts.c (decode_options): Do not adjust max-aliased-vops or
26652         avg-aliased-vops values.
26653         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
26654         (TV_CALL_CLOBBER): Likewise.
26655         (TV_FLOW_SENSITIVE): Likewise.
26656         (TV_FLOW_INSENSITIVE): Likewise.
26657         (TV_MEMORY_PARTITIONING): Likewise.
26658         (TV_ALIAS_STMT_WALK): New timevar.
26659         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
26660         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
26661         (get_address_description): Remove memory-tag related code.
26662         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
26663         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
26664         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
26665         and immediate uses in statements.  Document.
26666         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
26667         (dump_symbols): Remove.
26668         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
26669         * alias.c (get_deref_alias_set): New function split out from ...
26670         (get_alias_set): ... here.
26671         * alias.h (get_deref_alias_set): Declare.
26672         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
26673         type parameter.  Remove restrict pointer handling.  Create a
26674         ref-all pointer in case type-based alias sets do not conflict.
26675         (vect_analyze_data_refs): Remove SMT related code.
26676         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
26677         (vectorizable_load): Likewise.
26678         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
26679         (DR_SYMBOL_TAG, DR_VOPS): Remove.
26680         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
26681         Ignore vops and SMTs.
26682         (dr_analyze_alias): Likewise..
26683         (free_data_ref): Likewise.
26684         (create_data_ref): Likewise.
26685         (analyze_all_data_dependences): Likewise.
26686         (get_references_in_stmt): Adjust.
26687         * tree-flow-inline.h (gimple_aliases_computed_p,
26688         gimple_addressable_vars, gimple_call_clobbered_vars,
26689         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
26690         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
26691         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
26692         gimple_mem_ref_stats): Remove.
26693         (gimple_vop): New function.
26694         (op_iter_next_use): Remove vuses and mayuses cases.
26695         (op_iter_next_def): Remove vdefs case.
26696         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
26697         (clear_and_done_ssa_iter): Do not set removed fields.
26698         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
26699         Assert we are not iterating over vuses or vdefs if not also
26700         iterating over uses or defs.
26701         (op_iter_init_use): Likewise.
26702         (op_iter_init_def): Likewise.
26703         (op_iter_next_vdef): Remove.
26704         (op_iter_next_mustdef): Likewise.
26705         (op_iter_init_vdef): Likewise.
26706         (compare_ssa_operands_equal): Likewise.
26707         (link_use_stmts_after): Handle vuse operand.
26708         (is_call_used): Use is_call_clobbered.
26709         (is_call_clobbered): Global variables are always call clobbered,
26710         query the call-clobbers bitmap.
26711         (mark_call_clobbered): Ignore global variables.
26712         (clear_call_clobbered): Likewise.
26713         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
26714         virtual operands sanity check.
26715         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
26716         Remove.
26717         (TARGET_MEM_REF): Remove TMR_TAG operand.
26718         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
26719         Remove call-clobber related code.
26720         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
26721         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
26722         partitions or escape reason.
26723         (get_single_def_stmt, get_single_def_stmt_from_phi,
26724         get_single_def_stmt_with_phi): Remove.
26725         (dump_referenced_vars): Tidy.
26726         (get_ref_base_and_extent): Allow bare decls.
26727         (collect_dfa_stats): Adjust.
26728         * graphite.c (rename_variables_in_stmt): Adjust.
26729         (graphite_copy_stmts_from_block): Likewise.
26730         (translate_clast): Likewise.
26731         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
26732         (EXPR_DIES): New.
26733         (translate_vuse_through_block): Use the oracle.
26734         (phi_translate_1): Adjust.
26735         (value_dies_in_block_x): Use the oracle.  Cache the outcome
26736         in EXPR_DIES.
26737         (valid_in_sets): Check if the VUSE for
26738         a REFERENCE is available.
26739         (eliminate): Do not remove stmts during elimination,
26740         instead queue and remove them afterwards.
26741         (do_pre): Do not rebuild alias info.
26742         (pass_pre): Run TODO_rebuild_alias before PRE.
26743         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
26744         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
26745         (mark_all_v_defs_stmt): Remove.
26746         (mark_all_v_defs_seq): Adjust.
26747         (sra_replace): Likewise.
26748         (scalarize_use): Likewise.
26749         (scalarize_copy): Likewise.
26750         (scalarize_init): Likewise.
26751         (scalarize_ldst): Likewise.
26752         (todoflags): Remove.
26753         (tree_sra): Do not rebuild alias info.
26754         (tree_sra_early): Adjust.
26755         (pass_sra): Run TODO_update_address_taken before SRA.
26756         * tree-predcom.c (set_alias_info): Remove.
26757         (prepare_initializers_chain): Do not call it.
26758         (mark_virtual_ops_for_renaming): Adjust.
26759         (mark_virtual_ops_for_renaming_list): Remove.
26760         (initialize_root_vars): Adjust.
26761         (initialize_root_vars_lm): Likewise.
26762         (prepare_initializers_chain): Likewise.
26763         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
26764         (may_propagate_copy_into_stmt): Likewise.
26765         (merge_alias_info): Do nothing for now.
26766         (propagate_tree_value_into_stmt): Adjust.
26767         (stmt_may_generate_copy): Likewise.
26768         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
26769         not mark symbols for renaming.
26770         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
26771         with the same statement, make sure to update the new pointed-to one.
26772         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
26773         call statements, do not mark symbols for renaming.
26774         (mark_operand_necessary): Dump something.
26775         (ref_may_be_aliased): New function.
26776         (mark_aliased_reaching_defs_necessary_1): New helper function.
26777         (mark_aliased_reaching_defs_necessary): Likewise.
26778         (mark_all_reaching_defs_necessary_1): Likewise.
26779         (mark_all_reaching_defs_necessary): Likewise.
26780         (propagate_necessity): Do not process virtual PHIs.  For
26781         non-aliased loads mark all reaching definitions as necessary.
26782         For aliased loads and stores mark the immediate dominating
26783         aliased clobbers as necessary.
26784         (visited): New global static.
26785         (perform_tree_ssa_dce): Free visited bitmap after propagating
26786         necessity.
26787         (remove_dead_phis): Perform simple dead virtual PHI removal.
26788         (remove_dead_stmt): Properly unlink virtual operands when
26789         removing stores.
26790         (eliminate_unnecessary_stmts): Schedule PHI removal after
26791         stmt removal.
26792         * tree-ssa-ter.c (is_replaceable_p): Adjust.
26793         (process_replaceable): Likewise.
26794         (find_replaceable_in_bb): Likewise.
26795         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
26796         based on the single gimple vop.
26797         (verify_flow_insensitive_alias_info): Remove.
26798         (verify_flow_sensitive_alias_info): Likewise.
26799         (verify_call_clobbering): Likewise.
26800         (verify_memory_partitions): Likewise.
26801         (verify_alias_info): Likewise.
26802         (verify_ssa): Adjust..
26803         (execute_update_addresses_taken): Export.  Update SSA
26804         manually.  Optimize only when optimizing.  Use a local bitmap.
26805         (pass_update_address_taken): Remove TODO_update_ssa, add
26806         TODO_dump_func.
26807         (pass_update_address_taken): Just use TODO_update_address_taken.
26808         (init_tree_ssa): Do not initialize addressable_vars.
26809         (verify_ssa): Verify new VUSE / VDEF properties.
26810         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
26811         Do not call verify_alias_info.
26812         (delete_tree_ssa): Clear the VUSE, VDEF operands.
26813         Do not free the loaded and stored syms bitmaps.  Reset the escaped
26814         and callused solutions.  Do not free addressable_vars.
26815         Remove memory-tag related code.
26816         (warn_uninitialized_var): Aliases are always available.
26817         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
26818         * lambda-code.c (can_put_in_inner_loop): Adjust.
26819         (can_put_after_inner_loop): Likewise.
26820         (perfect_nestify): Likewise.
26821         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
26822         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
26823         (vectorizable_conversion): Do not mark symbols for renaming.
26824         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
26825         (expand_call_inline): Unlink the calls virtual operands before
26826         replacing it.
26827         (tree_function_versioning): Do not call update_ssa if we are not
26828         updating clones.  Simplify.
26829         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
26830         (propagate_with_phi): Likewise..
26831         * tree-outof-ssa.c (create_temp): Remove memory tag and call
26832         clobber code.  Assert we are not aliased or global.
26833         * tree-flow.h: Include tree-ssa-alias.h
26834         (enum escape_type): Remove.
26835         (struct mem_sym_stats_d): Likewise.
26836         (struct mem_ref_stats_d): Likewise.
26837         (struct gimple_df): Add vop member.  Remove global_var,
26838         call_clobbered_vars, call_used_vars, addressable_vars,
26839         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
26840         escaped and callused members.
26841         (struct ptr_info_def): Remove all members, add points-to solution
26842         member pt.
26843         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
26844         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
26845         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
26846         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
26847         (tree-ssa-alias.o): Likewise.
26848         (toplev.o): Add tree-ssa-alias.h
26849         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
26850         * gimple.c (gimple_set_bb): Fix off-by-one error.
26851         (is_gimple_reg): Do not handle memory tags.
26852         (gimple_copy): Also copy virtual operands.
26853         Delay updating the statement.  Do not reset loaded and stored syms.
26854         (gimple_set_stored_syms): Remove.
26855         (gimple_set_loaded_syms): Likewise.
26856         (gimple_call_copy_skip_args): Copy the virtual operands
26857         and mark the new statement modified.
26858         * tree-ssa-structalias.c (may_alias_p): Remove.
26859         (set_uids_in_ptset): Take the alias set to prune with as
26860         parameter.  Fold in the alias test of may_alias_p.
26861         (compute_points_to_sets): Compute whether a ptr is dereferenced
26862         in a local sbitmap.
26863         (process_constraint): Deal with &ANYTHING on the lhs, reject all
26864         other ADDRESSOF constraints on the lhs.
26865         (get_constraint_for_component_ref): Assert that we don't get
26866         ADDRESSOF constraints from the base of the reference.
26867         Properly generate UNKNOWN_OFFSET for DEREF if needed.
26868         (struct variable_info): Remove collapsed_to member.
26869         (get_varinfo_fc): Remove.
26870         (new_var_info): Do not set collapsed_to.
26871         (dump_constraint): Do not follow cycles.
26872         (dump_constraint_graph): Likewise.
26873         (build_pred_graph): Likewise.
26874         (build_succ_graph): Likewise.
26875         (rewrite_constraints): Likewise.
26876         (do_simple_structure_copy): Remove.
26877         (do_rhs_deref_structure_copy): Remove.
26878         (do_lhs_deref_structure_copy): Remove.
26879         (collapse_rest_of_var): Remove.
26880         (do_structure_copy): Re-implement.
26881         (pta_stats): New global variable.
26882         (dump_pta_stats): New function.
26883         (struct constraint_expr): Make offset signed.
26884         (UNKNOWN_OFFSET): Define special value.
26885         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
26886         (solution_set_expand): New helper function split out from ...
26887         (do_sd_constraint): ... here.
26888         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
26889         (do_ds_constraint): Likewise.
26890         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
26891         and CALLUSED = *CALLUSED.
26892         (set_union_with_increment): Make inc argument signed.
26893         (type_safe): Remove.
26894         (get_constraint_for_ptr_offset): Handle unknown and negative
26895         constant offsets.
26896         (first_vi_for_offset): Handle offsets before start.  Bail
26897         out early for offsets beyond the variable extent.
26898         (first_or_preceding_vi_for_offset): New function.
26899         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
26900         Together with ESCAPED = *ESCAPED this properly computes reachability.
26901         (find_what_var_points_to): New function.
26902         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
26903         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
26904         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
26905         pt_solutions_intersect): New functions.
26906         (compute_call_used_vars): Remove.
26907         (compute_may_aliases): New main entry into PTA computation.
26908         * gimple.h (gimple_p): New typedef.
26909         (struct gimple_statement_base): Remove references_memory_p.
26910         (struct gimple_statement_with_memory_ops_base): Remove
26911         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
26912         members.
26913         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
26914         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
26915         gimple_set_references_memory): Remove.
26916         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
26917         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
26918         New functions.
26919         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
26920         (verify_expr): Allow RESULT_DECL.
26921         (gimple_duplicate_bb): Do not copy virtual operands.
26922         (gimple_duplicate_sese_region): Adjust.
26923         (gimple_duplicate_sese_tail): Likewise.
26924         (mark_virtual_ops_in_region): Remove.
26925         (move_sese_region_to_fn): Do not call it.
26926         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
26927         and pass_simple_dse.
26928         (execute_function_todo): Handle TODO_update_address_taken,
26929         call execute_update_addresses_taken for TODO_rebuild_alias.
26930         (execute_todo): Adjust.
26931         (execute_one_pass): Init dump files early.
26932         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
26933         call-clobbered.
26934         (create_general_new_stmt): Clear vops.
26935         * tree-ssa-reassoc.c (get_rank): Adjust.
26936         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
26937         symbols for renaming.
26938         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
26939         (PARAM_AVG_ALIASED_VOPS): Likewise.
26940         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
26941         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
26942         * tree-ssa-operands.c: Simplify for new virtual operand representation.
26943         (operand_build_cmp, copy_virtual_operands,
26944         create_ssa_artificial_load_stmt, add_to_addressable_set,
26945         gimple_add_to_addresses_taken): Remove public functions.
26946         (unlink_stmt_vdef): New function.
26947
26948 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
26949
26950         * config.gcc (powerpc-*-linux*): Merge variants.
26951
26952 2009-04-02  Chao-ying Fu  <fu@mips.com>
26953             James Grosbach  <james.grosbach@microchip.com>
26954
26955         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
26956         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
26957         cop0_sp_offset.
26958         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
26959         keep_interrupts_masked_p, use_debug_exception_return_p.
26960         (mips_attribute_table): Add interrupt, use_shadow_register_set,
26961         keep_interrupts_masked, use_debug_exception_return.
26962         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
26963         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
26964         New functions.
26965         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
26966         (mips_print_operand): Process COP0 registers to print $0 .. $31
26967         correctly for GAS to process.
26968         (mips_interrupt_extra_call_saved_reg_p): New function.
26969         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
26970         extra registers.
26971         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
26972         (mips_compute_frame_info): Add supports for interrupt context that
26973         includes doubleword accumulators and COP0 registers.
26974         (mips_for_each_saved_acc): New function.
26975         (mips_for_each_saved_gpr_and_fpr): Change the function name from
26976         mips_for_each_saved_reg.
26977         (mips_save_reg): Save accumulators.
26978         (mips_kernel_reg_p): A new for_each_rtx callback.
26979         (mips_expand_prologue): Support interrupt handlers.
26980         (mips_restore_reg): Restore accumulators.
26981         (mips_expand_epilogue): Support interrupt handlers.
26982         (mips_can_use_return_insn): Return false for interrupt handlers.
26983         (mips_epilogue_uses): New function.
26984         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
26985         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
26986         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
26987         cop0_move): New instructions.
26988         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
26989         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
26990         defines.
26991         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
26992         New defines.
26993         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
26994         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
26995         interrupt handlers, we use K0 as the temporary register.
26996         (EPILOGUE_USES): Change to a function call.
26997         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
26998         handlers, we use K0 as the temporary register.
26999
27000         * doc/extend.texi (Function Attributes): Document interrupt,
27001         use_shadow_register_set, keep_interrupts_masked,
27002         use_debug_exception_return for MIPS attributes.
27003
27004 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27005
27006         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
27007         Remove a number of t-files from tmake_file.
27008         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
27009         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
27010         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
27011         target_prototype, not TARGET_PROTOTYPE.
27012         (LINK_OS_GNU_SPEC): Define.
27013         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
27014         and darwin-ldoubdle.c.
27015
27016 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
27017
27018         PR driver/39293
27019         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
27020         (cpp_options): Ditto.
27021         (default_compilers): Ditto.
27022         (display_help): Ditto.
27023         (process_command): Ditto.
27024         (do_spec_1): Ditto.
27025         (set_input): Use lbasename instead of duplicate code.
27026         (save_temps_prefix): New static for -save-temps=obj.
27027         (save_temps_length): Ditto.
27028
27029         * doc/invoke.texi (-save-temps=obj): Document new variant to
27030         -save-temps switch.
27031
27032 2009-04-02  Jeff Law  <law@redhat.com>
27033
27034         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
27035         variable.
27036
27037 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27038
27039         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
27040         * configure: Regenerated.
27041
27042 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27043
27044         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
27045         share the argument list.
27046
27047 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27048
27049         Merge
27050
27051         2009-02-12  Diego Novillo  <dnovillo@google.com>
27052
27053         * varpool.c (debug_varpool): New.
27054         * cgraph.h (debug_varpool): Declare.
27055
27056 2009-04-02  Jan Hubicka  <jh@suse.cz>
27057
27058         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
27059         pass.
27060
27061 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27062
27063         * config/i386/i386.c (ix86_abi): Move initialization to ...
27064         (override_options): Here.
27065
27066 2009-04-02  Christian Bruel  <christian.bruel@st.com>
27067
27068         * config/sh/sh.c (sh_dwarf_register_span): New function.
27069         (TARGET_DWARF_REGISTER_SPAN): Define.
27070         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
27071
27072 2009-04-02  Ira Rosen  <irar@il.ibm.com>
27073
27074         PR tree-optimization/39595
27075         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
27076         interleaved loads group is not  greater than the SLP group size.
27077
27078 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27079
27080         * builtins.c (is_builtin_name): New.
27081         (called_as_built_in): Use is_builtin_name.
27082         * tree.h (is_builtin_name): New.
27083         * varasm.c (incorporeal_function_p): Use is_builtin_name
27084
27085 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
27086
27087         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
27088
27089 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
27090
27091         PR c++/26693
27092         * c-decl.c (clone_underlying_type): Move this ...
27093         * c-common.c (set_underlying_type): ... here.
27094         Also, make sure the function properly sets TYPE_STUB_DECL() on
27095         the newly created typedef variant type.
27096         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
27097         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
27098         points.
27099
27100 2009-04-02  Richard Guenther  <rguenther@suse.de>
27101
27102         PR tree-optimization/37221
27103         * tree-flow.h (degenerate_phi_result): Declare.
27104         * tree-ssa-dom.c (degenerate_phi_result): Export.
27105         * tree-scalar-evolution.c (analyze_initial_condition): If
27106         the initial condition is defined by a degenerate PHI node
27107         use the degenerate value.
27108
27109 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
27110
27111         PR rtl-optimization/39588
27112         * combine.c (merge_outer_ops): Do not set the constant when this
27113         is not necessary.
27114         (simplify_shift_const_1): Do not modify it either in this case.
27115
27116 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
27117
27118         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
27119         tuning is deprecated if -mtune value is set to an Itanium1 variant.
27120
27121 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
27122
27123         PR c/29027
27124         * c-lex.c (interpret_float): Default (no suffix) is double.
27125
27126 2009-04-1  Xinliang David Li  <davidxl@google.com>
27127
27128         * config/i386/i386.c (legitimate_constant_p): Recognize
27129         all one vector constant.
27130
27131 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27132
27133         * config/vax/vax.c: Add #includes to silence warnings.
27134         Change #include order to silence two warnings.
27135
27136 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27137
27138         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
27139         (ASM_SPEC): Pass -k to the assembler for PIC code.
27140
27141 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27142
27143         * config.gcc: Add vax-*-linux* to the switch.
27144         * config/vax/linux.h: New file. (TARGET_VERSION,
27145         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
27146
27147 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27148
27149         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
27150         Use predicate macros instead of GET_CODE() == foo.
27151         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
27152         ashlsi3, rotrsi3, <unnamed>): Likewise.
27153
27154 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27155
27156         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
27157         jbbccihi, jbbccisi): Remova trailing whitespace.
27158         * config/vax/constraints.md: Likewise.
27159         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
27160         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
27161         * config/vax/predicates.md: Likewise.
27162         * config/vax/vax.c (print_operand_address, vax_output_int_move,
27163         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
27164         * config/vax/vax.h: Likewise.
27165         * config/vax/vax.md (nonlocal_goto): Likewise.
27166
27167 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27168
27169         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
27170         (indirectable_address_p, adjacent_operands_p): Add spaces around
27171         braces.
27172         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
27173
27174 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27175
27176         * config/vax/vax.c (legitimate_constant_address_p,
27177         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
27178         index_term_p, reg_plus_index_p, legitimate_address_p,
27179         vax_mode_dependent_address_p): Update comments to match functions
27180         modified by the recent int->bool conversion.
27181
27182 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27183
27184         * config/vax/builtins.md: Update copyright message.
27185         * config/vax/constraints.md: Likewise.
27186         * config/vax/netbsd-elf.h: Likewise.
27187         * config/vax/predicates.md: Likewise.
27188         * config/vax/vax-protos.h: Likewise.
27189         * config/vax/vax.c: Likewise.
27190         * config/vax/vax.h: Likewise.
27191         * config/vax/vax.md: Likewise.
27192         * config/vax/vax.opt: Likewise.
27193
27194 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27195
27196         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27197         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27198         * config/vax/constraints.md (B, R): Likewise.
27199         * config/vax/predicates.md (external_memory_operand,
27200         nonimmediate_addsub_di_operand): Likewise.
27201         * config/vax/vax.c (vax_output_int_add): Likewise.
27202         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27203         untyped_call): Likewise.
27204
27205 2009-04-01  Matt Thomas  <matt@3am-software.com>
27206
27207         * config/vax/predicates.md: New file.
27208         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27209         external_const_operand, nonsymbolic_operand, external_memory_operand,
27210         indirect_memory_operand, indexed_memory_operand,
27211         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27212         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27213         predicate.
27214         * config/vax/constraints.md: New file.
27215         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27216         New constraint.
27217         * config/vax/builtins.md: New file.
27218         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27219         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27220         jbbccisi): Define.
27221         * config/vax/vax.opt (mqmath): Add option.
27222         * config/vax/vax.md (isfx): Extend with DI.
27223         (VAXintQH, VAXintQHSD): Define.
27224         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27225         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27226         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27227         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27228         (movdi): Update constraints and use vax_output_int_move().
27229         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27230         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27231         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27232         nonlocal_goto): New.
27233         (mov<mode>): Extend accepted operand types.
27234         (subdi3_old): Rename from subdi3, change update constraints and use
27235         a new implementation.
27236         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27237         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27238         MOVE_RATIO, CLEAR_RATIO): Define.
27239         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27240         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27241         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27242         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27243         (split_quadword_operands): Make static and really allow variable
27244         splitting.
27245         (print_operand_address): Update for PIC generation.
27246         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27247         indexable_address_p, fixup_mathdi_operand,
27248         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27249         (vax_float_literal, legitimate_constant_p,
27250         indirectable_constant_address_p, index_term_p,
27251         reg_plus_index_p): Return bool instead of int.
27252         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27253         where needed.
27254         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27255         generation.
27256         (vax_output_conditional_branch): Indent.
27257         (legitimate_constant_address_p, indirectable_constant_address_p,
27258         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27259         vax_mode_dependent_address_p): Return bool instead of int, update for
27260         PIC generation.
27261         * config/vax/vax-protos.h (legitimate_constant_address_p,
27262         legitimate_constant_p, legitimate_address_p,
27263         vax_mode_dependent_address_p): Change declaration to bool.
27264         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27265         vax_expand_addsub_di_operands, vax_output_int_subtract,
27266         vax_output_movmemsi): Declare.
27267         (split_quadword_operands, vax_float_literal): Delete declaration.
27268         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27269         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27270         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27271         ASM_OUTPUT_DWARF_PCREL): Define.
27272         (ASM_SPEC): Change definition to allow PIC generation.
27273
27274 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27275
27276         * doc/sourcebuild.texi: Update front-end requirements.
27277
27278 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27279
27280         PR target/39226
27281         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27282         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27283         (booldi3_internal3): Use boolean_or_operator instead of
27284         boolean_operator.
27285
27286 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27287
27288         PR c/39605
27289         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27290         declarator whose size is not an integer constant expression but
27291         folds to an integer constant, then treat it as a constant
27292         subsequently.
27293
27294 2009-04-01  Richard Guenther  <rguenther@suse.de>
27295
27296         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27297         i * 4 + 2 to (i * 2 + 1) * 2.
27298
27299 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27300
27301         PR c/37772
27302         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27303         return if c_parser_asm_string_literal returned NULL.
27304
27305 2009-04-01  Nick Clifton  <nickc@redhat.com>
27306
27307         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27308         already defined.
27309         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27310         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27311         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27312         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27313         include it.
27314         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27315         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27316         then include it.
27317
27318 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27319
27320         * varasm.c (default_function_rodata_section): Declare DOT as
27321         const char*.
27322
27323 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27324             Andrey Galkin  <agalkin@hypercom.com>
27325
27326         PR/39492
27327         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27328         Make object_name unique for each process.
27329
27330 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27331
27332         PR other/39591
27333         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27334         addressable variables in the parallel that could go out of scope while
27335         running queued tasks.
27336
27337 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27338
27339         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27340         (CASE_VALUES_THRESHOLD): Redefine.
27341         * config/avr/avr.c (avr_override_options): Remove initialization of
27342         avr_case_values_threshold variable.
27343         (avr_case_values_threshold): Remove variable. Add new function.
27344         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27345         * config/avr/avr.opt (mno-tablejump): Remove option.
27346         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27347
27348 2009-04-01  DJ Delorie  <dj@redhat.com>
27349
27350         * varasm.c (default_function_rodata_section): Don't assume
27351         anything about where the first '.' in the section name is.
27352
27353 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27354
27355         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27356         rs6000_emit_stack_tie.
27357
27358 2009-03-31  Ian Lance Taylor  <iant@google.com>
27359
27360         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27361         gimple_code with GIMPLE_RESX, not RESX.
27362
27363 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27364
27365         * c-common.c (c_get_ident): New.
27366         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27367
27368 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27369
27370         * config/rs6000/sysv4.opt (msdata): Improve option description.
27371
27372 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27373
27374         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27375         (divdf3_internal_lat): Remove.
27376         (divxf3_internal_lat): Remove.
27377         (divxf3_internal_thr): Remove.
27378         (divxf): Use divxf3_internal.
27379         * config/ia64/div.md (divsf3_internal_lat): New.
27380         (divdf3_internal_lat): New.
27381         (divxf3_internal): New.
27382
27383 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27384
27385         PR c/448
27386         * Makefile.in (USE_GCC_STDINT): Define.
27387         (stmp-int-hdrs): Install stdint.h if applicable.
27388         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27389         if known.
27390         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27391         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27392         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27393         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27394         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27395         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27396         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27397         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27398         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27399         (c_common_nodes_and_builtins): Initialize
27400         underlying_wchar_type_node.  Do not initialize
27401         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27402         nodes for new types.
27403         (c_stddef_cpp_builtins): Define macros for new types.
27404         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27405         Remove.
27406         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27407         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27408         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27409         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27410         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27411         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27412         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27413         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27414         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27415         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27416         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27417         int16_type_node, int32_type_node, int64_type_node,
27418         uint8_type_node, uint16_type_node, c_uint32_type_node,
27419         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27420         int_least32_type_node, int_least64_type_node,
27421         uint_least8_type_node, uint_least16_type_node,
27422         uint_least32_type_node, uint_least64_type_node,
27423         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27424         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27425         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27426         uintptr_type_node): Define.
27427         * c-cppbuiltin.c (builtin_define_constants,
27428         builtin_define_type_minmax): New.
27429         (builtin_define_stdint_macros): Define more macros.
27430         (c_cpp_builtins): Define more limit macros.
27431         (type_suffix): New.
27432         (builtin_define_type_max): Define in terms of
27433         builtin_define_type_minmax.  Remove is_long parameter.  All
27434         callers changed.
27435         * config.gcc (use_gcc_stdint): Define.
27436         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27437         Add newlib-stdint.h for generic targets.
27438         * config/glibc-stdint.h, config/newlib-stdint.h,
27439         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27440         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27441         * config/score/score.h (UINTPTR_TYPE): Define.
27442         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27443         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27444         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27445         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27446         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27447         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27448         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27449         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27450         * config/spu/spu.h (STDINT_LONG32): Define.
27451         * configure.ac (use_gcc_stdint): Substitute.
27452         * configure: Regenerate.
27453         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27454         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27455         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27456         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27457         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27458         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27459         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27460         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27461         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27462         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27463         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27464         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27465         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27466         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27467         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27468         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27469         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27470         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27471         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27472         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27473         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27474         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27475         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27476         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27477         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27478         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27479         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27480         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27481         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27482
27483 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27484
27485         * loop-iv.c (suitable_set_for_replacement): Renamed from
27486         simplify_using_assignment; changed to return bool and to accept new
27487         args DEST and SRC.  Return true iff we find a source/destination pair
27488         that can be used to make a replacement, and fill SRC and DEST if so.
27489         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27490         changed.
27491         (simplify_using_initial_values): Deal with altered regs here and track
27492         more precisely the effect they have on the validity of our expression.
27493
27494         * loop-iv.c (simplify_using_condition): A condition of the form
27495         (EQ REG CONST) can be used to simply make a substitution.
27496         (simplify_using_initial_values): Keep track of conditions we have seen
27497         and keep using them to simplify new expressions, while applying the
27498         same substitutions to them as to the expression.
27499
27500         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27501         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27502         GEU/LTU reversed.
27503
27504         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27505         changed.  Use this when trying to improve the upper bound.
27506         Generate the comparison by using simplify_gen_relational.
27507
27508         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27509
27510         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27511         functions.
27512         (simplify_using_assignment, simplify_using_initial_values): Call
27513         replace_in_expr to make replacements.  Call replace_single_def_regs
27514         once on the initial version of the expression.
27515
27516 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27517
27518         PR target/27237
27519         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27520
27521 2009-03-31  Richard Guenther  <rguenther@suse.de>
27522
27523         PR middle-end/31029
27524         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27525         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27526
27527 2009-03-31  Richard Guenther  <rguenther@suse.de>
27528
27529         * tree.h (div_if_zero_remainder): Declare.
27530         * fold-const.c (div_if_zero_remainder): Export.
27531         * tree-ssa-forwprop.c
27532         (forward_propagate_addr_into_variable_array_index): Handle
27533         constant array index addition outside of the variable index.
27534
27535 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27536
27537         PR target/39592
27538         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27539         define_splits, floatunssi<mode>2): Require x87 conversions from
27540         DImode to be permitted.
27541
27542 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27543
27544         PR preprocessor/15638
27545         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27546
27547 2009-03-31  Richard Guenther  <rguenther@suse.de>
27548
27549         PR middle-end/23401
27550         PR middle-end/27810
27551         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27552         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27553         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27554         a separate statement.
27555         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27556         (lookup_tmp_var): Likewise.
27557         (is_gimple_formal_tmp_or_call_rhs): Remove.
27558         (is_gimple_reg_or_call_rhs): Rename to ...
27559         (is_gimple_reg_rhs_or_call): ... this.
27560         (is_gimple_mem_or_call_rhs): Rename to ...
27561         (is_gimple_mem_rhs_or_call): ... this.
27562         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27563         DECL_GIMPLE_REG_P only if is_formal is true.
27564         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27565         for non-proper post-modify expression gimplification.
27566         (gimplify_self_mod_expr): For post-modify expressions gimplify
27567         the lvalue to a minimal lvalue.
27568         (rhs_predicate_for): Remove formal temp case.
27569         (gimplify_modify_expr_rhs): Likewise.
27570         (gimplify_addr_expr): Use is_gimple_reg.
27571         (gimplify_expr): Remove formal temp cases.
27572         (gimple_regimplify_operands): Likewise.
27573         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27574         and FILTER_EXPR like constants.
27575         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27576         is_gimple_reg.
27577         (is_gimple_formal_tmp_rhs): Remove.
27578         (is_gimple_reg_rhs): Remove special casing.
27579         (is_gimple_mem_rhs): Fix.
27580         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27581         (is_gimple_formal_tmp_var): Remove.
27582         (is_gimple_formal_tmp_reg): Likewise.
27583         (is_gimple_min_lval): Allow invariant component ref parts.
27584         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27585         is_gimple_formal_tmp_reg): Remove declarations.
27586         * tree-cfg.c (verify_expr): Verify that variables with address
27587         taken do not have DECL_GIMPLE_REG_P set.
27588         * tree-mudflap.c (mf_build_check_statement_for): Use
27589         force_gimple_operand instead of gimplify_expr.
27590
27591 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27592
27593         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27594         schedulable rows to compute_split_row.
27595
27596 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27597
27598         PR target/31635
27599         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27600         OPT_mvrsave.
27601
27602 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27603
27604         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27605         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27606         * configure: Regenerate.
27607         * config.in: Regenerate.
27608         * config/rs6000/rs6000.opt (mtls-markers): Add.
27609         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27610         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27611         (tls_ld_aix, tls_ld_sysv): Likewise.
27612         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27613         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
27614
27615 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27616
27617         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
27618
27619 2009-03-30  Jan Hubicka  <jh@suse.cz>
27620
27621         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
27622         out of RESX.
27623         (tree_remove_unreachable_handlers): Cleanup EH predecestor
27624         detection and label handling.
27625
27626 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27627
27628         * ira-int.h (ira_allocno): Rename left_conflicts_num to
27629         left_conflicts_size.
27630         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
27631         ALLOCNO_LEFT_CONFLICTS_SIZE.
27632
27633         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
27634         remove_allocno_from_bucket_and_push,
27635         allocno_spill_priority_compare, push_allocnos_to_stack,
27636         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27637         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
27638         (setup_allocno_left_conflicts_num): Ditto.  Rename to
27639         setup_allocno_left_conflicts_size.
27640         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
27641         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
27642         setup_allocno_left_conflicts_size instead of
27643         setup_allocno_left_conflicts_num.
27644
27645         * ira-build.c (ira_create_allocno): Use
27646         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
27647         ALLOCNO_LEFT_CONFLICTS_NUM.
27648
27649 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
27650
27651         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
27652         instead of DF_LR_OUT.
27653
27654         * ira-lives.c (process_bb_node_lives): Ditto.
27655
27656         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
27657         instead of DF_LR_{OUT,IN}.
27658
27659         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
27660
27661         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
27662
27663 2009-03-30  Jan Hubicka  <jh@suse.cz>
27664
27665         * except.c (label_to_region_map): Fix thinko.
27666
27667 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
27668
27669         PR middle-end/38237
27670         * tree.h (tree_find_value): New declaration.
27671         * tree.c (tree_find_value): New function.
27672         * varasm.c (assemble_external): Avoid duplicate entries on lists.
27673
27674 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
27675
27676         PR debug/39563
27677         * c-decl.c (struct c_binding): Add locus field.
27678         (bind): Add locus argument, set locus field from it.
27679         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
27680         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
27681         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
27682         implicitly_declare, undeclared_variable, lookup_label,
27683         declare_label, c_make_fname_decl, c_builtin_function,
27684         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
27685         bind callers.
27686
27687 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
27688
27689         PR target/38781
27690         * config/i386/i386.c (classify_argument): Check total size of
27691         structure.
27692
27693 2009-03-30  Martin Jambor  <mjambor@suse.cz>
27694
27695         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
27696         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
27697         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
27698         respectively.
27699
27700         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
27701         seen_variable_array_ref while also traversing a union.
27702
27703         * tree-inline.c (optimize_inline_calls): Do not call
27704         cgraph_node_remove_callees.
27705         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
27706         (pass_remove_cgraph_callee_edges): New variable.
27707         * passes.c (init_optimization_passes): Add
27708         pass_remove_cgraph_callee_edges after early inlining and before all
27709         late intraprocedural passes.
27710
27711         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
27712
27713 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27714
27715         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
27716         Fix typos in names.
27717
27718 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27719
27720         * combine.c (simplify_comparison): Use have_insn_for.
27721         * dojump.c (do_jump): Likewise.
27722
27723 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27724
27725         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
27726         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
27727         sparc_compare_op0 like sparc_compare_emitted used to be handled.
27728         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
27729         instead of sparc_compare_emitted.
27730         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
27731         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
27732         instead of sparc_compare_emitted.
27733
27734 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27735
27736         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
27737         enter/exit cfglayout mode.
27738         (pass_partition_block): Require it.
27739         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
27740         (combine_instructions): Track basic blocks instead of labels.
27741         (update_cfg_for_uncondjump): New.
27742         (try_combine): Use it.  Update jumps after rescanning.
27743         (pass_combine): Require PROP_cfglayout.
27744         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
27745
27746 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27747
27748         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
27749         Provide/destroy PROP_cfglayout respectively.
27750         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
27751         * tree-pass.h (PROP_cfglayout): New.
27752
27753 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
27754
27755         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
27756         fold_convert_const_fixed_from_fixed,
27757         fold_convert_const_fixed_from_int,
27758         fold_convert_const_fixed_from_real, fold_negate_const): Do not
27759         set TREE_CONSTANT_OVERFLOW.
27760         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
27761         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
27762
27763 2009-03-30  Ira Rosen  <irar@il.ibm.com>
27764
27765         * tree-vect-loop-manip.c: New file.
27766         * tree-vectorizer.c: Update documentation and included files.
27767         (vect_loop_location): Make extern.
27768         (rename_use_op): Move to tree-vect-loop-manip.c
27769         (rename_variables_in_bb, rename_variables_in_loop,
27770         slpeel_update_phis_for_duplicate_loop,
27771         slpeel_update_phi_nodes_for_guard1,
27772         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
27773         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
27774         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
27775         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
27776         find_loop_location): Likewise.
27777         (new_stmt_vec_info): Move to tree-vect-stmts.c.
27778         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
27779         get_vectype_for_scalar_type, vect_is_simple_use,
27780         supportable_widening_operation, supportable_narrowing_operation):
27781         Likewise.
27782         (bb_in_loop_p): Move to tree-vect-loop.c.
27783         (new_loop_vec_info, destroy_loop_vec_info,
27784         reduction_code_for_scalar_code, report_vect_op,
27785         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
27786         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
27787         (vect_supportable_dr_alignment): Likewise.
27788         * tree-vectorizer.h (tree-data-ref.h): Include.
27789         (vect_loop_location): Declare.
27790         Reorganize function declarations according to the new file structure.
27791         * tree-vect-loop.c: New file.
27792         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
27793         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
27794         * tree-vect-data-refs.c: New file.
27795         * tree-vect-patterns.c (timevar.h): Don't include.
27796         * tree-vect-stmts.c: New file.
27797         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
27798         tree-vect-slp.c, tree-vect-loop.c.
27799         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
27800         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
27801         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
27802         (tree-vect-analyze.o): Remove.
27803         (tree-vect-transform.o): Likewise.
27804         (tree-vect-data-refs.o): Add rule.
27805         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
27806         tree-vect-slp.o): Likewise.
27807         (tree-vect-patterns.o): Remove redundant dependencies.
27808         (tree-vectorizer.o): Likewise.
27809         * tree-vect-slp.c: New file.
27810
27811 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27812
27813         * optc-gen.awk: Warn if an option flag has multiple different
27814         help strings.
27815
27816 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
27817
27818         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
27819         -floop-block): Document dependences on PPL, CLooG and Graphite.
27820
27821 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27822
27823         PR rtl-optimization/323
27824         * c-common.c (c_fully_fold, convert_and_check,
27825         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
27826         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
27827         * c-common.def (EXCESS_PRECISION_EXPR): New.
27828         * c-cppbuiltin.c (builtin_define_float_constants): Define
27829         constants with enough digits for long double.
27830         * c-lex.c (interpret_float): Interpret constant with excess
27831         precision where appropriate.
27832         * c-opts.c (c_common_post_options): Set
27833         flag_excess_precision_cmdline.  Give an error for
27834         -fexcess-precision=standard for C++ for processors where the
27835         option is significant.
27836         * c-parser.c (c_parser_conditional_expression): Handle excess
27837         precision in condition.
27838         * c-typeck.c (convert_arguments): Handle arguments with excess
27839         precision.
27840         (build_unary_op): Move excess precision outside operation.
27841         (build_conditional_expr): Likewise.
27842         (build_compound_expr): Likewise.
27843         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
27844         (build_modify_expr): Handle excess precision in RHS.
27845         (convert_for_assignment): Handle excess precision in converted
27846         value.
27847         (digest_init, output_init_element, process_init_element): Handle
27848         excess precision in initializer.
27849         (c_finish_return): Handle excess precision in return value.
27850         (build_binary_op): Handle excess precision in operands and add
27851         excess precision as needed for operation.
27852         * common.opt (-fexcess-precision=): New option.
27853         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
27854         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
27855         For standard excess precision, output explicit conversion to and
27856         truncation from XFmode.
27857         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
27858         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
27859         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
27860         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
27861         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
27862         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
27863         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
27864         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
27865         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
27866         define_splits, sqrt<mode>2): Disable where appropriate for
27867         standard excess precision.
27868         * convert.c (convert_to_real): Do not shorten arithmetic to type
27869         for which excess precision would be used.
27870         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
27871         * doc/invoke.texi (-fexcess-precision=): Document option.
27872         (-mfpmath=): Correct index entry.
27873         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
27874         flag_excess_precision): New.
27875         * langhooks.c (lhd_post_options): Set
27876         flag_excess_precision_cmdline.
27877         * opts.c (common_handle_option): Handle -fexcess-precision=.
27878         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
27879         init_excess_precision): New.
27880         (lang_dependent_init_target): Call init_excess_precision.
27881         * tree.c (excess_precision_type): New.
27882         * tree.h (excess_precision_type): Declare.
27883
27884 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
27885
27886         PR c/35235
27887         * c-typeck.c (build_component_ref): Do not copy qualifiers from
27888         non-lvalue to component.
27889
27890 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27891
27892         PR preprocessor/34695
27893         * Makefile.in (c-opts.o): Depend on c-tree.h.
27894         * c-common.c: Move down include of diagnostic.h.
27895         (done_lexing, c_cpp_error): New.
27896         * c-common.h (done_lexing): Declare.
27897         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
27898         (parse_in).
27899         * c-opts.c: Include c-tree.h.
27900         (c_common_init_options): Set preprocessor error callback.
27901         (c_common_handle_option): Do not set preprocessor
27902         inhibit_warnings, warnings_are_errors, warn_system_headers,
27903         pedantic_errors or inhibit_warnings flags.
27904         (c_common_post_options): Do not check cpp_errors (parse_in).
27905         (c_common_finish): Do not output dependencies if there were
27906         errors.  Do not check return value of cpp_finish.
27907         * c-ppoutput.c (pp_file_change): Set input_location.
27908         * c-tree.h (c_cpp_error): Declare.
27909         * diagnostic.c (diagnostic_set_info_translated): Also initialize
27910         override_column.
27911         (diagnostic_build_prefix): Check override_column.
27912         * diagnostic.h (diagnostic_info): Add override_column field.
27913         (diagnostic_override_column): Define.
27914
27915 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
27916
27917         * c-common.c (c_expand_expr, c_staticp): Remove.
27918         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
27919         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
27920         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
27921         * c-gimplify.c (gimplify_compound_literal_expr,
27922         optimize_compound_literals_in_ctor): Remove.
27923         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
27924         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
27925         * c-semantics.c (emit_local_var): Remove.
27926
27927         * langhooks-def.h (lhd_expand_expr): Remove.
27928         * langhooks.c (lhd_expand_expr): Remove.
27929         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
27930
27931         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
27932         handling from c-semantics.c; don't call into langhook.
27933         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
27934         * gimplify.c (gimplify_compound_literal_expr,
27935         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
27936         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
27937         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
27938         as was done in c-gimplify.c.
27939         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
27940         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
27941         Move from c-common.h.
27942         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
27943
27944         * tree.c (staticp): Do not call langhook.
27945         * langhooks.c (lhd_staticp): Delete.
27946         * langhooks-def.h (lhd_staticp): Delete prototype.
27947         (LANG_HOOKS_STATICP): Delete.
27948         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
27949
27950         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
27951         instead of DECL_STMTs.
27952
27953 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
27954
27955         PR c/456
27956         PR c/5675
27957         PR c/19976
27958         PR c/29116
27959         PR c/31871
27960         PR c/35198
27961         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
27962         void_type_node.
27963         (fold_call_expr): Return a NOP_EXPR from folding rather than the
27964         contained expression.
27965         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
27966         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
27967         conditional expressions for C.
27968         (decl_constant_value_for_optimization): Move from
27969         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
27970         whether optimizing and that the expression is a VAR_DECL not of
27971         array type instead of doing such checks in the caller.  Do not
27972         check pedantic.  Call gcc_unreachable for C++.
27973         * c-common.def (C_MAYBE_CONST_EXPR): New.
27974         * c-common.h (c_fully_fold, c_save_expr,
27975         decl_constant_value_for_optimization): New prototypes.
27976         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27977         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27978         EXPR_INT_CONST_OPERANDS): Define.
27979         * c-convert.c (convert): Strip nops from expression.
27980         * c-decl.c (groktypename): Take extra parameters expr and
27981         expr_const_operands.  Update call to grokdeclarator.
27982         (start_decl): Update call to grokdeclarator.  Add statement for
27983         expressions used in type of decl.
27984         (grokparm): Update call to grokdeclarator.
27985         (push_parm_decl): Update call to grokdeclarator.
27986         (build_compound_literal): Add parameter non_const and build a
27987         C_MAYBE_COSNT_EXPR if applicable.
27988         (grokdeclarator): Take extra parameters expr and
27989         expr_const_operands.  Track expressions used in declaration
27990         specifiers and declarators.  Fold array sizes and track whether
27991         they are constant expressions and whether they are integer
27992         constant expressions.
27993         (parser_xref_tag): Set expr and expr_const_operands fields in
27994         return value.
27995         (grokfield): Update call to grokdeclarator.
27996         (start_function): Update call to grokdeclarator.
27997         (build_null_declspecs): Set expr and expr_const_operands fields in
27998         return value.
27999         (declspecs_add_type): Handle expressions in typeof specifiers.
28000         * c-parser.c (c_parser_declspecs): Set expr and
28001         expr_const_operands fields for declaration specifiers.
28002         (c_parser_enum_specifier): Likewise.
28003         (c_parser_struct_or_union_specifier): Likewise.
28004         (c_parser_typeof_specifier): Likewise.  Update call to
28005         groktypename.  Fold expression as needed.  Return expressions with
28006         type instead of adding statements.
28007         (c_parser_attributes): Update calls to c_parser_expr_list.
28008         (c_parser_statement_after_labels): Fold expression before passing
28009         to objc_build_throw_stmt.
28010         (c_parser_condition): Fold expression.
28011         (c_parser_asm_operands): Fold expression.
28012         (c_parser_conditional_expression): Use c_save_expr.  Update call
28013         to build_conditional_expr.
28014         (c_parser_alignof_expression): Update call to groktypename.
28015         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
28016         original_code.  Fold expression argument of va_arg.  Create
28017         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
28018         argument to va_arg.  Update calls to groktypename.  Fold array
28019         index for offsetof.  Verify that first argument to
28020         __builtin_choose_expr has integer type.
28021         (c_parser_postfix_expression_after_paren_type): Update calls to
28022         groktypename and build_compound_literal.  Handle expressions with
28023         side effects in type name.
28024         (c_parser_postfix_expression_after_primary): Update call to
28025         c_parser_expr_list.  Set original_code for calls to
28026         __builtin_constant_p.
28027         (c_parser_expr_list): Take extra parameter fold_p.  Fold
28028         expressions if requested.
28029         (c_parser_objc_type_name): Update call to groktypename.
28030         (c_parser_objc_synchronized_statement): Fold expression.
28031         (c_parser_objc_receiver): Fold expression.
28032         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
28033         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
28034         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
28035         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
28036         (struct c_typespec): Add elements expr and expr_const_operands.
28037         (struct c_declspecs): Add elements expr and expr_const_operands.
28038         (groktypename, build_conditional_expr, build_compound_literal):
28039         Update prototypes.
28040         (in_late_binary_op): Declare.
28041         * c-typeck.c (note_integer_operands): New function.
28042         (in_late_binary_op): New variable.
28043         (decl_constant_value_for_broken_optimization): Move to c-common.c
28044         and rename to decl_constant_value_for_optimization.
28045         (default_function_array_conversion): Do not strip nops.
28046         (default_conversion): Do not call
28047         decl_constant_value_for_broken_optimization.
28048         (build_array_ref): Do not fold result.
28049         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
28050         result when operand is a VLA.
28051         (c_expr_sizeof_type): Update call to groktypename.  Handle
28052         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
28053         result when operand names a VLA type.
28054         (build_function_call): Update call to build_compound_literal.
28055         Only fold result for calls to __builtin_* functions.  Strip
28056         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
28057         the function designator.
28058         (convert_arguments): Fold arguments.  Update call to
28059         convert_for_assignment.
28060         (build_unary_op): Handle increment and decrement of
28061         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
28062         decrement earlier.  Fold operand of increment and decrement.
28063         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
28064         built for integer operand.  Wrap returns that are INTEGER_CSTs
28065         without being integer constant expressions or that have integer
28066         constant operands without being INTEGER_CSTs.
28067         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
28068         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
28069         result is an integer constant expression or can be used in
28070         unevaluated parts of one and avoid folding and wrap as
28071         appropriate.  Fold operands before possibly doing -Wsign-compare
28072         warnings.
28073         (build_compound_expr): Wrap result for C99 if operands can be used
28074         in integer constant expressions.
28075         (build_c_cast): Update call to digest_init.  Do not ignore
28076         overflow from casting floating-point constants to integers.  Wrap
28077         results that could be confused with integer constant expressions,
28078         null pointer constants or floating-point constants.
28079         (c_cast_expr): Update call to groktypename.  Handle expressions
28080         included in type name.
28081         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
28082         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
28083         Update calls to convert_for_assignment.
28084         (convert_for_assignment): Take new parameter
28085         null_pointer_constant.  Do not strip nops or call
28086         decl_constant_value_for_broken_optimization.  Set
28087         in_late_binary_op for conversions to boolean.
28088         (store_init_value): Update call to digest_init.
28089         (digest_init): Take new parameter null_pointer_constant.  Do not
28090         call decl_constant_value_for_broken_optimization.  pedwarn for
28091         initializers not constant expressions.  Update calls to
28092         convert_for_assignment.
28093         (constructor_nonconst): New.
28094         (struct constructor_stack): Add nonconst element.
28095         (really_start_incremental_init, push_init_level, pop_init_level):
28096         Handle constructor_nonconst and nonconst element.
28097         (set_init_index): Call constant_expression_warning for array
28098         designators.
28099         (output_init_element): Fold value.  Set constructor_nonconst as
28100         applicable.  pedwarn for initializers not constant expressions.
28101         Update call to digest_init.  Call constant_expression_warning
28102         where constant initializers are required.
28103         (process_init_element): Use c_save_expr.
28104         (c_finish_goto_ptr): Fold expression.
28105         (c_finish_return): Fold return value.  Update call to
28106         convert_for_assignment.
28107         (c_start_case): Fold switch expression.
28108         (c_process_expr_stmt): Fold expression.
28109         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
28110         ensure statement expression is not evaluated in constant expression.
28111         (build_binary_op): Track whether results are integer constant
28112         expressions or may occur in such, disable folding and wrap results
28113         as applicable.  Fold operands for -Wsign-compare warnings unless
28114         in_late_binary_op.
28115         (c_objc_common_truthvalue_conversion): Handle results folded to
28116         integer constants that are not integer constant expressions.
28117         * doc/extend.texi: Document when typeof operands are evaluated,
28118         that condition of __builtin_choose_expr is an integer constant
28119         expression, and more about use of __builtin_constant_p in
28120         initializers.
28121
28122 2009-03-29  Richard Guenther  <rguenther@suse.de>
28123
28124         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
28125         propagate addresses of array references.
28126
28127 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
28128
28129         * regmove.c (perhaps_ends_bb_p): Remove.
28130         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
28131         from INSN and check that the main loop stays within that basic block.
28132         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
28133         (regmove_forward_pass): Split out from regmove_optimize.  Use
28134         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
28135         (regmove_backward_pass): Split out from regmove_optimize.  Use
28136         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
28137         (regmove_optimize): Simplify.
28138
28139 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28140
28141         PR target/39545
28142         * config/i386/i386.c (classify_argument): Ignore flexible array
28143         member in struct and warn ABI change.
28144
28145 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28146
28147         * config/i386/i386-protos.h (ix86_agi_dependent): New.
28148
28149         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
28150         (ix86_adjust_cost): Updated.
28151
28152 2009-03-29  Jan Hubicka  <jh@suse.cz>
28153
28154         PR middle-end/28850
28155         * tree-pass.h (pass_cleanup_eh): New function.
28156         (remove_unreachable_regions): Break code handling RTL
28157         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
28158         that can not be reached by runtime.
28159         (can_be_reached_by_runtime): New function.
28160         (label_to_region_map): New function.
28161         (num_eh_regions): New function.
28162         (rtl_remove_unreachable_regions): New function.
28163         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
28164         (remove_eh_region): New function.
28165         * except.h: Include sbitmap and vecprim.
28166         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
28167         num_eh_regions): Declare.
28168         * passes.c (init_optimization_passes): Schedule cleanup_eh.
28169         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
28170         * tree-eh.c (tree_remove_unreachable_handlers): New function.
28171         (tree_empty_eh_handler_p): New function.
28172         (cleanup_empty_eh): New function.
28173         (cleanup_eh): New function.
28174         (pass_cleanup_eh): New function.
28175
28176 2009-03-29  Jan Hubicka  <jh@suse.cz>
28177
28178         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
28179         for removed regions.
28180
28181 2009-03-29  Jan Hubicka  <jh@suse.cz>
28182
28183         * except.c (dump_eh_tree): Dump all datastructures.
28184
28185 2009-03-29  Jan Hubicka  <jh@suse.cz>
28186
28187         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28188         (duplicate_eh_regions_1): Likewise.
28189         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28190         vector; call EH verification.
28191         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28192         Be ready for region being removed.
28193
28194 2009-03-29  Jan Hubicka  <jh@suse.cz>
28195
28196         * bitmap.c (bitmap_last_set_bit): New function.
28197         * bitmap.h (bitmap_last_set_bit): Declare.
28198
28199 2009-03-29  David Ayers  <ayers@fsfe.org>
28200
28201         PR objc/27377
28202         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28203         by calling objc_compare_types and surpress warnings about
28204         incompatible C pointers that are compatible ObjC pointers.
28205
28206 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28207
28208         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28209         call initialize_inline_failed.
28210         (initialize_inline_failed): Move it from here ...
28211         * cgraph.c (initialize_inline_failed): ... to here.
28212         (cgraph_create_edge): Call initialize_inline_failed rather than
28213         setting inline_failed directly.
28214
28215 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28216
28217         PR target/32542
28218         * sysv4.opt (msdata): Improve comment.
28219         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28220         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28221
28222 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28223
28224         PR target/30451
28225         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28226         load and store attributes.
28227
28228 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28229
28230         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28231         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28232         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28233         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28234         __builtin_infq and __builtin_huge_valq.
28235
28236 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28237
28238         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28239         atmega8m1 devices.
28240         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28241         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28242
28243 2009-03-28  Xinliang David Li  <davidxl@google.com>
28244
28245         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28246         (do_dbg_cnt): New function.
28247
28248 2009-03-28  Jan Hubicka  <jh@suse.cz>
28249
28250         Merge from pretty-ipa:
28251
28252         2009-03-27  Jan Hubicka  <jh@suse.cz>
28253
28254         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28255         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28256         * passes.c (function_called_by_processed_nodes_p): New.
28257         * ipa-pure-const.c (check_call): Fix handling of operands.
28258         (analyze_function): Dump debug output for skipped bodies.
28259         (local_pure_const): Use function_called_by_processed_nodes_p.
28260         * dwarf2out.c (reference_to_unused): Use output.
28261         * passes.c (do_per_function_toporder): Likewise.
28262
28263         2008-11-12  Jan Hubicka  <jh@suse.cz>
28264
28265         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28266         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28267         state_set_in_source enum
28268         (check_decl): Ignore memory tags; do not set fake looping flags;
28269         dump diagnostics.
28270         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28271         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28272         (check_call, analyze_function): Rewrite.
28273         (check_stmt): New.
28274         (add_new_function): Update call of analyze_function.
28275         (generate_summary): Add call of analyze_function.
28276         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28277         (local_pure_const): New function.
28278         (pass_local_pure_const): New pass.
28279         * ipa-inline.c (inline_transform): Set after_inlining.
28280         * tree-eh.c (stmt_can_throw_external): New.
28281         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28282         work with aliasing built.
28283         * tree-flow.h (stmt_can_throw_external): New.
28284         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28285         and local pure/const pass in early and late optimization queue.
28286
28287 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28288
28289         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28290         allow_func_align.
28291         (fold_binary): Allow function decl aligment consideration is the
28292         second argument is integer constant one.
28293         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28294         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28295         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28296
28297 2009-03-28  Jan Hubicka  <jh@suse.cz>
28298
28299         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28300         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28301         * function.h (rtl_data): Add nothrow flag.
28302         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28303         set DECL_NOTHROW for AVAILABLE functions.
28304
28305 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28306
28307         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28308         following vector keyword has expansion starting with pixel or bool
28309         keyword, expand vector to __vector and pixel or bool to __pixel or
28310         __bool.
28311
28312         PR c++/39554
28313         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28314         warn_if_disallowed_function_p): Removed.
28315         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28316         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28317         warning_if_disallowed_function_p.
28318         * flags.h (warn_if_disallowed_function_p,
28319         warn_disallowed_functions): Removed.
28320         * common.opt (Wdisallowed-function-list=): Removed.
28321         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28322
28323 2009-03-28  Richard Guenther  <rguenther@suse.de>
28324
28325         PR tree-optimization/38723
28326         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28327         the entry block.
28328
28329 2009-03-28  Jan Hubicka  <jh@suse.cz>
28330
28331         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28332         test introduced by my previous patch.
28333
28334 2009-03-28  Richard Guenther  <rguenther@suse.de>
28335
28336         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28337         the PHIs value undefined.
28338
28339 2009-03-28  Jan Hubicka  <jh@suse.cz>
28340
28341         * tree-pass.h (pass_fixup_cfg): New pass.
28342         * ipa-inline.c (inline_transform): Set
28343         always_inline_functions_inlined/after_inlining.
28344         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28345         (pass_fixup_cfg): New pass.
28346         * passes.c (init_optimization_passes): Add fixup_cfg.
28347
28348 2009-03-28  Richard Guenther  <rguenther@suse.de>
28349
28350         PR tree-optimization/38458
28351         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28352         argument use the arguments copy-of value.
28353
28354 2009-03-28  Richard Guenther  <rguenther@suse.de>
28355
28356         PR tree-optimization/38180
28357         * tree-ssa-ccp.c (get_default_value): Simplify.
28358         (likely_value): Likewise.
28359         (surely_varying_stmt_p): Properly handle VOP case.
28360         (ccp_initialize): Likewise.
28361         (ccp_fold): Handle propagating through *&.
28362         (fold_const_aggregate_ref): Also handle decls.
28363
28364 2009-03-28  Jan Hubicka  <jh@suse.cz>
28365
28366         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28367         * cgraph.h (cgraph_node): Likewise.
28368         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28369         (cgraph_reset_node): Use process flag.
28370         (cgraph_mark_functions_to_output): Likewise.
28371         (cgraph_expand_function): Likewise.
28372         (cgraph_expand_all_functions): Likewise.
28373         (cgraph_output_in_order): Likewise.
28374         * dwarf2out.c (reference_to_unused): Likewise.
28375         * passes.c do_per_function_toporder): Likewise.
28376
28377 2009-03-28  Jan Hubicka  <jh@suse.cz>
28378
28379         Bring from lto-branch:
28380
28381         2008-09-03  Doug Kwan  <dougkwan@google.com>
28382
28383         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28384         enums instead of reason strings.
28385         * cgraph.c (cgraph_create_edge): Same.
28386         (cgraph_inline_failed_string): New function.
28387         * cgraph.h (cgraph_inline_failed_t): New enum type.
28388         (cgraph_inline_failed_string): New prototype.
28389         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28390         char pointer to cgraph_inline_failed_t.
28391         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28392         (cgraph_default_inline_p): Ditto.
28393         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28394         to cgraph_inline_failed_t pointer.
28395         * cif-code.def: New file.
28396         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28397         reason string.
28398         (cgraph_check_inline_limits): Change type of REASON to pointer to
28399         cgraph_inline_failed_t.  Replace reason strings with enums.
28400         (cgraph_default_inline_p): Ditto.
28401         (cgraph_recursive_inlining_p): Ditto.
28402         (update_caller_keys): Change type of FAILED_REASON to
28403         cgraph_inline_failed_t.
28404         (cgraph_set_inline_failed): Change type of REASON to pointer to
28405         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28406         convert enums to strings for text output.
28407         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28408         to be of type cgraph_inline_failed_t.  Replace reason strings with
28409         enums.  Call cgraph_inline_failed_string to covert enums
28410         to strings for text output.
28411         (cgraph_decide_inlining): Replace reason strings with enums.
28412         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28413         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28414         for text output.
28415         * tree-inline.c (expand_call_inline): Change type of REASON
28416         to cgraph_inline_failed_t.  Replace reason strings with enums.
28417         Call cgraph_inline_failed_string for text output.
28418         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28419         (cgraph.o): Ditto.
28420
28421 2009-03-28  Jan Hubicka  <jh@suse.cz>
28422
28423         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28424         cgraph_clone_node): Remove master clone handling.
28425         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28426         * cgraph.h (master_clone): Remove.
28427         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28428         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28429         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28430
28431 2009-03-28  Jan Hubicka  <jh@suse.cz>
28432
28433         * cgraph.c (cgraph_function_body_availability): Functions declared
28434         inline are always safe to assume that it is not going to be replaced.
28435
28436 2009-03-28  Richard Guenther  <rguenther@suse.de>
28437
28438         PR tree-optimization/38513
28439         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28440         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28441         EXC_PTR_EXPR and FILTER_EXPR.
28442         (get_ref_from_reference_ops): Likewise.
28443
28444 2009-03-28  Richard Guenther  <rguenther@suse.de>
28445
28446         PR tree-optimization/38968
28447         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28448         Use FLOOR_MOD_EXPR to compute misalignment.
28449
28450 2009-03-28  Richard Guenther  <rguenther@suse.de>
28451
28452         PR tree-optimization/37795
28453         * tree.h (combine_comparisons): Declare.
28454         * fold-const.c (combine_comparisons): Export.
28455         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28456         comparisons.
28457         (ifcombine_iforif): Use combine_comparisons.
28458
28459 2009-03-28  Jan Hubicka  <jh@suse.cz>
28460
28461         * tree-eh.c (inlinable_call_p): New function.
28462         (make_eh_edges): Use it.
28463         (verify_eh_edges): Use it.
28464         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28465         * except.c (reachable_next_level): Add inlinable_function argument
28466         (sjlj_find_directly_reachable_regions): Update.
28467         (add_reachable_handler): Do not set saw_any_handlers.
28468         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28469         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28470         Add new inlinable call parameter.
28471         (can_throw_internal, can_throw_external): Update.
28472         * except.h (can_throw_internal_1, can_throw_external_1,
28473         foreach_reachable_handler): Update declaration.
28474
28475 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28476
28477         * config/arm/t-arm-coff, config/h8300/coff.h,
28478         config/i386/i386-aout.h, config/i386/i386-coff.h,
28479         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28480         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28481         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28482         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28483         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28484         sys-types.h: Remove.
28485         * Makefile.in: Remove protoize and fixproto support and references
28486         in comments.
28487         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28488         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28489         Remove.
28490         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28491         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28492         unprotoize$(exeext).
28493         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28494         (.PHONY): Don't depend on proto.
28495         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28496         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28497         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28498         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28499         build/gen-protos.o, build/scan.o, xsys-protos.h,
28500         build/fix-header$(build_exeext), build/fix-header.o,
28501         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28502         stmp-install-fixproto): Remove.
28503         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28504         SYSCALLS.c or fixproto files.
28505         (install-common): Don't install protoize.
28506         (install-headers-tar, install-headers-cpio, install-headers-cp):
28507         Don't depend on $(STMP_FIXPROTO).
28508         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28509         install fixproto files or write out fixproto settings.
28510         (uninstall): Don't uninstall protoize.
28511         * config.gcc (use_fixproto): Remove.
28512         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28513         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28514         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28515         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28516         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28517         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28518         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28519         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28520         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28521         * config/t-vxworks (STMP_FIXPROTO): Remove.
28522         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28523         STMP_FIXPROTO): Remove.
28524         * config.in, configure: Regenerate.
28525         * crtstuff.c (gid_t, uid_t): Don't undefine.
28526         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28527         (arm-*-coff, arm-*-aout: Remove target entries.
28528         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28529         Remove mention of AIX 4.1.
28530         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28531         * doc/invoke.texi (Running Protoize): Remove.
28532         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28533         (Protoize Caveats): Remove.
28534         * tsystem.h: Update comments on headers assumed to exist.
28535
28536 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28537
28538         * genautomata.c: Add a new year to the copyright.  Add a new
28539         reference.
28540         (struct insn_reserv_decl): Add comments for member bypass_list.
28541         (find_bypass): Remove.
28542         (insert_bypass): New.
28543         (process_decls): Use insert_bypass.
28544         (output_internal_insn_latency_func): Output all bypasses with the
28545         same input insn in one switch case.
28546
28547         * rtl.def (define_bypass): Describe bypass choice.
28548         * doc/md.texi (define_bypass): Ditto.
28549
28550 2009-03-27  Richard Guenther  <rguenther@suse.de>
28551
28552         * gimplify.c (mark_addressable): Export.
28553         * tree-flow.h (mark_addressable): Declare.
28554         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28555         * tree-ssa.c (verify_phi_args): Verify that address taken
28556         variables have TREE_ADDRESSABLE set.
28557
28558 2009-03-27  Richard Guenther  <rguenther@suse.de>
28559
28560         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28561         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28562         Do not mark decls TREE_ADDRESSABLE.
28563         (build_fold_addr_expr): Adjust.
28564         (fold_addr_expr): Remove.
28565         (fold_unary): Use build_fold_addr_expr.
28566         (fold_comparison): Likewise.
28567         (split_address_to_core_and_offset): Likewise.
28568         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28569         TREE_ADDRESSABLE.
28570         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28571         (gimplify_modify_expr_to_memcpy): Mark source and destination
28572         addressable.
28573         * omp-low.c (create_omp_child_function): Mark the object decl
28574         TREE_ADDRESSABLE.
28575         (lower_rec_input_clauses): Mark the var we take the address of
28576         TREE_ADDRESSABLE.
28577         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28578
28579 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28580
28581         PR middle-end/39315
28582         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28583         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28584
28585 2009-03-27  Richard Guenther  <rguenther@suse.de>
28586
28587         PR tree-optimization/39120
28588         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28589         constraints.
28590         (handle_lhs_call): Process return constraints.  Add escape
28591         constraints if necessary.
28592         (handle_const_call): Fill out return constraints.  Make nested
28593         case more precise.  Avoid consttmp if possible.
28594         (handle_pure_call): Fill out return constraints.  Avoid
28595         callused if possible.
28596         (find_func_aliases): Simplify call handling.
28597
28598 2009-03-27  Richard Guenther  <rguenther@suse.de>
28599
28600         PR tree-optimization/39120
28601         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28602         as a representative.
28603         (solve_graph): Do propagate CALLUSED.
28604         (handle_pure_call): Use a scalar constraint from CALLUSED for
28605         the return value.
28606         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28607         solutions.
28608
28609 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28610
28611         PR c/39323
28612         * c-common.c (handle_aligned_attribute): Properly check alignment
28613         overflow.  Use (1U << i) instead of (1 << i).
28614
28615         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
28616
28617         * expr.h (get_mem_align_offset): Updated.
28618
28619         * tree.h (tree_decl_common): Change align to "unsigned int" and
28620         move it before pointer_alias_set.
28621
28622 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28623             Jakub Jelinek  <jakub@redhat.com>
28624
28625         PR target/38034
28626         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
28627         gr_register_operand with gr_reg_or_0_operand.
28628         (cmpxchg_rel_di): Likewise.
28629         (sync_lock_test_and_set<mode>): Likewise.
28630
28631 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28632
28633         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
28634         (true_regnum): Likewise.
28635
28636         * rtlanal.c (subreg_info): Moved to ...
28637         * rtl.h (subreg_info): Here.  New.
28638         (subreg_get_info): New.
28639
28640         * rtlanal.c (subreg_get_info): Make it extern.
28641
28642 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28643
28644         PR target/39472
28645         * config/i386/i386.c (ix86_abi): New.
28646         (override_options): Handle -mabi=.
28647         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
28648         (ix86_call_abi_override): Likewise.
28649         (init_cumulative_args): Likewise.
28650         (function_arg_advance): Likewise.
28651         (function_arg_64): Likewise.
28652         (function_arg): Likewise.
28653         (ix86_pass_by_reference): Likewise.
28654         (ix86_function_value_regno_p): Likewise.
28655         (ix86_build_builtin_va_list_abi): Likewise.
28656         (setup_incoming_varargs_64): Likewise.
28657         (is_va_list_char_pointer): Likewise.
28658         (ix86_init_machine_status): Likewise.
28659         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
28660         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
28661         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
28662         (ix86_function_abi): Make it static and return enum calling_abi.
28663         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
28664         with ix86_abi.
28665         (ix86_fn_abi_va_list): Updated.
28666
28667         * config/i386/i386.h (ix86_abi): New.
28668         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
28669         (CONDITIONAL_REGISTER_USAGE): Likewise.
28670         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
28671         (machine_function): Likewise.
28672
28673         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
28674         with ix86_abi.
28675         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
28676         (STACK_BOUNDARY): Likewise.
28677         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
28678
28679         * config/i386/i386.opt (mabi=): New.
28680
28681         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
28682         return enum calling_abi.
28683         (ix86_function_type_abi): Likewise.
28684         (ix86_function_abi): Removed.
28685
28686         * doc/invoke.texi: Document -mabi= option for x86.
28687
28688 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28689
28690         * builtins.c (real_dconstp): Delete.
28691         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
28692
28693 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
28694             Jakub Jelinek  <jakub@redhat.com>
28695
28696         PR debug/37959
28697         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
28698         (gen_subprogram_die): When a function is explicit, generate the
28699         DW_AT_explicit attribute.
28700         * langhooks.h (struct lang_hooks_for_decls): Add
28701         function_decl_explicit_p langhook.
28702         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
28703         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
28704
28705 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
28706
28707         * builtins.c (fold_builtin_memory_op): Optimize memmove
28708         into memcpy if we can prove source and destination don't overlap.
28709
28710         * tree-inline.c: Include gt-tree-inline.h.
28711         (clone_fn_id_num): New variable.
28712         (clone_function_name): New function.
28713         (tree_function_versioning): Use it.
28714         * Makefile.in (GTFILES): Add tree-inline.c.
28715
28716 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
28717
28718         * BASE-VER: Change to 4.5.0.
28719
28720 2009-03-27  Xinliang David Li  <davidxl@google.com>
28721
28722         PR tree-optimization/39557
28723         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
28724
28725 2009-03-27  Xinliang David Li  <davidxl@google.com>
28726
28727         PR tree-optimization/39548
28728         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
28729         candidate check.
28730
28731 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28732
28733         * c-common.c (pointer_int_sum): Use %wd on return from
28734         tree_low_cst.
28735
28736 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28737
28738         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
28739         on return from tree_low_cst.
28740
28741 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28742
28743         PR c++/36799
28744         * ginclude/stdarg.h (va_copy): Define also for
28745         __GXX_EXPERIMENTAL_CXX0X__.
28746
28747 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28748
28749         PR c++/35652
28750         * builtins.h (c_strlen): Do not warn here.
28751         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
28752         * c-common.c (pointer_int_sum): Take an explicit location.
28753         Warn about offsets out of bounds.
28754         * c-common.h (pointer_int_sum): Adjust declaration.
28755
28756 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28757
28758         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
28759         markup glitch.
28760
28761 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
28762
28763         PR c++/39554
28764         * opts.c (warn_if_disallowed_function_p): Don't assume
28765         get_callee_fndecl must return non-NULL.
28766
28767 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
28768
28769         PR rtl-optimization/39522
28770         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
28771         when reg_reloaded_valid is set.
28772
28773 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
28774
28775         * config/spu/divv2df3.c: New file.
28776         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
28777         (DPBIT_FUNCS): Filter out _div_df.
28778
28779 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
28780
28781         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
28782         a jump insn, count that jump in the distance to the loop start.
28783
28784 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
28785
28786         PR target/39523
28787         * config/sh/sh.c (calc_live_regs): Fix condition for global
28788         registers except PIC_OFFSET_TABLE_REGNUM.
28789
28790 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
28791
28792         PR/39518
28793         * doc/invoke.texi (-mconsole): New.
28794         (-mcygwin): New.
28795         (-mno-cygwin): New.
28796         (-mdll): New.
28797         (-mnop-fun-dllimport): New.
28798         (-mthread): New.
28799         (-mwin32): New.
28800         (-mwindows): New.
28801         (sub section "i386 and x86-64 Windows Options"): New.
28802
28803 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
28804
28805         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
28806         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
28807
28808 2009-03-25  Richard Guenther  <rguenther@suse.de>
28809
28810         PR middle-end/39497
28811         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
28812         of -Wno-error.
28813
28814 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
28815
28816         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
28817         neither of haifa/selective schedulers are working.
28818
28819 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28820
28821         * doc/invoke.texi (Debugging Options): Fix description of
28822         -fno-merge-debug-strings.
28823
28824 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
28825
28826         * config/cris/libgcc.ver: New version-script.
28827         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
28828
28829         * configure.ac <GAS features, nop mnemonic>: Add pattern
28830         crisv32-*-* for "nop".
28831         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
28832         * configure: Regenerate.
28833
28834 2009-03-24  Ira Rosen  <irar@il.ibm.com>
28835
28836         PR tree-optimization/39529
28837         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
28838         mark_sym_for_renaming for the tag copied to the new vector
28839         pointer.
28840
28841 2009-03-24  Arthur Loiret  <aloiret@debian.org>
28842
28843         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
28844         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
28845         EXTRA_SPEC_FUNCTIONS.
28846         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
28847         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
28848         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
28849         -march and -mtune options.
28850
28851 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
28852
28853         * config/m68k/t-rtems: Add m5329 multilib.
28854
28855 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
28856             Jakub Jelinek  <jakub@redhat.com>
28857
28858         PR debug/39524
28859         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
28860         nodes.
28861
28862 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28863
28864         PR c/39495
28865         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
28866         instead of c_parser_expression_conv, if original_code isn't one of the
28867         4 allowed comparison codes, fail.
28868
28869 2009-03-23  Richard Guenther  <rguenther@suse.de>
28870
28871         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
28872         * tree.h (struct tree_type): Likewise.
28873         * reload.h (struct insn_chain): Likewise.
28874         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
28875         * function.h (struct function): Likewise.
28876         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
28877
28878 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
28879
28880         PR tree-optimization/39516
28881         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
28882
28883 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
28884
28885         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
28886         should be set true if BITS_PER_WORD of target is bigger than 32
28887
28888 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
28889
28890         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
28891         Translate -B-options to -rpath-link.  Correct existing
28892         rpath-link and conditionalize on !nostdlib.
28893
28894 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28895
28896         * doc/extend.texi (Function Attributes, Variable Attributes):
28897         Fix typos.
28898         * doc/invoke.texi (Debugging Options, Optimize Options)
28899         (i386 and x86-64 Options, MCore Options): Likewise.
28900
28901 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
28902
28903         PR debug/37890
28904         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
28905         it for block local namespace aliases.
28906         (gen_decl_die): Pass context_die to gen_namespace_die.
28907
28908 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28909
28910         PR c/39495
28911         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
28912         minimum or maximum value.
28913
28914 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
28915
28916         * reginfo.c (globalize_reg): Recompute derived reg sets.
28917
28918 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
28919
28920         PR target/39063
28921         * libgcc2.c (mprotect): Do not use signed arguments for
28922         VirtualProtect, use DWORD arguments.  Also fix the 'may
28923         be used uninitialized' warning for the np variable.
28924
28925 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
28926
28927         PR target/39496
28928         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
28929         functions using regparm calling conventions when not optimizing.
28930         (ix86_function_sseregparm): Similarly for sseregparm calling
28931         conventions.
28932
28933 2009-03-19  Li Feng  <nemokingdom@gmail.com>
28934
28935         PR middle-end/39500
28936         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
28937         dependence if the first conflict is after niter iterations.
28938
28939 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
28940
28941         PR middle-end/38609
28942         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
28943         functions with dynamic stack-pointer adjustments.
28944
28945 2009-03-19  Ben Elliston  <bje@au.ibm.com>
28946
28947         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
28948         option; change to -msdata=data.
28949
28950 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28951
28952         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
28953         and -fopenmp.
28954
28955 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
28956
28957         PR target/35180
28958         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
28959
28960 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
28961
28962         * doc/invoke.texi (Code Gen Options): Expand discussion of
28963         -fno-common.
28964
28965 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
28966
28967         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
28968         * matrix-reorg.c (struct matrix_info): Likewise.
28969         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
28970         * rtl.h (struct mem_attrs): Likewise.
28971         * df.h (struct df): Likewise.
28972         * tree-data-ref.h (struct data_dependence_relation): Likewise.
28973         * ira-int.h (struct ira_allocno): Likewise.
28974         * df-scan.c (struct df_collection_rec): Likewise.
28975         * ira.c (struct equivalence): Likewise.
28976         * function.c (struct temp_slot): Likewise.
28977         * cfgloop.h (struct loop): Likewise.
28978
28979         PR debug/39485
28980         * function.c (use_register_for_decl): When not optimizing, disregard
28981         register keyword for variables with types containing methods.
28982
28983 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
28984
28985         PR middle-end/39447
28986         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
28987         (is_simple_operand): Call contains_component_ref_p before calling data
28988         reference analysis that would fail on COMPONENT_REFs.
28989
28990         * tree-vrp.c (search_for_addr_array): Fix formatting.
28991
28992 2009-03-18  Richard Guenther  <rguenther@suse.de>
28993
28994         * tree-vect-transform.c (vect_loop_versioning): Fold the
28995         generated comparisons.
28996         * tree-vectorizer.c (set_prologue_iterations): Likewise.
28997         (slpeel_tree_peel_loop_to_edge): Likewise.
28998
28999 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29000
29001         PR middle-end/37805
29002         * opts.c (print_specific_help): In addition to `undocumented',
29003         accept `separate' and `joined' flags if passed alone.  Describe
29004         output by the first matched one of those.
29005         (common_handle_option): Skip over empty strings.
29006         * gcc.c (display_help): Fix help string for `--help='.
29007         * doc/invoke.texi (Option Summary, Overall Options): With
29008         `--help=', classes and qualifiers can both be repeated, but
29009         only the latter can be negated.  One should not pass only
29010         negated qualifiers.  Fix markup and examples.
29011
29012         Revert
29013         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
29014         PR middle-end/37805
29015         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
29016         and -fhelp=separate.
29017
29018 2009-03-17  Jing Yu  <jingyu@google.com>
29019
29020         PR middle-end/39378
29021         * function.h (struct rtl_data): Move is_thunk from here...
29022         (struct function): ...to here.
29023         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
29024         * varasm.c (assemble_start_function): Change is_thunk from crtl to
29025         cfun.
29026         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
29027         cfun.
29028         (alpha_does_function_need_gp, alpha_start_function): Likewise.
29029         (alpha_output_function_end_prologue): Likewise.
29030         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
29031         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
29032         (rs6000_output_function_epilogue): Likewise.
29033         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
29034
29035 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
29036
29037         PR target/39482
29038         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
29039         from different units in a single alternative.
29040         (*truncdfsf_i387): Ditto.
29041         (*truncxfsf2_mixed): Ditto.
29042         (*truncxfdf2_mixed): Ditto.
29043
29044 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
29045
29046         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
29047         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
29048
29049         PR debug/39474
29050         * tree-ssa-live.c (remove_unused_locals): Don't remove local
29051         unused non-artificial variables when not optimizing.
29052
29053         PR debug/39471
29054         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
29055         DW_TAG_imported_module even if decl is IMPORTED_DECL with
29056         NAMESPACE_DECL in its DECL_INITIAL.
29057
29058         PR middle-end/39443
29059         * optabs.c (set_user_assembler_libfunc): New function.
29060         * expr.h (set_user_assembler_libfunc): New prototype.
29061         * c-common.c: Include libfuncs.h.
29062         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
29063         for memcmp, memset, memcpy, memmove and abort.
29064         * Makefile.in (c-common.o): Depend on libfuncs.h.
29065
29066         PR debug/39412
29067         * dwarf2out.c (gen_inlined_enumeration_type_die,
29068         gen_inlined_structure_type_die, gen_inlined_union_type_die,
29069         gen_tagged_type_instantiation_die): Removed.
29070         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
29071         do nothing.
29072
29073 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
29074
29075         PR testsuite/38526
29076         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
29077         its use.
29078         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
29079         (check-parallel-%): Ditto.
29080         (check-consistency): Ditto.
29081
29082 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
29083
29084         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
29085         local variable rhs by NULL_TREE.
29086
29087 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29088
29089         PR target/39477
29090         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
29091
29092 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29093
29094         PR target/39476
29095         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
29096
29097 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29098
29099         PR target/39473
29100         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
29101         for ms->sysv ABI calls only in 64bit mode.
29102
29103         * config/i386/i386.md (untyped_call): Support 32bit.
29104
29105 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
29106
29107         * doc/extend.texi: Replace x86_65 with x86_64.
29108
29109 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
29110
29111         PR tree-optimization/39455
29112         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
29113         mismatches for POINTER_TYPE_P (type).
29114         (number_of_iterations_le): Likewise.
29115
29116 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29117
29118         * config/picochip/picochip.c: Removed profiling support.
29119         * config/picochip/picochip.md: Removed profiling instruction.
29120         * config/picochip/picochip.h: Removed profiling builtin.
29121
29122 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
29123
29124         * doc/install.texi (--with-host-libstdcxx): Document.
29125
29126 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
29127
29128         PR target/34299
29129         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
29130         generate a warning if the function name does not begin with
29131         "__vector" and the function has either the 'signal' or 'interrupt'
29132         attribute, from here to ...
29133         (avr_declare_function_name): ...here. New function.
29134         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
29135         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
29136
29137 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
29138
29139         PR bootstrap/39454
29140         * cse.c (fold_rtx): Don't modify original const_arg1 when
29141         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
29142         separate variable instead.
29143         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
29144         from out of range shift counts.
29145         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
29146
29147 2009-03-13  Catherine Moore  <clm@codesourcery.com>
29148
29149         * config/i386/x-mingw32 (host-mingw32.o): Replace
29150         diagnostic.h with $(DIAGNOSTIC_H).
29151
29152 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
29153
29154         PR target/39431
29155         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
29156         predicate.
29157         * config/i386/sync.md (sync_compare_and_swap<mode>,
29158         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
29159         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
29160         into a register.
29161         (sync_double_compare_and_swapdi_pic,
29162         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
29163         cmpxchg8b_pic_memory_operand instead of just memory_operand.
29164
29165 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29166
29167         PR target/39445
29168         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
29169
29170 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29171
29172         PR target/39327
29173         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29174         (avx_addsubv4df3): Likewise.
29175         (*avx_addsubv4sf3): Likewise.
29176         (sse3_addsubv4sf3): Likewise.
29177
29178 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29179
29180         PR target/38824
29181         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
29182
29183 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29184
29185         PR debug/39432
29186         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29187         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29188         registers for allocnos created from user-defined variables.
29189
29190 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29191
29192         PR target/39181
29193         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29194         of non-integer mode as well.
29195
29196 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29197
29198         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29199         for functions for which the parameter types are unknown.
29200
29201 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29202
29203         PR target/39137
29204         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29205         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29206         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29207         * config/i386/i386.c (ix86_local_alignment): For
29208         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29209         long long variables on the stack to avoid dynamic realignment.
29210         Allow the first argument to be a decl rather than type.
29211         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29212
29213 2009-03-11  Nick Clifton  <nickc@redhat.com>
29214
29215         PR target/5362
29216         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29217         options.
29218         Add description to mno-lsim option.
29219         * config/mcore/mcore.h: Remove comment about deprecated m4align
29220         option.
29221         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29222         * doc/invoke.texi: Add description of mno-lsim and
29223         mstack-increment options.
29224
29225         * config/fr30/fr30.opt: Document the -mno-lsim option.
29226         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29227         and -mno-lsim options.
29228
29229 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29230
29231         * fold-const.c (fold_comparison): Only call fold_inf_compare
29232         if the mode supports infinities.
29233
29234 2009-03-11  Jason Merrill  <jason@redhat.com>
29235
29236         PR debug/39086
29237         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29238         end already did.  Notice GIMPLE_CALL modifications of the result.
29239         Don't copy debug information from an ignored decl or a decl from
29240         another function.
29241
29242 2009-03-10  Richard Guenther  <rguenther@suse.de>
29243             Nathan Froyd  <froydnj@codesourcery.com>
29244
29245         PR middle-end/37850
29246         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29247         (__divMODE3): Likewise.
29248
29249 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29250
29251         PR tree-optimization/39394
29252         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29253         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29254
29255 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29256
29257         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29258         inline asms for register asm ("") declarations.
29259
29260 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29261
29262         * fold-const.c (fold_unary): Fix comment.
29263
29264 2009-03-07  Jan Hubicka  <jh@suse.cz>
29265
29266         PR target/39361
29267         * tree-inline.c (setup_one_parameter): Do replacement of const
29268         argument by constant in SSA form.
29269
29270 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29271
29272         PR middle-end/38028
29273         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29274         determine alignment passed to assign_stack_local.
29275         (assign_parms_unsplit_complex): Likewise.
29276         * except.c (sjlj_build_landing_pads): Likewise.
29277
29278 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29279
29280         PR middle-end/39360
29281         * tree-flow.h (add_referenced_var): Return bool instead of void.
29282         * tree-dfa.c (add_referenced_var): Return result of
29283         referenced_var_check_and_insert call.
29284         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29285         of referenced_var_check_and_insert.
29286
29287         PR debug/39372
29288         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29289         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29290         DIE, don't emit it if abstract origin already has it.
29291         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29292         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29293
29294 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29295
29296         * genpreds.c (needs_variable): Fix parentheses at variable name
29297         detection.
29298         (write_tm_constrs_h): Indent generated code.
29299
29300 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29301
29302         * doc/extend.texi (Function Attributes): Add documentation
29303         for isr attributes.
29304
29305 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29306
29307         PR debug/39387
29308         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29309         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29310
29311 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29312
29313         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29314         the loop as bad.
29315
29316 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29317
29318         PR debug/39379
29319         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29320         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29321
29322 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29323
29324         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29325         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29326         constants instead of magic numbers.
29327         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29328         (QI_REG_P): Ditto.
29329         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29330         (x86_64_ms_abi_int_parameter_registers): Ditto.
29331         (x86_64_int_return_registers): Ditto.
29332         (ix86_maybe_switch_abi): Ditto.
29333         (ix86_expand_call): Ditto for clobbered_registers array.
29334         (ix86_hard_regno_mode_ok): Ditto.
29335         (x86_extended_QIreg_mentioned_p): Ditto.
29336
29337 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29338
29339         PR tree-optimization/39349
29340         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29341
29342         * combine.c (gen_lowpart_for_combine): Use omode when generating
29343         clobber.
29344
29345 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29346
29347         PR rtl-optimization/39235
29348         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29349
29350 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29351
29352         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29353
29354 2009-03-04  Richard Guenther  <rguenther@suse.de>
29355
29356         PR tree-optimization/39362
29357         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29358         that occur in abnormal PHIs should be varying.
29359
29360 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29361
29362         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29363         Extend comments.
29364         (simple_iv):  Take loop as an argument instead of statement.
29365         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29366         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29367         to simple_iv.
29368         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29369         Ditto.
29370         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29371         * matrix-reorg.c (analyze_transpose): Ditto.
29372         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29373         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29374         * tree-predcom.c (ref_at_iteration): Ditto.
29375         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29376
29377 2009-03-04  Richard Guenther  <rguenther@suse.de>
29378
29379         PR tree-optimization/39358
29380         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29381         escaped_id and callused_id.
29382         (solve_graph): Likewise.
29383
29384 2009-03-04  Richard Guenther  <rguenther@suse.de>
29385
29386         PR tree-optimization/39339
29387         * tree-sra.c (try_instantiate_multiple_fields): Make it
29388         no longer ICE on the above.
29389
29390 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29391
29392         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29393         that fits within Pmode.
29394
29395 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29396
29397         PR middle-end/10109
29398         * tm.texi (LIBCALL_VALUE): Update description.
29399
29400 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29401
29402         PR middle-end/34443
29403         * doc/extend.texi (section): Update description.
29404
29405 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29406
29407         PR middle-end/39345
29408         * tree-inline.c (remapped_type): New.
29409         (can_be_nonlocal): Call remapped_type instead of remap_type.
29410
29411 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29412
29413         PR fortran/39354
29414         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29415         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29416
29417 2009-03-03  Richard Guenther  <rguenther@suse.de>
29418
29419         PR middle-end/39272
29420         * tree.c (tree_nonartificial_location): New function.
29421         * tree.h (tree_nonartificial_location): Declare.
29422         * builtins.c (expand_builtin_memory_chk): Provide location
29423         of the call location for artificial function pieces.
29424         (maybe_emit_chk_warning): Likewise.
29425         (maybe_emit_sprintf_chk_warning): Likewise.
29426         (maybe_emit_free_warning): Likewise.
29427         * expr.c (expand_expr_real_1): Likewise.
29428
29429 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29430
29431         PR tree-optimization/39343
29432         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29433         COMPONENT_REF t has ARRAY_TYPE.
29434
29435 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29436
29437         PR middle-end/39335
29438         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29439         when the type precision of the induction variable should be
29440         larger than the type precision of nit.
29441         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29442         * graphite.c (graphite_loop_normal_form): Same.
29443         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29444
29445 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29446
29447         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29448         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29449         numbers to describe clobbered registers.
29450         (*call_value_0_rex64_ms_sysv): Ditto.
29451         * config/i386/mmx.md (mmx_emms): Ditto.
29452         (mmx_femms): Ditto.
29453
29454 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29455
29456         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29457         of ABI_64.
29458
29459 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29460
29461         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29462         (spu_section_type_flags): New function.
29463
29464 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29465
29466         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29467         reg_class_contents of FLOAT_REGS into a temporary.
29468
29469 2009-03-02  Richard Guenther  <rguenther@suse.de>
29470             Ira Rosen  <irar@il.ibm.com>
29471
29472         PR tree-optimization/39318
29473         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29474         information to the vectorized statement.
29475
29476 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29477
29478         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29479         variable.  Use defined names instead of magic constants for REX SSE
29480         registers.
29481
29482 2009-03-01  Richard Guenther  <rguenther@suse.de>
29483
29484         PR tree-optimization/39331
29485         * omp-low.c (lower_send_shared_vars): Do not receive new
29486         values for the reference of DECL_BY_REFERENCE parms or results.
29487
29488 2009-03-01  Jan Hubicka  <jh@suse.cz>
29489
29490         PR debug/39267
29491         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29492         BLOCK_NONLOCALIZED_VAR): New macros.
29493         (tree_block): Add nonlocalized_vars.
29494         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29495         gen_decl_die): Add origin argument.  Allow generation of die with
29496         origin at hand only.
29497         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29498         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29499         of gen_*.
29500         (gen_block_die): Fix checking for unused blocks.
29501         (process_scope_var): Break out from .... ; work with origins only.
29502         (decls_for_scope) ... here; process nonlocalized list.
29503         (dwarf2out_ignore_block): Look for nonlocalized vars.
29504         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29505         vars.
29506         (dump_scope_block): Dump them.
29507         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29508         (remap_block): Likewise.
29509         (can_be_nonlocal): New predicate.
29510         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29511
29512 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29513
29514         * configure: Regenerate.
29515
29516 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29517
29518         * optc-gen.awk: No need to duplicate option flags twice.
29519         Reuse help texts for duplicate options which do not have any.
29520
29521         * gcc.c (display_help): Document --version.
29522
29523         * gcc.c (main): If print_help_list and verbose_flag, ensure
29524         driver output comes before subprocess output.
29525
29526         * optc-gen.awk: Assign all remaining fields to help string,
29527         space-separated, for multi-line help in *.opt.
29528
29529         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29530         -Wno-pedantic-ms-format is for MinGW targets only.
29531
29532         * doc/options.texi (Option file format): Fix bad indentation,
29533         restoring dropped sentence.
29534
29535 2009-02-28  Jan Hubicka  <jh@suse.cz>
29536
29537         * tree-inline.c (tree_function_versioning): Output debug info.
29538
29539 2009-02-28  Jan Hubicka  <jh@suse.cz>
29540
29541         PR debug/39267
29542         * tree-inline.c (setup_one_parameter): Do not copy propagate
29543         arguments when not optimizing.
29544
29545 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29546
29547         PR target/39327
29548         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29549         (avx_addsubv4df3): Likewise.
29550         (*avx_addsubv4sf3): Likewise.
29551         (sse3_addsubv4sf3): Likewise.
29552         (*avx_addsubv2df3): Likewise.
29553         (sse3_addsubv2df3): Likewise.
29554         (avx_unpckhps256): Correct item selectors.
29555         (avx_unpcklps256): Likewise.
29556         (avx_unpckhpd256): Likewise.
29557         (avx_unpcklpd256): Likewise.
29558
29559 2009-02-28  Jan Hubicka  <jh@suse.cz>
29560
29561         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29562         static vars.
29563         (copy_arguments_for_versioning): If var is declared don't declare it.
29564         (tree_function_versioning): First setup substitutions and then copy
29565         args.
29566
29567 2009-02-27  Jan Hubicka  <jh@suse.cz>
29568
29569         PR debug/39267
29570         * cgraph.h (varpool_output_debug_info): Remove.
29571         * cgraphunit.c (varpool_output_debug_info): Remove.
29572         * dwarf2out.c (deferred_locations_struct): New struct
29573         (deferred_locations): New type.
29574         (deferred_locations_list): New static var.
29575         (deffer_location): New function.
29576         (gen_variable_die): Use it.
29577         (decls_for_scope): Output info on local static vars.
29578         (dwarf2out_finish): Process deferred locations.
29579         * varpool.c (varpool_output_debug_info): Remove.
29580
29581 2009-02-27  Jan Hubicka  <jh@suse.cz>
29582
29583         PR debug/39267
29584         * tree.h (TREE_PROTECTED): Fix comment.
29585         (BLOCK_HANDLER_BLOCK): Remove.
29586         (struct tree_block): Remove handler_block add body_block.
29587         (inlined_function_outer_scope_p): New.
29588         (is_body_block): Remove.
29589         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29590         * dwarf2out.c (is_inlined_entry_point): Remove.
29591         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29592         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29593         code.
29594         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29595         * gimplify.c (gimplify_expr): Gimplify body blocks.
29596         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29597         block with multiple subblocks.
29598         (dump_scope_block): Prettier output; dump more flags and info.
29599         (dump_scope_blocks): New.
29600         (remove_unused_locals): Use dump_scope_blocks.
29601         * tree-flow.h (dump_scope_blocks): Declare.
29602         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29603         * stmt.c (is_body_block): Remove.
29604         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29605         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29606
29607 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29608
29609         PR middle-end/39308
29610         * graphite.c (graphite_loop_normal_form): Do not call
29611         number_of_iterations_exit from a gcc_assert.
29612
29613 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29614
29615         * config/s390/s390.c (s390_swap_cmp): Look for conditional
29616         jumps if COND is NULL.
29617         (find_cond_jump): New function.
29618         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
29619         * config/s390/s390.md: Remove z10_cobra attribute value.
29620
29621 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
29622
29623         * config/alpha/alpha.h (alpha_expand_mov): Return false if
29624         force_const_mem returns NULL_RTX.
29625
29626 2009-02-26  Jan Hubicka  <jh@suse.cz>
29627
29628         PR debug/39267
29629         * cgraph.h (varpool_output_debug_info): Remove.
29630         * cgraphunit.c (varpool_output_debug_info): Remove.
29631         * dwarf2out.c (deferred_locations_struct): New struct
29632         (deferred_locations): New type.
29633         (deferred_locations_list): New static var.
29634         (deffer_location): New function.
29635         (gen_variable_die): Use it.
29636         (decls_for_scope): Output info on local static vars.
29637         (dwarf2out_finish): Process deferred locations.
29638         * varpool.c (varpool_output_debug_info): Remove.
29639
29640 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
29641
29642         PR rtl-optimization/39241
29643         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
29644         to subreg_offset_representable_p.
29645
29646 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29647
29648         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
29649         execute function prototype.  Get f and nregs from max_reg_num
29650         and get_insns.  Remove the first backward pass as it's dead,
29651         guard the forward pass by flag_expensive_optimizations.
29652         (rest_of_handle_regmove): Delete.
29653         (pass_regmove): Replace it with regmove_optimize.
29654
29655 2009-02-25  Martin Jambor  <mjambor@suse.cz>
29656
29657         PR tree-optimization/39259
29658         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
29659         calls_alloca function flags.
29660         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
29661         calls are detected.
29662
29663 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
29664
29665         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
29666         flags_set_1_rtx, flags_set_1_set): Delete.
29667         (regmove_optimize): Do not call mark_flags_life_zones.
29668
29669 2009-02-24  Julian Brown  <julian@codesourcery.com>
29670
29671         PR target/35965
29672         * config/arm/arm.c (require_pic_register): Only set
29673         cfun->machine->pic_reg once per function.
29674
29675 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
29676
29677         * doc/invoke.texi (Link Options): Document an easier way to pass
29678         options that take arguments to the GNU linker using -Xlinker and -Wl.
29679
29680 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
29681
29682         PR target/33785
29683         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
29684
29685 2009-02-24  Richard Guenther  <rguenther@suse.de>
29686
29687         PR debug/39285
29688         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
29689
29690 2009-02-24  Richard Guenther  <rguenther@suse.de>
29691             Zdenek Dvorak  <ook@ucw.cz>
29692
29693         PR tree-optimization/39233
29694         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
29695         from converting them to a generic type.
29696
29697 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
29698
29699         PR tree-optimization/39260
29700         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
29701         contains a condition with a real type.
29702         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
29703
29704 2009-02-23  Jason Merrill  <jason@redhat.com>
29705
29706         PR c++/38880
29707         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
29708         narrowing_initializer_constant_valid_p.
29709         (narrowing_initializer_constant_valid_p): Don't return
29710         null_pointer_node for adding a pointer to itself.
29711
29712 2009-02-23  Jan Hubicka  <jh@suse.cz>
29713
29714         PR c/12245
29715         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
29716         resizing.
29717
29718 2009-02-23  Jan Hubicka  <jh@suse.cz>
29719
29720         PR tree-optimization/37709
29721         * tree.c (block_ultimate_origin): Move here from dwarf2out.
29722         * tree.h (block_ultimate_origin): Declare.
29723         * dwarf2out.c (block_ultimate_origin): Move to tree.c
29724         * tree-ssa-live.c (remove_unused_scope_block_p):
29725         Eliminate blocks containig no instructions nor live variables nor
29726         nested blocks.
29727         (dump_scope_block): New function.
29728         (remove_unused_locals): Enable removal of dead blocks by default;
29729         enable dumping at TDF_DETAILS.
29730
29731 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29732
29733         * config/i386/i386.c (classify_argument): Don't allow COImode
29734         and OImode.
29735         (function_arg_advance_32): Don't allow OImode.
29736         (function_arg_32): Likewise.
29737         (function_value_32): Likewise.
29738         (return_in_memory_32): Likewise.
29739         (function_arg_64): Remove OImode comment.
29740
29741 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29742
29743         PR target/39261
29744         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
29745         ix86_expand_vector_set for V4DImode in 64bit mode only.
29746         (ix86_expand_vector_init_one_var): Likewise.
29747
29748 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
29749
29750         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
29751
29752 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29753
29754         PR bootstrap/39257
29755         * loop-iv.c: Revert last change.
29756         * emit-rtl.c: Likewise.
29757
29758 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
29759
29760         PR target/39256
29761         * config/i386/i386.c (type_natural_mode): Remove an extra
29762         space in the warning message.
29763         (function_value_32): Handle 32-byte vector modes.
29764         (return_in_memory_32): Likewise.
29765
29766 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
29767
29768         * loop-iv.c (truncate_value): New function.
29769         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
29770         of lowpart_subreg.
29771         (lowpart_subreg): Move to...
29772         * emit-rtl.c: ...here.
29773
29774 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
29775
29776         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
29777         accidental and undocumented change at revision 140860.
29778
29779 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
29780
29781         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
29782         take gimple_seq * arguments.
29783         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
29784         types_compatible_p langhook.
29785
29786 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
29787             Joseph Myers  <joseph@codesourcery.com>
29788
29789         * config/arm/arm.c (arm_builtin_va_list): New function.
29790         (arm_expand_builtin_va_start): Likewise.
29791         (arm_gimplify_va_arg_expr): Likewise.
29792         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
29793         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
29794         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
29795         (va_list_type): New variable.
29796         (arm_mangle_type): Mangle va_list_type appropriately.
29797
29798 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29799
29800         PR middle-end/39157
29801         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
29802         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
29803         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
29804         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
29805         parameter to 1000 for -O1 by default.
29806         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
29807         parameter.
29808         * loop-invariant.c: Include params.h.
29809         (move_loop_invariants): Don't call move_single_loop_invariants on
29810         very large loops.
29811
29812 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
29813
29814         * calls.c (emit_library_call_value_1): Use slot_offset instead of
29815         offset when calculating bounds for indexing stack_usage_map.  Fixes
29816         a buffer overflow with certain target setups.
29817
29818 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
29819
29820         PR target/39240
29821         * calls.c (expand_call): Clear try_tail_call if caller and callee
29822         disagree in promotion of function return value.
29823
29824 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
29825
29826         PR target/39175
29827         * c-common.c (c_determine_visibility): If visibility changed and
29828         DECL_RTL has been already set, call make_decl_rtl to update symbol
29829         flags.
29830
29831 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
29832
29833         PR c++/39188
29834         * varasm.c (assemble_variable): Don't check DECL_NAME when
29835         globalizing a variable.
29836
29837 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
29838
29839         PR c/38483
29840         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
29841         expression before any __builtin_trap call.
29842         * c-typeck.c (build_function_call): Convert and check function
29843         arguments before generating a call to a trap.  Evaluate the
29844         function arguments before the trap.
29845
29846 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
29847
29848         PR target/39228
29849         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
29850         (UNSPEC_FXAM_MEM): New unspec.
29851         (fxam<mode>2_i387_with_temp): New insn and split pattern.
29852         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
29853         memory using fxam<mode>2_i387_with_temp to remove excess precision.
29854
29855 2009-02-19  Richard Guenther  <rguenther@suse.de>
29856
29857         PR tree-optimization/39207
29858         PR tree-optimization/39074
29859         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
29860         storedanything_tree): New.
29861         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
29862         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
29863         (build_succ_graph): Add edges from STOREDANYTHING to all
29864         non-direct nodes.
29865         (init_base_vars): Initialize STOREDANYTHING.
29866         (compute_points_to_sets): Free substitution info after
29867         building the succ graph.
29868         (ipa_pta_execute): Likewise.
29869
29870         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
29871         field.
29872         (do_ds_constraint): Do not add to special var or non-pointer
29873         field solutions.
29874         (type_could_have_pointers): Split out from ...
29875         (could_have_pointers): ... here.  For arrays use the element type.
29876         (create_variable_info_for): Initialize may_have_pointers.
29877         (new_var_info): Likewise.
29878         (handle_lhs_call): Make the HEAP variable unknown-sized.
29879         (intra_create_variable_infos): Use a type with pointers for
29880         PARM_NOALIAS, make it unknown-sized.
29881
29882 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
29883
29884         PR target/39224
29885         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
29886
29887 2009-02-18  Jason Merrill  <jason@redhat.com>
29888
29889         PR target/39179
29890         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
29891         value if DECL_EXTERNAL.
29892         * tree-sra.c (sra_walk_gimple_assign): Likewise.
29893         * target.h (gcc_target::binds_local_p): Clarify "module".
29894         * tree.h (TREE_PUBLIC): Clarify "module".
29895
29896 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
29897
29898         PR target/38891
29899         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
29900         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
29901
29902 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
29903
29904         PR target/39082
29905         * c.opt (Wabi): Support C and ObjC.
29906         (Wpsabi): New.
29907
29908         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
29909
29910         * config/i386/i386.c (classify_argument): Warn once about the ABI
29911         change when passing union with long double.
29912
29913         * doc/invoke.texi: Update -Wabi for warning psABI changes.
29914
29915 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
29916
29917         PR c/35447
29918         * c-parser.c (c_parser_compound_statement): Always enter and leave
29919         a scope.
29920
29921 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29922
29923         PR target/34587
29924         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
29925
29926 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
29927
29928         PR tree-optimization/36922
29929         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
29930         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
29931         Likewise.
29932
29933 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29934
29935         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
29936         to 0 for EABI64.
29937
29938 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29939
29940         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
29941
29942 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
29943
29944         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
29945         tree sharing.
29946
29947 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
29948             Richard Sandiford  <rdsandiford@googlemail.com>
29949
29950         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
29951         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
29952         (loongson_biadd): ...this.
29953
29954 2009-02-17  Richard Guenther  <rguenther@suse.de>
29955
29956         PR tree-optimization/39202
29957         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
29958         a var make sure to follow existing collapses.
29959
29960 2009-02-17  Richard Guenther  <rguenther@suse.de>
29961
29962         PR middle-end/39214
29963         * langhooks.c (lhd_print_error_function): Check for NULL block.
29964
29965 2009-02-17  Richard Guenther  <rguenther@suse.de>
29966
29967         PR tree-optimization/39204
29968         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
29969         of the PHI arg.
29970
29971 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
29972
29973         * config/soft-fp/double.h: Update from glibc CVS.
29974
29975 2009-02-17  Richard Guenther  <rguenther@suse.de>
29976
29977         PR tree-optimization/39207
29978         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
29979         strict-aliasing warnings for pointers pointing to NULL.
29980
29981 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
29982
29983         PR c/35446
29984         * c-parser.c (c_parser_braced_init): Call pop_init_level when
29985         skipping until next close brace.
29986
29987 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
29988
29989         PR target/37049
29990         * config/i386/i386.c (ix86_expand_push): Set memory alignment
29991         to function argument boundary.
29992
29993 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29994
29995         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
29996         in the lea_add. Reload eventually constraints it properly.
29997         * config/picochip/constraints.md: Remove the target constraint
29998         "b", since it is not needed anymore.
29999
30000 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
30001
30002         * gthr-dce.h: Uglify function parameter and local variable names.
30003         * gthr-gnat.h: Likewise.
30004         * gthr-mipssde.h: Likewise.
30005         * gthr-nks.h: Likewise.
30006         * gthr-posix95.h: Likewise.
30007         * gthr-posix.h: Likewise.
30008         * gthr-rtems.h: Likewise.
30009         * gthr-single.h: Likewise.
30010         * gthr-solaris.h: Likewise.
30011         * gthr-tpf.h: Likewise.
30012         * gthr-vxworks.h: Likewise.
30013         * gthr-win32.h: Likewise.
30014
30015 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
30016
30017         PR target/39196
30018         * config/i386/i386.md: Restrict the new peephole2 to move
30019         between MMX/SSE registers.
30020
30021 2009-02-15  Richard Guenther  <rguenther@suse.de>
30022
30023         Revert
30024         2009-02-13  Richard Guenther  <rguenther@suse.de>
30025
30026         * configure.ac: Enable LFS.
30027         * configure: Re-generate.
30028         * config.in: Likewise.
30029
30030 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30031
30032         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
30033         spu_srqwbyte, spu_srqwbytebc): Define.
30034         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
30035         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
30036         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
30037         "shrqby_<mode>"): New insn-and-split patterns.
30038         * config/spu/spu.c (expand_builtin_args): Determine and return
30039         number of operands using spu_builtin_description data.
30040         (spu_expand_builtin_1): Use it.
30041
30042 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
30043
30044         PR target/38056
30045         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
30046         TARGET_CONST_GP.
30047
30048 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30049
30050         PR target/39149
30051         * config/i386/i386.c (override_options): Correct warning
30052         messages for -malign-loops, -malign-jumps and -malign-functions.
30053
30054 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30055
30056         PR target/39152
30057         * config/i386/i386.md: Restrict the new peephole2 to move
30058         between the general purpose registers.
30059
30060 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30061
30062         PR target/39162
30063         * config/i386/i386.c (type_natural_mode): Add a new argument.
30064         Return the original mode and warn ABI change if vector size is 32byte.
30065         (function_arg_advance): Updated.
30066         (function_arg): Likewise.
30067         (ix86_function_value): Likewise.
30068         (ix86_return_in_memory): Likewise.
30069         (ix86_sol10_return_in_memory): Likewise.
30070         (ix86_gimplify_va_arg): Likewise.
30071         (function_arg_32): Don't warn ABX ABI change here.
30072         (function_arg_64): Likewise.
30073
30074 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
30075
30076         * loop-iv.c (implies_p): In the final case, test that operands 0
30077         of the two comparisons match.
30078
30079         * config/bfin/bfin.c (find_prev_insn_start): New function.
30080         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
30081         (find_next_insn_start): Move.
30082
30083 2009-02-13  Richard Guenther  <rguenther@suse.de>
30084
30085         * configure.ac: Enable LFS.
30086         * configure: Re-generate.
30087         * config.in: Likewise.
30088
30089 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
30090
30091         PR c/35444
30092         * c-parser.c (c_parser_parms_list_declarator): Discard pending
30093         sizes on syntax error after some arguments have been parsed.
30094
30095 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30096
30097         * doc/invoke.texi (-fira): Remove.
30098
30099 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30100
30101         * caller-save.c: Replace regclass.c with reginfo.c in comments.
30102         * recog.c: Likewise.
30103         * rtl.h: Likewise.
30104
30105 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
30106
30107         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
30108         (umul_ppmm): Likewise.
30109         (count_leading_zeros): Likewise.
30110         (count_trailing_zeros): Likewise.
30111         (UMUL_TIME): Likewise.
30112
30113 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30114
30115         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
30116         soft-fp/t-softfp to tmake_file.
30117
30118         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
30119         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
30120         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
30121         IA64_BUILTIN_INFQ]: New.
30122         (ia64_init_builtins): Initialize __builtin_infq,
30123         __builtin_fabsq and __builtin_copysignq if not HPUX.
30124         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
30125         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
30126
30127         * config/ia64/lib1funcs.asm (__divtf3): Define only if
30128         SHARED is defined.
30129         (__fixtfti): Likewise.
30130         (__fixunstfti): Likewise.
30131         (__floattitf): Likewise.
30132
30133         * config/ia64/libgcc-glibc.ver: New.
30134         * config/ia64/t-fprules-softfp: Likewise.
30135         * config/ia64/sfp-machine.h: Likewise.
30136
30137         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
30138         (LIBGCC2_TF_CEXT): Likewise.
30139         (TF_SIZE): Likewise.
30140         (TARGET_INIT_LIBFUNCS): Likewise.
30141
30142         * config/ia64/t-glibc (SHLINB_MAPFILES):
30143         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
30144
30145 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30146
30147         * config/i386/i386.c (construct_container): Rewrite processing
30148         BLKmode with X86_64_SSE_CLASS.
30149
30150 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
30151
30152         PR target/39152
30153         * config/i386/i386.md: Replace simplify_replace_rtx with
30154         replace_rtx in the new peephole2.
30155
30156 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
30157
30158         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
30159         loop unrolling do not happen at -O2.
30160
30161 2009-02-12  Michael Matz  <matz@suse.de>
30162
30163         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
30164
30165 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30166
30167         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
30168         for -g3.
30169
30170 2009-02-12  Ben Elliston  <bje@au.ibm.com>
30171
30172         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
30173         patterns when updating the back chain.  Missed in the 2009-02-10
30174         change.
30175
30176 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
30177
30178         * doc/extend.texi (Decimal Floating Types): Update identifier of
30179         draft TR and list of missing support.
30180
30181 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
30182
30183         PR middle-end/39154
30184         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30185         bit to variable length decl's flags, add it also to its
30186         pointer replacement variable.
30187
30188 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30189             Jakub Jelinek  <jakub@redhat.com>
30190
30191         PR target/39118
30192         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30193         (memory_blockage): New expander.
30194         (*memory_blockage): New insn pattern.
30195         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30196         instead of general blockage at the end of function prologue when
30197         frame pointer is used to access red zone area.  Do not emit blockage
30198         when profiling, it is emitted in generic code.
30199         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30200         function epilogue when frame pointer is used to access red zone area.
30201
30202 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30203
30204         PR target/38824
30205         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30206         by arithmetic with memory operands.
30207         * config/i386/predicates.md (commutative_operator): New.
30208
30209 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30210
30211         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30212         bulleted lists.
30213
30214 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30215
30216         * alias.h (record_alias_subset): Declare.
30217         * alias.c (record_alias_subset): Make global.
30218
30219 2009-02-10  Nick Clifton  <nickc@redhat.com>
30220
30221         * tree-parloops.c: Change license to GPLv3.
30222         * ipa-struct-reorg.c: Change license to GPLv3.
30223         * ipa-struct-reorg.h: Change license to GPLv3.
30224
30225 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30226
30227         PR c/39084
30228         * c-decl.c (start_struct): Return NULL on error.
30229
30230 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30231
30232         PR middle-end/39124
30233         * cfgloopmanip.c (remove_path): Call remove_bbs after
30234         cancel_loop_tree, not before it.
30235
30236         PR target/39139
30237         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30238         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30239         VAR_DECLs were seen.
30240         * tree-ssa-live.c (remove_unused_locals): Recompute
30241         cfun->has_local_explicit_reg_vars.
30242         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30243         copies or clearings if cfun->has_local_explicit_reg_vars.
30244
30245 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30246
30247         PR target/39118
30248         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30249         of function prologue when frame pointer is used to access
30250         red zone area.
30251
30252 2009-02-10  Richard Guenther  <rguenther@suse.de>
30253
30254         PR middle-end/39127
30255         * gimplify.c (gimple_regimplify_operands): Always look if
30256         we need to create a temporary.
30257
30258 2009-02-10  Richard Guenther  <rguenther@suse.de>
30259
30260         PR tree-optimization/39132
30261         * tree-loop-distribution.c (todo): New global var.
30262         (generate_memset_zero): Trigger TODO_rebuild_alias.
30263         (tree_loop_distribution): Return todo.
30264
30265 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30266
30267         PR target/39119
30268         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30269         (x86_64_reg_class_name): Removed.
30270         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30271         first one isn't X86_64_SSE_CLASS or any other ones aren't
30272         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30273         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30274         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30275         and 3 X86_64_SSEUP_CLASS.
30276         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30277         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30278
30279 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30280
30281         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30282         form instruction to update the stack back chain word, even if the
30283         user has disabled the generation of update instructions.
30284         (movdi_<mode>_update_stack): New.
30285         (movsi_update_stack): Likewise.
30286         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30287         always use an update form instruction to update the stack back
30288         chain word.
30289
30290 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30291
30292         PR middle-end/38953
30293         * graphite.c (if_region_set_false_region): After moving a region in
30294         the false branch of a condition, remove the empty dummy basic block.
30295         (gloog): Remove wrong fix for PR38953.
30296
30297 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30298
30299         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30300         generation due to implicit sign extension.
30301
30302 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30303
30304         PR middle-end/38981
30305         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30306         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30307
30308 2009-02-09  Richard Guenther  <rguenther@suse.de>
30309
30310         PR middle-end/35202
30311         * convert.c (convert_to_real): Disable (float)fn((double)x)
30312         to fnf(x) conversion if errno differences may occur and
30313         -fmath-errno is set.
30314
30315 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30316
30317         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30318         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30319         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30320
30321 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30322
30323         PR c/35434
30324         * c-common.c (handle_alias_attribute): Disallow attribute for
30325         anything not a FUNCTION_DECL or VAR_DECL.
30326
30327 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30328
30329         PR c/39035
30330         * real.c (do_compare): Special-case compare of zero against
30331         decimal float value.
30332
30333 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30334
30335         PR c/36432
30336         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30337         as indicating flexible array members unless the field itself is
30338         being declarared as the incomplete array.
30339
30340 2009-02-06  Jan Hubicka  <jh@suse.cz>
30341
30342         PR tree-optimization/38844
30343         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30344         is already inlined.
30345
30346 2009-02-06  Richard Guenther  <rguenther@suse.de>
30347
30348         PR middle-end/38977
30349         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30350         fork because we may expand it as __gcov_fork.
30351
30352 2009-02-06  Nick Clifton  <nickc@redhat.com>
30353
30354         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30355
30356 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30357
30358         PR tree-optimization/35659
30359         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30360         vn_phi_eq): Shortcut if hashcode does not match.
30361         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30362         NULL operands.
30363         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30364         and avoid iterative_hash_expr.
30365         (FOR_EACH_VALUE_ID_IN_SET): New.
30366         (value_id_compare): Remove.
30367         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30368         sort expressions by value id.
30369
30370 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30371
30372         PR target/38991
30373         * config/sh/predicates.md (general_movsrc_operand): Don't check
30374         the subreg of system registers here.
30375
30376 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30377
30378         PR c++/39106
30379         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30380         on the copied decl.
30381
30382 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30383
30384         PR rtl-optimization/39110
30385         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30386         addresses, not aligned ones.
30387
30388 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30389             Richard Guenther  <rguenther@suse.de>
30390
30391         PR tree-optimization/39100
30392         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30393         comment says and add edges.
30394
30395 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30396
30397         PR c/35435
30398         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30399         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30400
30401 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30402
30403         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30404         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30405         register_bb_in_sese, new_sese, free_sese): Moved.
30406         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30407         outermost_loop_in_scop, build_scop_iteration_domain,
30408         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30409         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30410         Use loop_in_sese_p instead of loop_in_scop_p.
30411         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30412         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30413         (scopdet_basic_block_info): Fix bug in scop detection.
30414         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30415         eq_loop_to_cloog_loop): Remove.
30416         (nb_loops_around_loop_in_scop, nb_loop
30417         ref_nb_loops): Moved here...
30418         * graphite.h (ref_nb_loops): ... from here.
30419         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30420         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30421         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30422
30423 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30424             Hans-Peter Nilsson  <hp@axis.com>
30425
30426         PR rtl-optimization/37889
30427         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30428         Move offset handling from PLUS to before the switch.  Use new
30429         arguments when considering SYMBOL_REFs too.
30430         (rtx_addr_can_trap_p): Pass dummy offset and size.
30431         (enum may_trap_p_flags): Remove.
30432         (may_trap_p_1): Pass size from MEM_SIZE.
30433
30434         PR rtl-optimization/38921
30435         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30436         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30437         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30438         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30439
30440 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30441
30442         AVX Programming Reference (January, 2009)
30443         * config/i386/sse.md (*vpclmulqdq): New.
30444
30445 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30446
30447         PR tree-optimization/38977
30448         PR gcov-profile/38292
30449         * calls.c (special_function_p): Disregard __builtin_ prefix.
30450
30451 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30452
30453         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30454         non-indexable addresses even before reload.
30455
30456 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30457
30458         PR c/29129
30459         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30460         as having variable size.  Do not give an error for unnamed
30461         parameters with [*] declarators.  Give a warning for type names
30462         with [*] declarators and mark them as variable size.
30463         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30464         for sizeof applied to [*] type names.
30465
30466 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30467
30468         PR C++/36607
30469         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30470
30471 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30472
30473         * gcc.c (process_command): Update copyright notice dates.
30474         * gcov.c (print_version): Likewise.
30475         * gcov-dump.c (print_version): Likewise.
30476         * mips-tfile.c (main): Likewise.
30477         * mips-tdump.c (main): Likewise.
30478
30479 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30480
30481         PR c/35433
30482         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30483         for composite type involving a zero-length array type.
30484
30485 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30486
30487         PR target/35318
30488         * function.c (match_asm_constraints_1): Skip over
30489         initial optional % in the constraint.
30490
30491         PR inline-asm/39059
30492         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30493         supported, don't accept FIXED_CSTs.
30494         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30495         and _Sat is used without _Fract/_Accum.  Set specs->type to
30496         integer_type_node for cts_fract/cts_accum if fixed point is not
30497         supported.
30498
30499 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30500
30501         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30502
30503 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30504
30505         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30506         (ABI_HAS_64BIT_SYMBOLS): Use it.
30507         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30508
30509 2009-02-02  Paul Brook  <paul@codesourcery.com>
30510
30511         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30512
30513 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30514
30515         PR inline-asm/39058
30516         * recog.h (asm_operand_ok): Add constraints argument.
30517         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30518         recurse on matching constraint.
30519         (check_asm_operands): Pass constraints as 3rd argument to
30520         asm_operand_ok.  Don't look up matching constraint here.
30521         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30522         to asm_operand_ok.
30523
30524 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30525
30526         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30527         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30528
30529 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30530
30531         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30532         information.  Remove some obsolete information.  Reorganize.
30533
30534         * config/pa/fptr.c: Revert license to GPL 2.
30535         * config/pa/milli64.S: Likewise.
30536
30537 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30538
30539         PR target/38904
30540         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30541         LIBRARY name in, instead of hard-coding it.
30542         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30543         extra target make frag to tmake_files according to EH model.
30544         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30545         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30546         frags that define makefile variable EH_MODEL appropriately.
30547         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30548         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30549         to "-sjlj" according to type of EH configured.
30550         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30551         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30552         to "_sjlj" according to type of EH configured.
30553         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30554         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30555         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30556         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30557         string value of "pe_dll" command-line option.
30558         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30559         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30560         (SHLIB_IMPLIB):  Override t-cygming default.
30561         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30562         string value of "pe_dll" command-line option.
30563
30564 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30565
30566         PR target/38952
30567         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30568         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30569
30570 2009-01-31  Richard Guenther  <rguenther@suse.de>
30571
30572         PR tree-optimization/38937
30573         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30574         computing the transitive closure.
30575
30576 2009-01-30  Richard Guenther  <rguenther@suse.de>
30577
30578         PR tree-optimization/39041
30579         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30580         Propagate variable indices only if the types match for this stmt.
30581
30582 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30583
30584         PR target/39013
30585         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30586         inline but never defined.
30587
30588 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30589
30590         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30591         (*insv_h_di_reg_extimm): New insn.
30592         (*insv_l<mode>_reg_extimm): New insn.
30593
30594 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30595
30596         * config/picochip/picochip.c (flag_conserve_stack): set
30597         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30598         fconserve-stack. Reduce call-overhead used by inliner.
30599
30600 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30601
30602         PR/38157
30603         * common.opt (flag_conserve_stack): Initialised to zero.
30604
30605 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30606
30607         PR/39002
30608         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30609         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30610         method.
30611
30612 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30613
30614         * ira-color.c (allocno_reload_assign): Update comments.
30615         * regmove.c (regmove_optimize): Likewise.
30616
30617         * ra.h: Removed.
30618
30619 2009-01-29  Robert Millan  <rmh@aybabtu.com>
30620
30621         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
30622         * config/i386/kopensolaris-gnu.h: New file.  Undefine
30623         `MD_UNWIND_SUPPORT'.
30624         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
30625
30626 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
30627
30628         PR tree-optimization/39007
30629         * tree-loop-distribution.c (generate_builtin): Use
30630         recompute_dominator to compute the immediate dominator of the
30631         basic block just after the loop.
30632
30633 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
30634
30635         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
30636         (ASM_OUTPUT_DWARF_PCREL): Define.
30637
30638 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
30639
30640         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
30641         * doc/passes.texi: Remove entries about regclass, local-alloc, and
30642         global.  Modify entries about regmove and IRA.
30643
30644         * ra-conflict.c: Remove the file.
30645
30646         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
30647
30648         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
30649         (pass_regclass_init): Rename to pass_reginfo_init.
30650
30651         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
30652
30653         * toplev.h (flag_ira): Remove.
30654
30655         * caller-save.c (setup_save_areas): Remove flag_ira.
30656
30657         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
30658
30659         * global.c: Remove the file.
30660
30661         * opts.c (decode_options): Remove flag_ira.
30662
30663         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
30664
30665         * regmove.c: Modify file description.
30666         (find_use_as_address, try_auto_increment): Define them only if
30667         AUTO_INC_DEC is defined.
30668         (replacement_quality, replace_in_call_usage, fixup_match_1,
30669         stable_and_no_regs_but_for_p): Remove.
30670         (reg_set_in_bb): Make it static.
30671         (regmove_optimize): Remove flag_ira and code which worked for
30672         !flag_ira.
30673
30674         * local-alloc.c: Remove the file.
30675
30676         * common.opt (fira): Remove.
30677
30678         * ira.c: Include except.h.
30679         (eliminable_regset): Move from global.c.
30680         (mark_elimination): Ditto.  Remove flag_ira.
30681         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
30682         equiv_mem_modified, validate_equiv_mem_from_store,
30683         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
30684         contains_replace_regs, memref_referenced_p, memref_used_between_p,
30685         no_equiv, recorded_label_ref): Move from local-alloc.c.
30686         (update_equiv_regs): Ditto.  Make it static.
30687         (print_insn_chain, print_insn_chains): Move it from global.c.
30688         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
30689         (build_insn_chain): Ditto.  Make it static.
30690         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
30691         Rename to init_live_subregs.
30692         (gate_ira): Remove flag_ira.
30693
30694         * regclass.c: Rename reginfo.c.  Change file description.
30695         (FORBIDDEN_INC_DEC_CLASSES): Remove.
30696         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
30697         (init_reg_sets_1): Remove code for evaluation of
30698         reg_class_superclasses and losing_caller_save_reg_set.
30699         (init_regs): Remove init_reg_autoinc.
30700         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
30701         ok_for_base_p_nonstrict): Remove.
30702         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
30703         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
30704         corresponding entries.
30705         (dump_regclass, record_operand_costs, scan_one_insn,
30706         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
30707         record_address_regs, auto_inc_dec_reg_p): Remove.
30708         (gt-regclass.h): Rename to gt-reginfo.h.
30709
30710         * rtl.h (dump_global_regs, retry_global_alloc,
30711         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
30712
30713         * Makefile.in (RA_H): Remove.
30714         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
30715         Rename regclass.o to reginfo.o.
30716         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
30717         gt-reginfo.h.
30718         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
30719         (GTFILES): Rename regclass.c to reginfo.c.
30720
30721         * passes.c (init_optimization_passes): Remove pass_local_alloc and
30722         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
30723
30724         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
30725         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
30726         Remove flag_ira.
30727         (finish_spills): Ditto.  Remove code for !flag_ira.
30728
30729 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
30730
30731         PR middle-end/35854
30732         * doc/invoke.texi (rtl debug options): Complete rewrite.
30733         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
30734         to auto_inc_dec".
30735         * mode-switching.c (pass_mode_switching): Rename pass from
30736         "mode-sw" to "mode_sw".
30737         * except.c (pass_convert_to_eh_ranges): Rename pass from
30738         "eh-ranges" to "eh_ranges".
30739         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
30740         to "subreg1".
30741
30742
30743 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
30744             Alexander Monakov  <amonakov@ispras.ru>
30745
30746         PR middle-end/38857
30747         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
30748         register.
30749         (move_exprs_to_boundary): Change return type and pass through
30750         should_move from move_op.  Relax assert.  Update usage ...
30751         (schedule_expr_on_boundary): ... here.  Use should_move instead of
30752         cant_move.
30753         (move_op_orig_expr_found): Indicate that insn was disconnected from
30754         stream.
30755         (code_motion_process_successors): Do not call after_merge_succs
30756         callback if original expression was not found when traversing any of
30757         the branches.
30758         (code_motion_path_driver): Change return type.  Update prototype.
30759         (move_op): Update comment.  Add a new parameter (should_move).  Update
30760         prototype.  Set *should_move based on indication provided by
30761         move_op_orig_expr_found.
30762
30763 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
30764
30765         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
30766         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
30767         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
30768         * config/rs6000/rs6000.c (rs6000_override_options): Default
30769         avoid-indexed-addresses on for Power6, off for everything else.
30770         (avoiding_indexed_address_p): New function.
30771         (rs6000_legitimize_address): Use it.
30772         (rs6000_legitimate_address): Likewise.
30773         * config/rs6000/rs6000.md (movXX_updateX): Likewise
30774
30775 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
30776
30777         PR tree-optimization/38997
30778         * tree-loop-distribution.c (generate_memset_zero): Use
30779         POINTER_PLUS_EXPR for a pointer addition.
30780
30781 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
30782
30783         * config/s390/s390.md (bswap<mode>2): New pattern added.
30784
30785 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30786
30787         * config/s390/s390.md (*tls_load_31): Added type attribute.
30788
30789 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30790
30791         * config/s390/s390.md: Fix a few comments.
30792
30793 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
30794
30795         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
30796         (*tm<mode>_full): Fixed z10prop attribute.
30797         (*tst<mode>_extimm): Fixed z10prop attribute.
30798         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
30799         (*tstqiCCT_cconly): Fixed z10prop attribute.
30800         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
30801         (*movsi_larl): Fixed z10prop attribute.
30802         (*movsi_zarch): Fixed z10prop attribute.
30803         (*movsi_eas): Fixed z10prop attribute.
30804         (*movhi): Fixed z10prop attribute.
30805         (*movqi): Fixed z10prop attribute.
30806         (*movstrictqi): Fixed z10prop attribute.
30807         (*mov<mode>): Fixed z10prop attribute.
30808         (*movcc): Fixed z10prop attribute.
30809         (*sethighpartdi_64): Fixed z10prop attribute.
30810         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
30811         (*negdi2_sign_cc): Fixed z10prop attribute.
30812         (*negdi2_sign): Fixed z10prop attribute.
30813         (*absdi2_sign_cc): Fixed z10prop attribute.
30814         (*absdi2_sign): Fixed z10prop attribute.
30815         (*negabsdi2_sign_cc): Fixed z10prop attribute.
30816         (*negabsdi2_sign): Fixed z10prop attribute.
30817         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
30818         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
30819         (doloop_si64): Fixed z10prop attribute.
30820         (doloop_si31): Fixed z10prop attribute.
30821         (doloop_long): Fixed z10prop attribute.
30822         (indirect_jump): Fixed z10prop attribute.
30823         (nop): Fixed z10prop attribute.
30824         (main_base_64): Fixed z10prop attribute.
30825         (reload_base_64): Fixed z10prop attribute.
30826
30827 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30828
30829         PR rtl-optimization/38740
30830         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
30831         if !optimize.
30832         * config/mips/mips.c (mips_reorg): Likewise.
30833
30834 2009-01-28  Richard Guenther  <rguenther@suse.de>
30835
30836         PR tree-optimization/38926
30837         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
30838         with the correct value id to a value.
30839         (do_regular_insertion): Use the value number of edoubleprime
30840         for the value number of the expr.
30841
30842         Revert
30843         2008-08-21  Richard Guenther  <rguenther@suse.de>
30844
30845         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
30846         a PHI ask VN if it is already available.
30847         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
30848         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
30849
30850 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
30851
30852         PR middle-end/38934
30853         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
30854         set to varying whenever max has TREE_OVERFLOW set, similarly
30855         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
30856
30857 2009-01-28  Richard Guenther  <rguenther@suse.de>
30858
30859         PR middle-end/38908
30860         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
30861         uninitialized aggregate uses in call arguments.
30862
30863 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
30864
30865         PR tree-optimization/38984
30866         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
30867         the nothing_id variable if -fno-delete-null-pointer-checks.
30868
30869 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
30870
30871         PR target/38988
30872         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
30873         (set_got_offset_rex64): Ditto.
30874
30875 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
30876
30877         PR target/38941
30878         * doc/extend.texi: Improve local variable with asm reg.
30879
30880 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
30881
30882         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
30883         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
30884         was not supplied then set warn_packed_bitfield_compat to the
30885         default value of 1.
30886         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
30887         against 1.
30888
30889 2009-01-27  Richard Guenther  <rguenther@suse.de>
30890
30891         PR tree-optimization/38503
30892         * cfgexpand.c (expand_gimple_basic_block): Ignore
30893         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
30894         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
30895         variables that cannot have TBAA applied.
30896         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
30897         statements.
30898
30899 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
30900
30901         PR middle-end/38969
30902         * calls.c (initialize_argument_information): Do not wrap complex
30903         arguments in SAVE_EXPR.
30904
30905 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
30906
30907         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
30908         (INSTALL_LIBGCC): Revert typo commit.
30909
30910 2009-01-26  Richard Guenther  <rguenther@suse.de>
30911
30912         PR tree-optimization/38745
30913         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
30914         from special handling.
30915
30916 2009-01-26  Richard Guenther  <rguenther@suse.de>
30917
30918         PR tree-optimization/38745
30919         * tree-ssa.c (execute_update_addresses_taken): Do not include
30920         variables that cannot possibly be a register in not_reg_needs.
30921         Do not clear TREE_ADDRESSABLE on vars that may not become
30922         registers.
30923         * tree-ssa.c (update_alias_info_1): Include those in the set
30924         of addressable vars.
30925
30926 2009-01-26  Richard Guenther  <rguenther@suse.de>
30927
30928         PR middle-end/38851
30929         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
30930         * tree-ssa-dse.c: Include langhooks.h
30931         (execute_simple_dse): Remove stores with zero size.
30932
30933 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
30934
30935         PR c/38957
30936         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
30937         as PLUS_EXPR.
30938
30939 2009-01-24  Julian Brown  <julian@codesourcery.com>
30940
30941         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
30942         config/arm/linux-atomic.c.
30943         * config/arm/linux-atomic.c: New.
30944
30945 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
30946
30947         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
30948         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
30949         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
30950
30951 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
30952
30953         PR c/38938
30954         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
30955         properly.
30956
30957 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
30958
30959         PR tree-optimization/38953
30960         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
30961         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
30962         (gloog): Split the exit of the scop when the scop exit is a loop exit.
30963         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
30964         changed the CFG.
30965
30966 2009-01-24  Paul Brook  <paul@codesourcery.com>
30967
30968         * config/arm/neon.md (neon_type): Move to arm.md.
30969         (neon_mov<VSTRUCT>): Add neon_type attribute.
30970         * config/arm/arm.md (neon_type): Move to here.
30971         (conds): Add "unconditioal" and use as default for NEON insns.
30972
30973 2009-01-24  Ben Elliston  <bje@au.ibm.com>
30974
30975         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
30976         void *' warning from -Wc++-compat.
30977         * Makefile.in (dominance.o-warn): Remove.
30978
30979 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
30980
30981         PR tree-optimization/38932
30982         * fold-const.c (fold_unary_ignore_overflow): New.
30983         * tree.h (fold_unary_ignore_overflow): Declare.
30984         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
30985         * tree-ssa-sccvn.c (visit_reference_op_load,
30986         simplify_unary_expression): Likewise.
30987
30988 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
30989
30990         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
30991         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
30992         regardless of their type.
30993         * c-common.c (handle_packed_attribute): Don't ignore packed on
30994         bitfields.
30995         * c.opt (Wpacked-bitfield-compat): New warning option.
30996         * stor-layout.c (place_field): Warn if offset of a field changed.
30997         * doc/extend.texi (packed): Mention the ABI change.
30998         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
30999         (Warning Options): Add it to the list.
31000
31001 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
31002
31003         * c-opts.c (c_common_post_options): Fix a typo in comments.
31004
31005 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
31006
31007         PR middle-end/38615
31008         * gimplify.c (gimplify_init_constructor): Fix promotion of const
31009         variables to static.
31010         * doc/invoke.texi (-fmerge-all-constants): Update description.
31011
31012 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
31013
31014         PR target/38931
31015         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
31016         (*movdi_1_rex64): Use type "mmx" for alternative 5.
31017
31018 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
31019
31020         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
31021         a word boundary.
31022         (LOCAL_ALIGNMENT): Similarly.
31023
31024 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31025             Joseph Myers  <joseph@codesourcery.com>
31026
31027         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
31028         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
31029         * config/arm/arm-tune.md: Regenerate.
31030         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
31031         -march=iwmmxt2.
31032
31033 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31034
31035         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
31036         version number to five.
31037
31038 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
31039
31040         PR c++/38930
31041         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
31042         * c-common.c (set_underlying_type): Likewise.
31043         (is_typedef_decl ): Likewise
31044         * tree.h: Likewise
31045         (set_underlying_type): Likewise.
31046         (is_typedef_type): Likewise.
31047
31048 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
31049
31050         PR middle-end/38587
31051         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
31052         crossing setjmps.
31053
31054 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
31055
31056         PR bootstrap/37660
31057         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
31058         (LIBGCC_SPEC):  Don't define.
31059         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
31060
31061 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
31062
31063         PR rtl-optimization/38879
31064         * alias.c (base_alias_check): Unaligned access via AND address can
31065         alias all surrounding object types except those with sizes equal
31066         or wider than the size of unaligned access.
31067
31068 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
31069
31070         PR c++/26693
31071         * c-decl.c (clone_underlying_type): Move this ...
31072         * c-common.c (set_underlying_type): ... here.
31073         Also, make sure the function properly sets TYPE_STUB_DECL() on
31074         the newly created typedef variant type.
31075         (is_typedef_decl ): New entry point.
31076         * tree.h: Added a new member member_types_needing_access_check to
31077         struct tree_decl_non_common.
31078         (set_underlying_type): New entry point.
31079         (is_typedef_type): Likewise.
31080
31081 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
31082
31083         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
31084         Check whether two instructions have memory references that
31085         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
31086         are helper functions for traversing.
31087         * alias.h (insn_alias_sets_confilict_p): New prototypes.
31088         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
31089         not to draw dependency edge for instructions with non-conflicting
31090         alias sets.
31091
31092 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
31093
31094         PR other/38758
31095         * longlong.h: Update copyright years.  Use soft-fp license notice.
31096         Sync __clz_tab declaration with glibc.
31097
31098 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
31099
31100         PR target/30687
31101         * doc/extend.texi (syscall_linkage): New.
31102         (version_id): Modify.
31103
31104 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31105             Richard Guenther  <rguenther@suse.de>
31106
31107         PR tree-optimization/38747
31108         PR tree-optimization/38748
31109         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
31110         conversion if the base address is an indirect reference and the
31111         aliasing sets could cause issues.
31112
31113 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31114
31115         * common.opt (fgraphite, fgraphite-identity): Add comment for
31116         explaining why these options are not documented.
31117
31118 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31119
31120         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
31121         gimple_call_lhs is NULL.
31122
31123 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
31124
31125         PR target/38868
31126         * emit-rtl.c (adjust_address_1): Make sure memref is never
31127         overwritten.
31128
31129 2009-01-20  Ben Elliston  <bje@au.ibm.com>
31130
31131         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31132         const qualifier from arg parameter. Remove unnecessary cast to char *.
31133         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31134         const qualifier from arg 2.
31135
31136 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
31137
31138         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
31139
31140 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
31141
31142         PR c/38869
31143         * rtl.h (reinit_regs): New prototype.
31144         * regclass.c: Include ira.h.
31145         (reinit_regs): New.
31146         * Makefile.in (regclass.o): Add ira.h.
31147         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
31148
31149 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
31150
31151         PR target/38736
31152         * c-common.c (handle_aligned_attribute): Use
31153         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
31154         default alignment value.
31155
31156         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
31157
31158         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
31159         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
31160
31161         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
31162         __BIGGEST_ALIGNMENT__.
31163
31164         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
31165
31166 2009-01-18  Richard Guenther  <rguenther@suse.de>
31167
31168         PR tree-optimization/38819
31169         * tree-flow.h (operation_could_trap_helper_p): Declare.
31170         * tree-eh.c (operation_could_trap_helper_p): Export.
31171         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
31172         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
31173         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
31174         are about to insert a possibly trapping instruction and fail
31175         in this case.
31176
31177 2009-01-18  Andreas Schwab  <schwab@suse.de>
31178
31179         * doc/install.texi (Configuration): Remove obsolete paragraph
31180         about use of --with-gnu-ld with --with-gnu-as.
31181
31182 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
31183
31184         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31185         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31186         Follow spelling conventions.
31187
31188 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31189
31190         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31191         C++ warning about implicit conversion from void * to struct
31192         bitmap_head_def *.
31193         (bitmap_obstack_free): Likewise for bitmap_element *.
31194         * Makefile.in (bitmap.o-warn): Remove.
31195
31196 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31197
31198         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31199
31200 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31201             Tobias Grosser  <tobi.grosser@amd.com>
31202
31203         * graphite.c (graphite_trans_scop_block): Do not block single
31204         nested loops.
31205
31206 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31207
31208         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31209         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31210         test with assertion.
31211
31212 2009-01-16  Richard Guenther  <rguenther@suse.de>
31213
31214         PR tree-optimization/38835
31215         PR middle-end/36227
31216         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31217         and INT + PTR -> (INT)(PTR p+ INT) folding.
31218         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31219
31220 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31221
31222         PR target/38554
31223         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31224         the subreg from a lowpart subreg if it is also casting the value.
31225
31226 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31227             Tobias Grosser  <tobi.grosser@amd.com>
31228
31229         * graphite.c (compare_prefix_loops): New.
31230         (build_scop_canonical_schedules): Rewritten.
31231         (graphite_transform_loops): Move build_scop_canonical_schedules
31232         after build_scop_iteration_domain.
31233
31234 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31235             Tobias Grosser  <tobi.grosser@amd.com>
31236
31237         * graphite.c (add_conditions_to_domain): Add the loops to
31238         the dimension of the iteration domain.  Do copy the domain
31239         only when it exists.
31240         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31241         (add_conditions_to_constraints): New.
31242         (can_generate_code_stmt, can_generate_code): Removed.
31243         (gloog): Do not call can_generate_code.
31244         (graphite_transform_loops): Call add_conditions_to_constraints
31245         after building the iteration domain.
31246
31247 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31248
31249         PR tree-optimization/38789
31250         * tree-ssa-threadedge.c
31251         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31252         __builtin_constant_p.
31253
31254 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31255
31256         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31257         examined before deleting them.
31258
31259 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31260
31261         * function.c (aggregate_value_p): Correctly extract the function
31262         type from CALL_EXPR_FN lookup.
31263
31264 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31265
31266         * config/picochip/picochip.c (picochip_override_options): Revert
31267         CFI asm flag disable commited previously.
31268
31269 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31270             Tobias Grosser  <tobi.grosser@amd.com>
31271             Jan Sjodin  <jan.sjodin@amd.com>
31272
31273         * graphite.c (scan_tree_for_params): On substractions negate
31274         all the coefficients of the term.
31275         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31276         of more than two operands.
31277         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31278         (get_vdef_before_scop): Handle also the case of default definitions.
31279
31280 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31281
31282         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31283         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31284         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31285
31286 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31287             Joey Ye  <joey.ye@intel.com>
31288
31289         PR middle-end/37843
31290         * cfgexpand.c (expand_stack_alignment): Don't update stack
31291         boundary nor check incoming stack boundary here.
31292         (gimple_expand_cfg): Update stack boundary and check incoming
31293         stack boundary here.
31294
31295 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31296
31297         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31298
31299 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31300
31301         PR rtl-optimization/38245
31302         * calls.c (expand_call): Add stack arguments to
31303         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31304         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31305         in regs and partially in memory or BLKmode arguments.
31306         (emit_library_call_value_1): Add stack arguments to
31307         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31308         ACCUMULATE_OUTGOING_ARGS).
31309         * dce.c: Include tm_p.h.
31310         (find_call_stack_args): New function.
31311         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31312         argument.
31313         (mark_insn): Call find_call_stack_args for CALL_Ps.
31314         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31315         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31316         down to deletable_insn_p, don't mark stores set in arg_stores
31317         bitmap, clear the bitmap at the beginning of each bb.
31318         * Makefile.in (dce.o): Depend on $(TM_P_H).
31319
31320 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31321
31322         PR target/22599
31323         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31324         to make sure the insn is a conditional test (bug 22599).  Reformat a
31325         few long lines.
31326
31327 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31328
31329         PR middle-end/38431
31330         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31331         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31332         (gloog): Do not call cleanup_tree_cfg.
31333         (graphite_transform_loops): Call cleanup_tree_cfg after all
31334         scops have been code generated.
31335
31336 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31337         * doc/gty.texi (Invoking the garbage collector): Added new node
31338         and section documenting ggc_collect.
31339
31340 2009-01-14  Richard Guenther  <rguenther@suse.de>
31341
31342         PR tree-optimization/38826
31343         PR middle-end/38477
31344         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31345         initialization notes only if we actually emitted a warning.
31346         (intra_create_variable_infos): Add constraints for a result decl
31347         that is passed by hidden reference.
31348         (build_pred_graph): Mark all related variables non-direct on
31349         address-taking.
31350
31351 2009-01-14  Nick Clifton  <nickc@redhat.com>
31352
31353         * ira-conflicts.c: Include addresses.h for the definition of
31354         base_reg_class.
31355         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31356         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31357
31358 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31359
31360         PR target/38811
31361         * Makefile.in (ira-lives.o): Add except.h.
31362
31363         * ira-lives.c: Include except.h.
31364         (process_bb_node_lives): Process can_throw_internal.
31365
31366 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31367
31368         PR rtl-optimization/38774
31369         * combine.c (simplify_set): When undoing cc_use change, don't do
31370         PUT_CODE on the newly created comparison, but instead put back the
31371         old comparison.
31372
31373 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31374
31375         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31376         values.  Remove duplicate arm8 entry.
31377
31378 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31379
31380         PR tree-optimization/38786
31381         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31382         the SSA_NAME case of expand_scalar_variables_expr.
31383         Set the type of an expression to the type of its assign statement.
31384         (expand_scalar_variables_expr): Also gather the scalar computation
31385         used to index the memory access.  Do not pass loop_p.
31386         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31387         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31388         the gimple_stmt_iterator where it inserts new code.
31389         Do not pass loop_p.
31390         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31391         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31392
31393 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31394
31395         * graphite.h (debug_value): Removed.
31396         * graphite.c (debug_value): Removed.
31397
31398 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31399
31400         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31401         ldrd/strd with two 32-bit instructions.
31402
31403 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31404
31405         * config/arm/arm.c (struct processors): Pass for speed down into
31406         cost helper functions.
31407         (const_ok_for_op): Handle COMPARE and inequality nodes.
31408         (arm_rtx_costs_1): Rewrite.
31409         (arm_size_rtx_costs): Update prototype.
31410         (arm_rtx_costs): Pass speed down to helper functions.
31411         (arm_slowmul_rtx_costs): Rework cost calculations.
31412         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31413         (arm_9e_rtx_costs): Likewise.
31414
31415 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31416
31417         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31418         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31419         (alpha_legitimize_address): Do not split local symbols wider than
31420         UNITS_PER_WORD into HIGH/LO_SUM parts.
31421
31422 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31423
31424         PR bootstrap/38580
31425         * gcc.c (process_command): Replace call to execvp with calls
31426         to pex_one and exit.
31427
31428 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31429
31430         PR target/29141
31431         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31432         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31433         variant for devices with 3-byte PC.
31434         (__tablejump_elpm__): New.
31435
31436 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31437
31438         PR c/32041
31439         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31440         offsetof member-designator, handle it as `[0].'.
31441
31442 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31443
31444         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31445         function when not using named sections on targets with named sections
31446         if branch distance is less than 262132.
31447
31448 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31449
31450         * combine.c (combine_instructions):  Recompute
31451         optimize_this_for_speed_p  for each BB in the main combine loop.
31452
31453 2009-01-12  Tomas Bily  <tbily@suse.cz>
31454
31455         PR middlend/38385
31456         * tree-loop-distribution.c (prop_phis): New function.
31457         (generate_builtin): Call prop_phis.
31458
31459 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31460
31461         PR tree-optimization/38807
31462         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31463         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31464
31465 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31466
31467         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31468         subreg of op0 to the original op0.
31469
31470 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31471
31472         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31473
31474 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31475
31476         PR debug/7055
31477         * mips-tfile.c (parse_def): Fix parsing of def strings
31478         starting with digits.
31479
31480 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31481
31482         PR target/38695
31483         * config/arm/arm.c (arm_is_long_call_p): Don't call
31484         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31485
31486 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31487
31488         * regrename.c (regrename_optimize): Fix dumping.
31489         (find_oldest_value_reg): Preserve REG_POINTER.
31490         (copy_hardreg_forward_1): Likewise.
31491
31492 2009-01-09  Diego Novillo  <dnovillo@google.com>
31493
31494         * gimple.h (struct gimple_statement_base) <uid>: Document
31495         the restrictions on its use.
31496         (gimple_uid): Tidy.
31497         (gimple_set_uid): Tidy.
31498
31499 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31500
31501         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31502         zero guard even if align_bytes != 0 and count is smaller than
31503         size_needed.
31504
31505 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31506
31507         PR rtl-optimization/38495
31508         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31509         (add_range_and_copies_from_move_list): Print all added ranges.
31510         Add ranges to memory optimized destination.
31511
31512 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31513
31514         PR target/38686
31515         PR target/38708
31516         * config/i386/i386.c (override_options): Reject
31517         -mstringop-strategy=rep_8byte with -m32.
31518         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31519         to 1.  Do count comparison against epilogue_size_needed at compile
31520         time even when count_exp was constant forced into register.  For
31521         size_needed don't jump to epilogue, instead just avoid aligning
31522         and invoke the body algorithm.  If need_zero_guard, add zero guard
31523         even if count is non-zero, but smaller than size_needed + number of
31524         bytes that could be stored for alignment.
31525         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31526         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31527         but smaller than size_needed + number of bytes that could be stored
31528         for alignment.  Compare size_needed with epilogue_size_needed instead
31529         of desired_align - align, don't adjust size_needed, pass
31530         epilogue_size_needed to the epilogue expanders.
31531
31532         PR c/35742
31533         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31534
31535 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31536
31537         * pa.c (last_address): Change to unsigned.
31538         (update_total_code_bytes): Change argument to unsigned.  Don't
31539         check if insn addresses are set.
31540         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31541         addresses are not set.
31542         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31543
31544 2009-01-09  Nick Clifton  <nickc@redhat.com>
31545
31546         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31547         DECL_DECLARED_INLINE_P.
31548
31549 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31550
31551         PR middle-end/38347
31552         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31553         GET_MODE (op0) in operand_subword_force calls.
31554
31555         PR middle-end/38771
31556         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31557         fold_convert arg0 operands to TREE_TYPE (op0) first.
31558
31559 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31560
31561         * params.def (ira-max-conflict-table-size): Decrease default value
31562         to 1000.
31563
31564 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31565
31566         PR tree-optimization/37031
31567         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31568         on parameter_set.
31569         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31570         allocate it using gc instead of heap, use VEC_quick_push instead of
31571         VEC_safe_push.
31572         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31573         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31574         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31575         allocated vector from heap allocated.
31576         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31577         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31578         vector only after perfect_loop_nest_depth call.
31579
31580 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31581             Jan Sjodin  <jan.sjodin@amd.com>
31582
31583         PR tree-optimization/38559
31584         * graphite.c (debug_value, copy_constraint,
31585         swap_constraint_variables, scale_constraint_variable, ): New.
31586         (get_lower_bound, get_upper_bound): Removed.
31587         (graphite_trans_bb_strip_mine): Clean up this code that works
31588         only for constant number of iterations.  Fully copy upper and
31589         lower bound constraints, not only the constant part of them.
31590         * graphite.h (debug_value): Declared.
31591
31592 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31593
31594         PR tree-optimization/37194
31595         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31596         Don't add the cost of cost model guard in prologue to scalar
31597         outside cost in case of known number of iterations.
31598
31599 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31600             Alan Modra  <amodra@bigpond.net.au>
31601
31602         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31603         non-word-aligned REG+CONST addressing.
31604
31605 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31606
31607         PR target/38706
31608         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31609         free_after_compilation when outputting a thunk.
31610         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31611         Do not call free_after_compilation here.
31612
31613 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31614
31615         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
31616         (ix86_valid_target_attribute_inner_p): Ditto.
31617
31618 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
31619
31620         PR tree-optimization/38492
31621         PR tree-optimization/38498
31622         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
31623         * tree-chrec.h (scev_is_linear_expression): Declared.
31624         * graphite.c (graphite_cannot_represent_loop_niter): New.
31625         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
31626         (graphite_loop_normal_form): Use gcc_assert.
31627         (scan_tree_for_params): Use CASE_CONVERT.
31628         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
31629         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
31630         Use gcc_assert.  Discard scops that contain unhandled cases.
31631         (build_scop_conditions): Return a boolean status for unhandled cases.
31632         (strip_mine_profitable_p): Print the loop number, not its depth.
31633         (is_interchange_valid): Pass the depth of the loop nest, don't
31634         recompute it wrongly.
31635         (graphite_trans_bb_block): Same.
31636         (graphite_trans_bb_block): Print tentative of loop blocking.
31637         (graphite_trans_scop_block): Do not print that the loop has been
31638         blocked.
31639         (graphite_transform_loops): Do not handle scops that contain condition
31640         scalar phi nodes.
31641
31642 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
31643
31644         AVX Programming Reference (December, 2008)
31645         * config/i386/avxintrin.h (_mm256_stream_si256): New.
31646         (_mm256_stream_pd): Likewise.
31647         (_mm256_stream_ps): Likewise.
31648
31649         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
31650         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
31651         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
31652         (bdesc_special_args): Add __builtin_ia32_movntdq256,
31653         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
31654         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
31655         (ix86_expand_special_args_builtin): Likewise.
31656
31657         * config/i386/sse.md (AVXMODEDI): New.
31658         (avx_movnt<mode>): Likewise.
31659         (avx_movnt<mode>): Likewise.
31660         (<sse>_movnt<mode>): Remove AVX support.
31661         (sse2_movntv2di): Likewise.
31662
31663 2009-01-07  Richard Guenther  <rguenther@suse.de>
31664
31665         PR middle-end/38751
31666         * fold-const.c (extract_muldiv): Remove obsolete comment.
31667         (fold_plusminus_mult_expr): Undo MINUS_EXPR
31668         to PLUS_EXPR canonicalization for the canonicalization.
31669
31670 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
31671
31672         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
31673         hosted cross-compilers generating less efficient code.
31674
31675 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31676
31677         * function.h (rtl_data): Add a dbr_scheduled_p field.
31678         * reorg.c (dbr_schedule): Set it.
31679         (gate_handle_delay_slots): Check it.
31680         * config/mips/mips.c (mips_base_delayed_branch): Delete.
31681         (mips_reorg): Check flag_delayed_branch instead of
31682         mips_base_delayed_branch.
31683         (mips_override_options): Don't set mips_base_delayed_branch
31684         or flag_delayed_branch.
31685
31686 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
31687
31688         PR rtl-optimization/38426.
31689         * ira.c (ira): Set current_function_is_leaf earlier.
31690
31691 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
31692
31693         PR rtl-optimization/38722
31694         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
31695         too early, only set a flag and modify after last possible
31696         undo_all point.
31697
31698 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
31699
31700         PR c/34252
31701         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
31702         * real.c (decimal_single_format): Correct values of emin and emax.
31703         (decimal_double_format): Ditto.
31704         (decimal_quad_format): Ditto.
31705         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
31706         computation of DECnn_MIN and DECnn_MAX for corrected values of
31707         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
31708         __DECnn_MIN__, and adjust its computation for the corrected value
31709         of emin.
31710
31711 2009-01-06  Jan Hubicka  <jh@suse.cz>
31712
31713         PR target/38744
31714         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
31715
31716 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
31717
31718         * doc/contrib.texi (Contributors): Slightly adjust the end note.
31719         Add Robert Clark to the list of testers.
31720
31721 2009-01-06  Jan Hubicka  <jh@suse.cz>
31722             Kai Tietz  <kai.tietz@onevision.com>
31723
31724         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
31725         * config/i386/i386.c (ix86_expand_call): Add clobbers.
31726
31727 2009-01-06  Jan Hubicka  <jh@suse.cz>
31728             Kai Tietz  <kai.tietz@onevision.com>
31729
31730         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
31731         for w64 ABI.
31732         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
31733         (ix86_nsaved_regs): Count only general purpose regs.
31734         (ix86_nsaved_sseregs): New.
31735         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
31736         to 16 for w64; compute padding and size of sse reg save area.
31737         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
31738         general purpose regs.
31739         (ix86_emit_save_sse_regs_using_mov): New.
31740         (ix86_expand_prologue): Save SSE regs if needed.
31741         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
31742         (ix86_emit_restore_sse_regs_using_mov): New.
31743         (ix86_expand_epilogue): Save SSE regs if needed.
31744
31745 2009-01-06  Jan Hubicka  <jh@suse.cz>
31746             Kai Tietz  <kai.tietz@onevision.com>
31747
31748         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
31749         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
31750         functions when accumulate outgoing args is off.
31751
31752 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31753
31754         PR bootstrap/38742
31755         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
31756         before using pseudos_have_intersected_live_ranges_p.
31757
31758         * ira-int.h (ira_assert): Always define.
31759
31760 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
31761
31762         AVX Programming Reference (December, 2008)
31763         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
31764         (_mm256_permute2_pd): Likewise.
31765         (_mm_permute2_ps): Likewise.
31766         (_mm256_permute2_ps): Likewise.
31767         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
31768         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
31769
31770         * config/i386/i386.c (ix86_builtins): Remove
31771         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
31772         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
31773         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
31774         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
31775         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
31776         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
31777         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
31778         __builtin_ia32_vpermil2ps256.
31779         (ix86_init_mmx_sse_builtins): Updated.
31780         (ix86_expand_args_builtin): Likewise.
31781
31782 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31783
31784         * pa.c (output_call): Relocate non-jump insns in the delay slot of
31785         long absolute calls when generating PA 2.0 code.
31786
31787 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
31788
31789         PR rtl-optimization/38583
31790         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
31791
31792         * params.def (ira-max-conflict-table-size): New.
31793
31794         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
31795
31796         * ira.h (ira_conflicts_p): New external definition.
31797
31798         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
31799         table.  Report this.  Return result of building.
31800         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
31801         building conflict table.
31802
31803         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
31804         (ira_color): Use ira_conflicts_p.
31805
31806         * global.c: Include ira.h.
31807         (pseudo_for_reload_consideration_p, build_insn_chain): Use
31808         ira_conflicts_p.
31809
31810         * Makefile.in (global.o): Add ira.h.
31811
31812         * ira-build.c (mark_all_loops_for_removal,
31813         propagate_some_info_from_allocno): New.
31814         (remove_unnecessary_allocnos): Call
31815         propagate_some_info_from_allocno.
31816         (remove_low_level_allocnos): New.
31817         (remove_unnecessary_regions): Add parameter.  Call
31818         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
31819         parameter to remove_unnecessary_regions.
31820         (ira_build): Remove all regions but root if the conflict table was
31821         not built.  Update conflict hard regs for allocnos crossing calls.
31822
31823         * ira.c (ira_conflicts_p): New global.
31824         (ira): Define and use ira_conflicts_p.
31825
31826         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31827         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
31828         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
31829
31830 2009-01-06  Ben Elliston  <bje@au.ibm.com>
31831
31832         * gengtype-lex.l (YY_NO_INPUT): Define.
31833
31834 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31835
31836         PR c/34911
31837         * c-common.c (handle_vector_size_attribute): Also reject
31838         BOOLEAN_TYPE types.
31839
31840 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
31841
31842         PR tree-optimization/38492
31843         * graphite.c (rename_map_elt, debug_rename_elt,
31844         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
31845         rename_map_elt_info, eq_rename_map_elts,
31846         get_new_name_from_old_name, bb_in_sese_p): Moved around.
31847         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
31848         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
31849         (sese_build_livein_liveouts): New.
31850         (new_sese, free_sese): New.
31851         (new_scop): Call new_sese.
31852         (free_scop): Call free_sese.
31853         (rename_variables_from_edge, rename_phis_end_scop): Removed.
31854         (register_old_new_names): Renamed register_old_and_new_names.
31855         (register_scop_liveout_renames, add_loop_exit_phis,
31856         insert_loop_close_phis, struct igp,
31857         default_liveout_before_guard, add_guard_exit_phis,
31858         insert_guard_phis, copy_renames): New.
31859         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
31860         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
31861         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
31862         (scop_adjust_phis_for_liveouts): New.
31863         (gloog): Call scop_adjust_phis_for_liveouts.
31864
31865         * graphite.h (struct sese): Documented.  Added fields liveout,
31866         num_ver and livein.
31867         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
31868         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
31869         (struct scop): Added field liveout_renames.
31870         (SCOP_LIVEOUT_RENAMES): New.
31871
31872 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31873
31874         PR tree-optimization/38510
31875         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
31876         (translate_clast): Call recompute_all_dominators before
31877         graphite_verify.
31878         (gloog): Call recompute_all_dominators before graphite_verify.
31879
31880 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
31881             Jan Sjodin  <jan.sjodin@amd.com>
31882
31883         PR tree-optimization/38500
31884         * graphite.c (create_sese_edges): Call fix_loop_structure after
31885         splitting blocks.
31886
31887 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
31888
31889         * config.gcc: Add m32r*-*-rtems*.
31890         * config/m32r/rtems.h: New file.
31891
31892 2009-01-05  Ben Elliston  <bje@au.ibm.com>
31893
31894         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
31895         (.po.pox): Likewise.
31896         (po/gcc.pot): Likewise.
31897
31898 2009-01-04  David S. Miller  <davem@davemloft.net>
31899
31900         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
31901         (STARTING_FRAME_OFFSET): Always set to zero.
31902
31903 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31904
31905         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
31906         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
31907         fixed-point types, and vectors of the same.
31908
31909 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
31910
31911         * config/mips/sync.md (*mb_barrier): Rename to...
31912         (*memory_barrier): ...this.
31913
31914 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
31915
31916         * doc/extend.texi (Function Attributes): Move @cindex after @item
31917         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
31918         and put in alphabetical order. Fix 'target' name and put in order.
31919         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
31920         typos.
31921
31922 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
31923
31924         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
31925         (memory_barrier): Expand as unspec instead of unspec_volatile.
31926         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31927         (*memory_barrier): Define as unspec instead of unspec_volatile.
31928         Use (match_dup 0) as input operand.
31929
31930         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
31931         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
31932         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
31933         scratch register.  Remove operand 1.
31934         (*stbar): Define as unspec instead of unspec_volatile.
31935         Use (match_dup 0) as input operand, remove (const_int 8).
31936         (*membar): Define as unspec instead of unspec_volatile.
31937         Use (match_dup 0) as input operand, remove input operand 2.
31938
31939         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
31940         (memory_barrier): Expand as unspec instead of unspec_volatile.
31941         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31942         (*memory_barrier): Define as unspec instead of unspec_volatile.
31943         Use (match_dup 0) as input operand.
31944
31945         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
31946         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31947         Set volatile flag on operand 0.
31948         (*memory_barrier): New insn pattern.
31949
31950         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
31951         insn operands.
31952         (*memory_barrier): Use (match_dup 0) as input operand.
31953
31954         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
31955         Remove mem:BLK from insn operands.  Use Pmode scratch register.
31956         Set volatile flag on operand 0.
31957         (*mb_internal): New insn pattern.
31958
31959         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
31960
31961 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31962
31963         PR middle-end/38586
31964         * function.c (struct temp_slot): Move to the section of the file
31965         that deals with temp slots.  Remove field 'address'.
31966         (temp_slot_address_table): New hash table of address -> temp slot.
31967         (struct temp_slot_address_entry): New struct, items for the table.
31968         (temp_slot_address_compute_hash, temp_slot_address_hash,
31969         temp_slot_address_eq, insert_temp_slot_address): Support functions
31970         for the new table.
31971         (find_temp_slot_from_address): Rewrite to use the new hash table.
31972         (remove_unused_temp_slot_addresses): Remove addresses of temp
31973         slots that have been made available.
31974         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
31975         worker function for remove_unused_temp_slot_addresses.
31976         (assign_stack_temp_for_type): Don't clear the temp slot address list.
31977         Add the temp slot address to the address -> temp slot map.
31978         (update_temp_slot_address): Update via insert_temp_slot_address.
31979         (free_temp_slots): Call remove_unused_temp_slot_addresses.
31980         (pop_temp_slots): Likewise.
31981         (init_temp_slots): Allocate the address -> temp slot map, or empty
31982         the map if it is already allocated.
31983         (prepare_function_start): Initialize temp slot processing.
31984
31985 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
31986
31987         PR middle-end/38584
31988         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
31989         Calculate the size of all stack vars assuming no packing of stack
31990         vars will happen, replacing a quadratic algorithm with a linear one.
31991
31992 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
31993
31994         PR target/38707
31995         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
31996         can't be used.
31997
31998 2009-01-03  Diego Novillo  <dnovillo@google.com>
31999
32000         * doc/contrib.texi: Update contributions.
32001
32002 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32003
32004         PR c++/38705
32005         * builtins.c (fold_builtin_memory_op): Give up if either operand
32006         is volatile.  Set srctype or desttype to non-qualified version
32007         of the other type.
32008
32009         PR c/38700
32010         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
32011         and FUNCTION_DECLs.
32012
32013 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
32014
32015         PR rtl-optimization/35805
32016         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
32017         problem if fast dce is able to remove any instructions.
32018         * dce.c (dce_process_block): Fix dump message.
32019
32020 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
32021
32022         PR 33649
32023         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
32024
32025 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
32026
32027         PR middle-end/38690
32028         * tree-flow.h (op_code_prio, op_prio): New prototypes.
32029         * tree-pretty-print.c (op_code_prio): New function.
32030         (op_prio): No longer static.  Use op_code_prio.
32031         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
32032         Use op_prio and op_code_prio to determine if () should be
32033         printed around operand(s) or not.
32034
32035         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
32036         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
32037         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
32038         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
32039         pp_character instead of pp_string for single letter printing.
32040
32041 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
32042
32043         * doc/extend.texi: Fix '#pragma GCC option' typo.
32044
32045 2009-01-02  Richard Guenther  <rguenther@suse.de>
32046
32047         * doc/install.texi (--enable-checking): Mention different
32048         default for stage1.
32049         (--enable-stage1-checking): Document.
32050
32051 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
32052
32053         PR middle-end/30142
32054         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
32055         case to be an error.
32056
32057 2009-01-02  Ben Elliston  <bje@au.ibm.com>
32058
32059         * config/fp-bit.h (pack_d): Constify argument.
32060         * config/fp-bit.c (makenan): Constify return type. Remove casts.
32061         (isnan): Constify argument.
32062         (isinf): Likewise.
32063         (iszero): Likewise.
32064         (pack_d): Likewise.
32065         (_fpadd_parts): Constify return type.
32066         (_fpmul_parts): Likewise.
32067         (_fpdiv_parts): Likewise.
32068
32069 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
32070
32071         PR c/36489
32072         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
32073         warn about overwriting initializer with side-effects or
32074         -Woverride-init if !IMPLICIT.
32075         (output_init_element): Likewise.  Pass IMPLICIT down to
32076         add_pending_init.
32077         (process_init_element): Add IMPLICIT argument.  Pass it down
32078         to output_init_element.
32079         (push_init_element, pop_init_level, set_designator): Adjust
32080         process_init_element callers.
32081         (set_nonincremental_init, set_nonincremental_init_from_string):
32082         Adjust add_pending_init callers.
32083         (output_pending_init_elements): Adjust output_init_element callers.
32084         * c-tree.h (process_init_element): Adjust prototype.
32085         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
32086         process_init_element callers.
32087
32088 \f
32089 Copyright (C) 2009 Free Software Foundation, Inc.
32090
32091 Copying and distribution of this file, with or without modification,
32092 are permitted in any medium without royalty provided the copyright
32093 notice and this notice are preserved.